Register payment intent

Step 1: Registers a purchase intent with the game backend. The game backend is expected to reserve inventory for the purchase. IMPORTANT: Always expects HTTP 200 OK response with inline error codes in the body.

POST
/api/v1/purchase/register
x-stash-hmac-signature<token>

Versioned HMAC-SHA256 signature for server-to-server communication between game backends and Stash services. Recommended over the deprecated legacyHmac scheme for the best security. Header format: v1;{shopId};{unixMillisTimestamp};{base64Signature} (semicolon-delimited). {base64Signature} is the base64-encoded HMAC-SHA256 of the string {unixMillisTimestamp}.{requestBody} signed with your Egress API key, where {requestBody} is the compact request JSON. The timestamp must be within 5 minutes of Stash server time. Your shopId is your immutable shop identifier; it and your Egress API key are available in Stash Studio under Project Settings > API Secrets.

In: header

Request Body

application/json

Request to register a purchase intent with the game backend, at which point the game backend is expected to reserve the inventory for the purchase.

TypeScript Definitions

Use the request body type in TypeScript.

Request to register a purchase intent with the game backend, at which point the game backend is expected to reserve the inventory for the purchase.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/purchase/register" \  -H "Content-Type: application/json" \  -d '{    "playerId": "string",    "transactionId": "string",    "currency": "string",    "decimalPlaces": 0,    "registrations": [      {        "guid": "string",        "productId": "string",        "cents": 0,        "quantity": 0      }    ]  }'
{  "statuses": [    {      "guid": "string",      "productId": "string",      "status": "PURCHASE_REGISTRATION_STATUS_UNSPECIFIED",      "message": "string"    }  ]}

How is this guide?