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

如何使用PayPal JS SDK测试失败交易及捕获错误?

在PayPal JS SDK v5.1.0沙箱环境触发失败交易的可行方案

针对你遇到的沙箱负面测试模式对支付按钮无效的问题,以下是几种可靠的测试失败场景的方法:

1. 手动模拟错误流程

在代码中添加条件判断,主动触发错误来测试前端的错误处理逻辑:

  • 模拟创建订单失败:在createOrder回调中,添加测试开关(比如URL参数或全局变量),满足条件时直接抛出错误或返回拒绝的Promise:
createOrder: (coData, actions) => {
    // 测试用:URL含test_error参数则触发失败
    if (window.location.search.includes('test_error=create_order')) {
        return Promise.reject(new Error('模拟创建订单失败'));
    }
    // 原有逻辑...
}
  • 模拟捕获订单失败:在onApprove回调中,跳过真实的API调用,直接返回拒绝的Promise:
onApprove: (oaData, actions) => {
    if (window.location.search.includes('test_error=capture')) {
        return Promise.reject(new Error('模拟捕获订单失败'));
    }
    // 原有捕获逻辑...
}

2. 使用沙箱测试卡号触发支付失败

PayPal沙箱提供了专门的测试卡号,用于触发不同的失败场景:

  • 触发DECLINED状态的卡号:4000000000000002(匹配Visa,CVV任意,过期日期设为未来月份/年份)
  • 触发INSUFFICIENT_FUNDS状态的卡号:4000000000009995
    在支付流程中使用这些卡号完成授权,就能得到真实的失败响应。

3. 构造非法订单参数触发API错误

修改订单参数,让PayPal API直接返回错误:

  • 设置金额为负数或超过限制的值:value: "-10.00"
  • 使用不符合要求的金额格式:value: "10"(不带小数位,部分币种要求两位小数)
  • 填写无效的商家信息:比如description为空或包含特殊字符

4. 补充按钮的错误处理回调

你的现有代码缺少onError回调,添加后可以捕获所有SDK层面的错误,方便测试和调试:

await paypal.Buttons({
    // 原有createOrder、onApprove逻辑...
    onError: (err) => {
        console.error('PayPal按钮错误:', err);
        // 这里添加错误提示页面跳转或用户通知逻辑
    }
}).render(buttonWrapper[0]);

另外,你提到的GitHub Issue我们已经关注,后续如果官方修复负面测试模式对按钮的支持,可以优先使用官方方案。

内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:24:13