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:ユーザー決済を待つ

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

プレイヤーが注文してから実際の支払い成功まで時間がかかる場合があります。開発者はこのインターフェースを使用して支払い成功メッセージを購読できます(初期化後の呼び出し)。プレイヤーの支払いが成功すると、プラットフォームはコールバックで開発者に注文が完了したことを通知し、最新の注文情報を返します

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
);

买断制ゲーム

  1. デベロッパーダッシュボードでゲームを「Game Pricing」(买断タイプ)に設定し、価格を設定します。
  2. 二つのビルドを作成します:体験版と正式版
  • 体験版:プレイヤーが触れないステージアセット、モデル、テクスチャ、楽曲等を削除し、試遊できる内容のみ残してパッケージ化・アップロードします。
  • 正式版:完全なゲームコンテンツが利用できるビルドです。
  1. 体験版内に購入ボタンを配置:
  • 例えば体験版で第 1 章最後のステージをクリアした後、「本編を購入」画面と購入ボタンを表示: alt text
  • ボタンはbuyOutインターフェースを呼び出し、Jogos 決済ウィンドウを開いて本編購入を促します。
  • プラットフォームの「ゲーム情報 - 購入ページ」で一括購入価格を迅速に更新し、ゲーム初期化時にリアルタイムで価格を取得できます。
  • 購入成功後、Jogos プラットフォームが自動的に正式版に切り替え、開発者は追加処理不要です。
  • 体験版・正式版は同一バージョン番号を維持してください。セーブデータは自動移行されます。
  • 決済成功後に注文番号が返却されるため、それで注文情報を照会できます。
javascript
// 成功時に注文番号を返す
let orderNo = await window.JOGOS_SDK.payment.buyOut();
*重要な注意事項*

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

```