Endpoints取引

セッションの完了済み金銭取引を送信する

k-IDセッションについて、完了済みの購入を1件以上送信します。各イベントは、何が購入され、いくらかかり、決済が成立したかを記録します。購入が完了した後にこのAPIを使用してください。継続課金の場合は更新ごとに送信します。 決済が試行されたものの成立しなかった場合は `status` に `failed` を指定してください。これにより保護者が両者を区別できます。 イベントはそれぞれ独立して処理されます。レスポンスにはイベントごとのステータスが含まれます。 * `accepted` - 購入が記録されました。すでに受理済みの `id` を持つイベントを再送しても安全な無操作となり、再び `accepted` として数えられ、二重に記録されることはありません。そのため、ネットワーク障害後の再試行で二重計上されることはありません。 * `rejected` - 購入が検証に失敗しました。`reason` がどのルールに違反したかを示します。 セッションが存在しない場合や無効化されている場合は、バッチ全体が拒否されます。

POST
/transaction/push
AuthorizationBearer <token>

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"    }  ]}

レコード上の販売者の決済情報を標準形式に正規化する 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` で拒否されます。