API 参考

交易验证#

验证支付授权有效性,不执行链上交易。Seller 在放行资源前调用此接口确认 Buyer 签名的合法性。

请求地址#

POST /api/v6/pay/x402/verify

请求参数#

参数类型必传描述
x402VersionIntegerx402 协议版本,如 2
paymentPayloadObject客户端随受保护请求携带的 x402 支付载荷,详见 PaymentPayload
paymentRequirementsObjectSeller 定义的支付要求,详见 PaymentRequirements

响应参数#

参数类型描述
isValidBooleantrue 验证通过,false 验证失败
invalidReasonString机器可读的无效原因(验证失败时返回),如 insufficient_funds
invalidMessageString人类可读的无效说明(验证失败时返回)
payerString付款方钱包地址

请求示例#

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"
  }
}