세션의 완료된 금전 거래 전송
k-ID 세션에 대해 완료된 구매를 하나 이상 전송합니다. 각 이벤트는 무엇을 구매했고 비용이 얼마였으며 결제가 성사되었는지를 기록합니다. 구매가 완료된 뒤에 이 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` 웹훅 본문이며, 카드 BIN이 반드시 포함되어야 합니다.
구매에 대한 보호자 승인 요청 POST
구매 한 건에 대해 플레이어의 신뢰할 수 있는 성인에게 승인을 요청합니다. 결제 전에 이 API를 호출하고, 승인이 도착한 뒤에만 구매를 완료하십시오. 요청은 `expiresAt`까지 보류되며, 그 이후에는 승인도 거부도 할 수 없습니다. 결과는 `approved`, `denied`, `expired` 중 하나를 담은 `Transaction.PurchaseApprovalResult` 웹훅으로 전달됩니다. 웹훅을 무기한 기다리지 말고 `expiresAt`을 기한으로 처리하십시오. 이미 결정을 기다리는 `id`를 다시 전송해도 안전한 무동작으로 처리되어, 보류 중인 요청이 그대로 반환되고 두 번째 요청은 생성되지 않습니다. 따라서 네트워크 장애 후 재시도로 두 번 알림이 가지 않습니다. 한 플레이어가 결정을 기다릴 수 있는 구매는 최대 20건입니다. 이를 초과하면 하나가 해결될 때까지 `INVALID_INPUT`으로 거부됩니다.