Cancel pending payment
Step 2B: Cancels a pending purchase that was previously registered. IMPORTANT: Always expects HTTP 200 OK response with inline error codes in the body.
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 to cancel a pending purchase that was previously registered.
The user canceling the purchase
Transaction identifier to cancel
Optional checkout link identifier if purchase was made through a checkout link
The originating Stash shop identifier (mirrors the shopId sent in webhooks)
Payment environment for the request
"PAYMENT_ENVIRONMENT_UNSPECIFIED""PAYMENT_ENVIRONMENT_UNSPECIFIED" | "PAYMENT_ENVIRONMENT_TEST" | "PAYMENT_ENVIRONMENT_PRODUCTION"Currency code (ISO-4217 code, e.g., 'USD', 'EUR')
CLDR fraction-digit count for this ISO 4217 currency, from public CLDR supplemental data for this currency code (scales line-item minor units). Always sent, including the literal 0 for zero-decimal currencies (e.g. JPY, KRW).
int64List of items in this canceled purchase
Response Body
curl -X POST "https://loading/api/v1/purchase/cancel" \ -H "Content-Type: application/json" \ -d '{ "playerId": "string", "transactionId": "string", "currency": "string", "decimalPlaces": 0, "items": [ { "guid": "string", "productId": "string", "quantity": 0, "cents": 0 } ] }'{
"status": "PURCHASE_CANCELLATION_STATUS_UNSPECIFIED",
"message": "string"
}{
"code": 0,
"message": "string",
"details": [
{
"@type": "string",
"property1": null,
"property2": null
}
]
}How is this guide?