PAYATHON 2026

Paysafe Card Payment API 返回 Error 5270

支付小周

结论

Error 5270 表示授权失败。Paysafe 已识别请求中的凭据,但该凭据无权访问当前账户、环境或 Card Payments API 资源。

这并不一定是 API key 填写错误。常见原因包括:

  • API 凭据与 URL 中的 account_id 不属于同一个商户账户。
  • 测试环境使用了生产凭据,或生产环境使用了测试凭据。
  • 服务端请求使用了前端 SDK 的 public key,而不是服务器端 API 凭据。
  • 当前商户账户尚未开通 Card Payments API,或凭据缺少相关权限。
  • 凭据已重新生成或停用,或者权限配置有过调整。

排查步骤

1. 检查请求环境

测试凭据只能用于测试环境,生产凭据只能用于生产环境。除了检查 URL,还要确认凭据是在同一环境中生成的。

测试环境通常使用类似下面的地址:

https://api.test.paysafe.com/cardpayments/v1/...

生产环境应使用对应的生产 API 地址。具体地址以当前 Paysafe 商户后台或官方文档为准。

2. 核对 account_id

Card Payments API 的请求路径通常包含账户 ID:

/cardpayments/v1/accounts/{account_id}/auths

其中的 account_id 必须是分配给当前 API 凭据的 Card Payments 账户 ID。商户登录名、API key、业务编号或其他产品的账户 ID 都不能代替它。

如果同一商户主体下有多个账户,还需要确认当前凭据有权访问目标账户。

3. 确认使用服务器端凭据

服务端请求通常使用 HTTP Basic Authentication,并传入 API key 的用户名和密码。浏览器端或 Hosted Fields、SDK 使用的 public key 不能代替服务器端凭据。

示例:

curl --request POST \
  --user 'API_KEY_USERNAME:API_KEY_PASSWORD' \
  --header 'Content-Type: application/json' \
  --data '{
    "merchantRefNum": "order-20260913-001",
    "amount": 1000,
    "settleWithAuth": false,
    "card": {
      "cardNum": "TEST_CARD_NUMBER",
      "cardExpiry": {
        "month": 12,
        "year": 2030
      },
      "cvv": "123"
    }
  }' \
  'https://api.test.paysafe.com/cardpayments/v1/accounts/ACCOUNT_ID/auths'

示例中的账户、卡号和字段只用于说明请求结构,请替换为 Paysafe 为当前测试环境提供的数据。不要将生产密钥写入前端代码、日志或代码仓库。

4. 检查 Basic Auth 的构造方式

如果自行生成 Authorization 请求头,格式应为:

Authorization: Basic Base64(API_KEY_USERNAME:API_KEY_PASSWORD)

例如:

const username = process.env.PAYSAFE_API_USERNAME;
const password = process.env.PAYSAFE_API_PASSWORD;
const accountId = process.env.PAYSAFE_ACCOUNT_ID;

const authorization = Buffer
  .from(`${username}:${password}`, "utf8")
  .toString("base64");

const response = await fetch(
  `https://api.test.paysafe.com/cardpayments/v1/accounts/${accountId}/auths`,
  {
    method: "POST",
    headers: {
      Authorization: `Basic ${authorization}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      merchantRefNum: "order-20260913-001",
      amount: 1000,
      settleWithAuth: false
    })
  }
);

重点检查用户名和密码是否写反,以及环境变量中是否夹带空格、引号或换行符。

如果所有请求都返回 5270

如果多个 Card Payments 接口始终返回 5270,并且环境、认证格式和 account_id 都已确认无误,问题很可能出在 Paysafe 侧的账户授权配置上。例如,商户账户尚未启用 Card Payments 产品,或者 API 凭据没有关联到目标账户。

这种情况下,继续调整请求参数通常无效。请联系 Paysafe 支持团队或账户经理,并提供以下信息:

  • 使用的是测试环境还是生产环境;
  • 请求路径和 HTTP 方法;
  • account_id;
  • 错误代码 5270;
  • 响应中的 request ID、correlation ID 或时间戳(如果有);
  • API key 的标识信息,但不要发送完整密码或完整的 Authorization 请求头。

注意事项

Error 5270 更接近“身份已识别,但资源访问被拒绝”,并不表示支付卡被拒绝。它通常出现在业务处理开始前,因此更换卡号、金额或订单号一般不能解决问题。

如果只有某个账户或接口返回 5270,先检查该资源的权限。如果所有接口都返回 5270,则先检查请求环境、凭据类型、账户绑定关系,以及 Card Payments API 是否已经开通。

备注:内容仅供参考。