セッションの完了済み金銭取引を送信する
k-IDセッションについて、完了済みの購入を1件以上送信します。各イベントは、何が購入され、いくらかかり、決済が成立したかを記録します。購入が完了した後にこのAPIを使用してください。継続課金の場合は更新ごとに送信します。 決済が試行されたものの成立しなかった場合は `status` に `failed` を指定してください。これにより保護者が両者を区別できます。 イベントはそれぞれ独立して処理されます。レスポンスにはイベントごとのステータスが含まれます。 * `accepted` - 購入が記録されました。すでに受理済みの `id` を持つイベントを再送しても安全な無操作となり、再び `accepted` として数えられ、二重に記録されることはありません。そのため、ネットワーク障害後の再試行で二重計上されることはありません。 * `rejected` - 購入が検証に失敗しました。`reason` がどのルールに違反したかを示します。 セッションが存在しない場合や無効化されている場合は、バッチ全体が拒否されます。
Authorization
api-key In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/transaction/push" \ -H "Content-Type: application/json" \ -d '{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "events": [ { "id": "9d4e2f81-7a3b-4c56-8e90-1f2a3b4c5d6e", "type": "purchase", "title": "Starter Pack", "description": "500 coins and a cosmetic item", "amount": 499, "currency": "USD", "timestamp": "2026-06-24T09:00:00Z", "status": "successful", "url": "https://your-webstore.example.com/manage?ref=order-4455667" } ] }'{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "accepted": 1, "rejected": 0, "events": [ { "id": "9d4e2f81-7a3b-4c56-8e90-1f2a3b4c5d6e", "status": "accepted" } ]}{ "error": "INVALID_INPUT", "errorMessage": "The request was missing a sessionId parameter."}レコード上の販売者の決済情報を標準形式に正規化する POST
レコード上の販売者(merchant of record)から受け取った生の決済ペイロードを、プロバイダーに依存しない標準的な形式に正規化します。これにより、後続のトランザクションAPIが各プロバイダーの形式を知る必要がなくなります。 `provider` にレコード上の販売者を指定し、`data` にその生のペイロードを渡します。Xsollaの場合、そのペイロードは `payment` Webhookのボディであり、カードのBINを含んでいる必要があります。
購入について保護者の承認を求める POST
1件の購入について、プレイヤーの信頼できる成人に承認を求めます。課金する前にこのAPIを呼び出し、承認が届いてから購入を完了してください。リクエストは `expiresAt` まで保留され、それを過ぎると承認も拒否もできなくなります。 結果は `Transaction.PurchaseApprovalResult` Webhookで届き、`approved`、`denied`、`expired` のいずれかを伴います。Webhookを無期限に待つのではなく、`expiresAt` を期限として扱ってください。 すでに判断待ちの `id` を再送しても安全な無操作となり、保留中のリクエストがそのまま返され、2つ目のリクエストは作成されません。そのため、ネットワーク障害後の再試行で二重に通知されることはありません。 1人のプレイヤーが判断待ちにできる購入は最大20件です。それを超えると、いずれかが解決するまで `INVALID_INPUT` で拒否されます。