Skip to content

決済

決済モジュールでは、ゲーム内アイテムの購入決済および买断決済(バイアウト)に関連する機能を提供しています。
JOGOS_SDK 概要ページ内の該当エンジンセクションを読んだうえで、以下のように機能を利用してください。

javascript
window.JOGOS_SDK.payment;

アプリ内購入

ステップ1:商品IDを作成

  • デベロッパーダッシュボードの「Information / Purchase」ページで商品を作成します。
  • 同一ゲーム内で商品IDが重複しないよう注意してください。

ステップ2:注文を発行

  • プレイヤーがゲーム内アイテムを購入する際、商品購入ボタンから本APIを呼び出すことでJogos決済ウィンドウが開きます。
  • 商品IDを渡し、決済ウィンドウが正常に開かれると注文番号が返却されます。後続の処理でこの番号を使って注文情報を照会できます。
  • goodsIdはデベロッパーダッシュボードで作成した商品IDです。
javascript
// 成功時に注文番号を返す
let orderNo = await window.JOGOS_SDK.payment.buyGoods(goodsId: string);

ステップ3:ユーザー決済を待つ

クライアント側で注文決済完了通知を購読

注文〜決済完了まで時間がかかる場合があります。
本APIを通じて決済成功通知を購読しておくと、決済完了時にプラットフォームからコールバックが呼ばれ、注文が支払われたことを開発者に伝え、最新の注文情報が渡されます。

javascript
window.JOGOS_SDK.payment.subscribeOrderPaid(callbackFn: (order: PaymentOrder) => void);

ステップ4:発送し、プラットフォームに注文発送済みを通知

クライアント側で発送処理を行う(オフラインゲーム)

プレイヤーの決済成功を検知したら、クライアントが自動で報酬を付与し、本APIを呼んでプラットフォームに発送完了を通知します。

注意
  • ゲームに独自サーバーが存在しない場合、クライアントで決済を検知したら本APIを呼び、Jogosプラットフォームに対して当該ユーザーへの発送完了を通知することを推奨します。
  • APIの返却結果に基づき、ゲーム内で報酬を付与するか、エラーメッセージを表示してください。
  • 発送後はクラウドセーブ同期APIを呼び出し、プレイヤーデータを保存することを推奨します。
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);

「ゲームサーバー」経由で接続する場合:

サーバー側APIはページ サーバーサイド接続インターフェース を参照してください。


その他のインターフェース

決済改善の提案
  • クライアントで決済成功通知を購読(subscribeOrderPaid)しても、ネットワーク等の影響で100 %到達を保証できません。注文情報取得APIで最新の決済状況を確認することを推奨します。
  • オフラインゲームによってはセーブ削除機能を提供する場合、過去の決済報酬を再付与するかは開発者の裁量です。注文一覧取得APIで全注文を取得し、再付与できます。
  • 注文情報取得後は status フィールドで注文を処理してください。

注文情報

注文番号を基に詳細を取得。構造は以下の通り:

javascript
// 決済注文
export interface PaymentOrder {
  // ゲームID
  gameId: number;
  // ゲーム名
  gameName: string;
  // ユーザーID
  userId: number;
  // 注文番号
  orderNo: string;
  // 商品ID
  productId: string;
  // 商品名
  productName: string;
  // 通貨
  currency: string;
  // 国
  country: string;
  // 割引額
  discount: number;
  // Jogosコイン消費数
  calorcoin: number;
  // 支払い金額
  paid: number;
  // 決済チャネル
  channel: string;
  // 決済タイプ
  paymentType: string;
  // 決済番号
  paymentNo: string;
  // 発送済みか
  deliverGoods: boolean;
  // 注文ステータス pending: 未決済 fail: 失敗 cancel: キャンセル expire: 期限切れ success: 成功 refunding: 返金処理中 refunded: 返金完了 refund-fail: 返金失敗
  status: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded' | 'refund-fail';
  // 注文作成時刻
  createTime: String;
  // 返金番号
  refundNo: String;
  // 返金説明
  refundDescription: String;
  // 返金申請時刻
  refundTime: String;
  // 返金完了時刻
  refundedTime: String;
}

注文情報を取得

javascript
// 成功時に注文情報を返す
let order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo: string);

注文一覧を取得

ステータスを条件に注文一覧を取得。成功時は注文オブジェクトの配列が返却され、構造は詳細照合と同一です。

javascript
// 成功時に注文リストを返す
let orderList = await window.JOGOS_SDK.payment.getOrderList(
  status?: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded',
  pageNo?: number,  // ページ番号:デフォルト1
  pageSize?: number // 1ページ件数:デフォルト20
);
javascript
// 成功時に注文番号を返す
let orderNo = await window.JOGOS_SDK.payment.buyOut();
*重要な注意事項*

体験版・正式版いずれの場合も、必ず最初の起動シーンでSDKを初期化し、コールバック完了後にゲームロジックを実行してください。Jogosは初期化時にユーザーがゲームを購入済みかを検証し、未購入の場合はプレイを継続できません。
これは不正コピーを防ぐための有効な手段です。