You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中PayPal-Mock-Response失效,沙箱负面测试遇403错误

PayPal沙箱负面测试403问题排查与替代方案

问题背景

开发支付负面场景(如卡片被拒)时,使用PayPal-Mock-Response请求头进行Orders接口负面测试,每次添加该头返回403错误且响应为空。正常请求可正常执行,授权令牌有效,使用Node.js的node-fetch包。

请求示例

POST https://api-m.sandbox.paypal.com/v2/checkout/orders
{
    "method": "post",
    "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer A21[reducted]",
        "PayPal-Mock-Response": "{\"mock_application_codes\":\"DUPLICATE_INVOICE_ID\"}"
    },
    "body": "{\"intent\":\"CAPTURE\",\"purchase_units\":[{\"custom_id\":89534,\"description\":\"my item name\",\"reference_id\":648,\"amount\":{\"currency_code\":\"USD\",\"value\":\"5.01\"}}]}"
}

响应示例

{
  "statusCode": 403,
  "responseText": ""
}

问题排查与修复

  • 修正请求头格式:手动转义JSON字符串容易出错,建议用JSON.stringify()自动处理,避免格式问题导致的403:
    const mockHeader = JSON.stringify({ mock_application_codes: "DUPLICATE_INVOICE_ID" });
    const headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer A21[reducted]",
        "PayPal-Mock-Response": mockHeader
    };
    
  • 验证错误码适用性:DUPLICATE_INVOICE_ID错误码可能不适用于订单创建接口,部分错误码仅针对捕获(CAPTURE)等后续操作。尝试在/v2/checkout/orders/{order_id}/capture请求中使用该头,或更换订单创建接口支持的错误码。
  • 检查账户权限:确认沙箱商家账户已启用负面测试功能,部分错误码需要特定权限才能触发。

替代负面测试方法

如果Mock头仍无法使用,可采用以下方案:

  • 使用PayPal沙箱测试卡号:PayPal提供了多种测试卡号,可模拟卡片被拒、余额不足、过期等场景。在沙箱支付页面选择"Pay with a card",输入对应测试卡号即可触发失败。
  • 模拟后续操作失败:正常创建订单后,在捕获订单的请求中添加PayPal-Mock-Response头,模拟支付失败场景,这种方式的兼容性通常更好。

内容的提问来源于stack exchange,提问作者Igor.K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:20:40