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

PayPal智能按钮订阅报错TOKEN_FAILURE,onApprove函数未执行求助

问题分析

你遇到的核心问题是:PayPal智能按钮的createSubscription方法能成功获取到订阅ID,但用户完成授权后**onApprove未触发**,控制台出现订阅验证失败类报错。结合代码来看,主要存在以下几个问题:

  1. fetch请求未传递创建订阅的必要参数,且缺少HTTP错误状态检查
  2. 未确保返回给PayPal的是有效订阅ID
  3. onApprove中的AJAX调用没有错误处理逻辑

修复方案

1. 完善createSubscription的请求逻辑

给后端接口传递创建订阅必需的参数(比如订阅计划ID),同时添加HTTP状态校验,避免无效ID返回给PayPal:

createSubscription: function(data, actions) {
    // 替换为实际需要的订阅参数,比如你的PayPal计划ID
    const requestBody = {
        plan_id: "你的PayPal订阅计划ID"
    };

    return fetch('/?action=URL_ACTION', {
        method: 'post',
        headers: {
            'content-type': 'application/json'
        },
        body: JSON.stringify(requestBody) // 传递请求体参数
    }).then(function(res) {
        // 捕获HTTP错误(如400/500状态码)
        if (!res.ok) {
            throw new Error(`请求失败,状态码:${res.status}`);
        }
        return res.json();
    }).then(function(subData) {
        // 验证返回的订阅ID有效性
        if (!subData.id || !subData.id.startsWith('I-')) {
            throw new Error("无效的订阅ID");
        }
        return subData.id;
    }).catch(function(err) {
        console.error("创建订阅出错:", err);
        throw err; // 抛出错误让PayPal按钮显示异常状态
    });
}

2. 确保后端返回有效订阅ID

后端URL_ACTION接口必须返回PayPal官方生成的订阅ID(格式通常为I-XXXXXXX),不能返回自定义订单ID。如果ID无效,PayPal无法匹配对应的订阅记录,会直接触发控制台错误,跳过onApprove。

3. 优化onApprove的回调处理

添加成功/失败的回调逻辑,方便调试和给用户反馈:

onApprove: function(data, actions) {
    $.post('/?action=URL_SECOND_ACTION', {'data':data})
    .done(function(response) {
        console.log("订阅确认成功:", response);
        // 这里可以添加跳转或提示逻辑,比如跳转到成功页面
        // window.location.href = "/subscription-success";
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        console.error("订阅确认失败:", errorThrown);
        alert("订阅确认失败,请重试");
    });
}

4. 检查PayPal配置项

  • 确认使用的客户端ID与环境(沙箱/生产)匹配,且对应的订阅计划已在该环境中激活
  • 确保你的网站域名已添加到PayPal应用的返回URL配置中(开发者控制台 -> 我的应用和凭证 -> 对应应用 -> 功能 -> 网站付款)

额外排查建议

  • 打开浏览器网络面板,查看URL_ACTION接口的响应内容,验证返回的id是否为有效PayPal订阅ID
  • 登录PayPal开发者控制台(https://developer.paypal.com/developer/transactionSearch/),搜索对应的订阅ID,查看是否有错误记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:10:59