Verify Transaction#
Verify the validity of a payment authorization without executing an on-chain transaction. The Seller calls this endpoint to confirm the legitimacy of the Buyer's signature before releasing the resource.
Request URL: POST /api/v6/pay/x402/verify
Request Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
| x402Version | Integer | Yes | x402 protocol version, e.g. 2 |
| paymentPayload | Object | Yes | The x402 payment payload carried by the client with the protected request. See PaymentPayload for details |
| paymentRequirements | Object | Yes | Payment requirements defined by the Seller. See PaymentRequirements for details |
Response Parameters#
| Parameter | Type | Description |
|---|---|---|
| isValid | Boolean | true if verification passed, false if verification failed |
| invalidReason | String | Machine-readable reason for invalidity (returned on verification failure), e.g. insufficient_funds |
| invalidMessage | String | Human-readable description of invalidity (returned on verification failure) |
| payer | String | Payer wallet address |
Request Example#
Bash
curl --location --request POST 'https://web3.okx.com/api/v6/pay/x402/verify' \
--header 'Content-Type: application/json' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \
--data '{
"x402Version": 2,
"paymentPayload": {
"x402Version": 2,
"resource": {
"url": "https://api.example.com/premium-data",
"description": "Access to premium data",
"mimeType": "application/json"
},
"accepted": {
"scheme": "exact",
"network": "eip155:196",
"amount": "10000",
"asset": "0x4ae46a509f6b1d9056937ba4500cb143933d2dc8",
"payTo": "0xRecipientAddress",
"maxTimeoutSeconds": 60,
"extra": { "name": "USDG", "version": "2" }
},
"payload": {
"signature": "0xf3746613c2d920b5fdabc0856f2aeb2d4f88ee6037b8cc5d04a71a4462f13480...",
"authorization": {
"from": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"to": "0xRecipientAddress",
"value": "10000",
"validAfter": "0",
"validBefore": "1740672154",
"nonce": "0xf374661..."
}
}
},
"paymentRequirements": {
"scheme": "exact",
"network": "eip155:196",
"amount": "10000",
"asset": "0x4ae46a509f6b1d9056937ba4500cb143933d2dc8",
"payTo": "0xRecipientAddress",
"maxTimeoutSeconds": 60,
"extra": { "name": "USDG", "version": "2" }
}
}'
Response Example -- Verification Passed#
Json
{
"code": "0",
"msg": "success",
"data": {
"isValid": true,
"invalidReason": null,
"invalidMessage": null,
"payer": "0xcb30ed083ad246b126a3aa1f414b44346e83e67d"
}
}
Response Example -- Verification Failed#
Json
{
"code": "0",
"msg": "success",
"data": {
"isValid": false,
"invalidReason": "insufficient_funds",
"invalidMessage": "Payer balance is below required amount",
"payer": "0xcb30ed083ad246b126a3aa1f414b44346e83e67d"
}
}