PayZuDocs

从配置证书到在沙箱中完成第一笔成功扣款,逐步说明。

本指南使用 sandbox(https://api.sandbox.payzu.io/v1)。生产环境的基础 URL 为 https://api.payzu.io/v1

前提条件

在发起第一次调用之前,您需要准备两项内容,均由 PayZu 团队提供:

  • 客户端 mTLS 证书(cliente.crtcliente.keyca.pem)。请安装证书并配置您的系统,在所有 API 调用中使用它,且始终通过 HTTPS。详见身份认证
  • 凭证 client_idclient_secret,用于获取访问 token。

获取 token

使用 client_idclient_secret 通过 Basic Auth 调用 POST /token,并附带 mTLS 证书,然后在后续调用中将返回的 access_token 作为 Bearer token 使用。完整的请求和响应示例见身份认证

创建第一笔收款

通过 POST /charges 创建收款。必填字段为 amountcustomerpaymentTypecartcreditCardPaymentexternalId。完整 schema 见接口参考。

curl --request POST \
  --url https://api.sandbox.payzu.io/v1/charges \
  --header "Authorization: Bearer SEU_ACCESS_TOKEN" \
  --header 'Content-Type: application/json' \
  --cert cliente.crt \
  --key cliente.key \
  --cacert ca.pem \
  --data '{
    "amount": 10000,
    "externalId": "order-2026-0001",
    "paymentType": "creditcard",
    "customer": {
      "name": "John Smith"
    },
    "cart": [
      {
        "name": "Monthly plan",
        "quantity": 1,
        "sku": "PLAN-01",
        "unitPrice": 10000
      }
    ],
    "creditCardPayment": {
      "installments": 1,
      "authenticate": false,
      "card": {
        "number": "4111111111111111",
        "holder": "JOAO DA SILVA",
        "expiration": "12/2030",
        "cvv": "123"
      }
    }
  }'

在生产环境中,请将基础 URL 换成 https://api.payzu.io/v1

金额字段(amountunitPrice)始终以为单位。10000 相当于 R$ 100,00。

authenticate: false 时,买家不会被引导至发卡行进行身份认证。如需认证流程,请参阅 3D Secure

解读响应

响应包含收款的 id、传入的 externalId,以及带有 statusreasonCodereasonMessagecreditCardPayment 对象。主要状态如下:

代码状态含义
1Authorized已获发卡行授权,可进行请款,但尚未完成。
2PaymentConfirmed支付已确认并完成。
3Denied支付被授权方拒绝。

如果 creditCardPayment.status 返回 2(PaymentConfirmed),您的第一笔收款已确认。完整的代码列表见交易状态

测试场景并配置 webhooks

要在 sandbox 中模拟批准、拒绝和超时,请使用测试卡:卡号的末位数字决定交易结果。

要在无需轮询 API 的情况下接收收款状态通知,请在创建收款时传入 postbackUrl。payload 结构与校验方法见 Webhooks

下一步

本页内容