交易验证#
验证支付授权有效性,不执行链上交易。Seller 在放行资源前调用此接口确认 Buyer 签名的合法性。
请求地址#
POST /api/v6/pay/x402/verify
请求参数#
| 参数 | 类型 | 必传 | 描述 |
|---|---|---|---|
| x402Version | Integer | 是 | x402 协议版本,如 2 |
| paymentPayload | Object | 是 | 客户端随受保护请求携带的 x402 支付载荷,详见 PaymentPayload |
| paymentRequirements | Object | 是 | Seller 定义的支付要求,详见 PaymentRequirements |
响应参数#
| 参数 | 类型 | 描述 |
|---|---|---|
| isValid | Boolean | true 验证通过,false 验证失败 |
| invalidReason | String | 机器可读的无效原因(验证失败时返回),如 insufficient_funds |
| invalidMessage | String | 人类可读的无效说明(验证失败时返回) |
| payer | String | 付款方钱包地址 |
请求示例#
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" }
}
}'
响应示例 -- 验证通过#
Json
{
"code": "0",
"msg": "success",
"data": {
"isValid": true,
"invalidReason": null,
"invalidMessage": null,
"payer": "0xcb30ed083ad246b126a3aa1f414b44346e83e67d"
}
}
响应示例 -- 验证失败#
Json
{
"code": "0",
"msg": "success",
"data": {
"isValid": false,
"invalidReason": "insufficient_funds",
"invalidMessage": "Payer balance is below required amount",
"payer": "0xcb30ed083ad246b126a3aa1f414b44346e83e67d"
}
}