如何激活 PayPal 订阅?

Posted

技术标签:

【中文标题】如何激活 PayPal 订阅?【英文标题】:How to activate a PayPal subscription? 【发布时间】:2020-08-14 20:08:42 【问题描述】:

我已经使用PayPalSmartButtons 实施了一个定期支付系统。客户可以通过我的系统创建订阅,在结帐结束时我会创建订阅:


    "orderID": "3JR7411152833961C",
    "subscriptionID": "I-J8CHJ9UKB8JU",
    "facilitatorAccessToken": "A21AAElq71jrRrKHzaxxOeA4o7cOie83F_N-LKMZoAe2mhmaANy-a784yj9DUbSlQPIxtu_O-7XyzHWab23gKVgwhqK9Hjaow"
 

为了激活订阅并获得付款我需要执行它,所以我写了这个方法:

let executeAgreement = (paymentToken) => 

    paypal.billingAgreement.execute(paymentToken, , function (error, billingAgreement) 
        if (error) 
            console.log(error);
            throw error;
        
        else 
            console.log('Billing Agreement Execute Response');
            console.log(JSON.stringify(billingAgreement));
        
    );

我遇到的问题是:

回复: 名称:“BUSINESS_VALIDATION_ERROR”, debug_id: '82426af46aee4', 消息:'验证错误。', information_link: 'https://developer.paypal.com/docs/api/payments.billing-agreements#errors', 详细信息:[[对象]], http状态码:400 , http状态码:400

我将subscriptionId 发送到executeAgreement,但我想问题在于,在创建的订阅中,我只收到了订阅的id 而不是paymentToken,我该如何解决?

本质上:如果我只有以下方法返回的订阅 ID,我该如何执行/激活订阅:

 opts.createSubscription = function (data, actions) 
     that.step = that.steps.PAYPAL_EXTERNAL_WINDOW;
          return actions.subscription.create(
              plan_id: that.paymentData.plan.id,
              application_context: 
              user_action: "CONTINUE",
              shipping_preference: 'NO_SHIPPING'
          
     );

上面的方法返回orderId - subscriptionId - facilitatorAccessToken,在用户通过智能支付按钮批准定期支付后,我似乎无法激活订阅ID。

【问题讨论】:

【参考方案1】:

实际上,I-J8CHJ9UKB8JU 已经是一个已创建且处于活动状态的订阅,您无需执行任何操作。

执行计费协议的概念来自早于订阅 API 的旧文档。

在当前的订阅 API 中,您只需创建并激活订阅:

https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create

然后重定向到批准 URL,或使用智能支付按钮(这要好得多,因为它会打开“上下文”批准 - 无需任何重定向)

所以无论如何,你有你的有效订阅 ID:I-J8CHJ9UKB8JU

现在只需保存此对象并将其与您的客户对象相关联。

【讨论】:

使用billing/subscriptions我可以看到订阅详情,我注意到订阅没有激活但状态为APPROVED,我已将完整回复粘贴在这里:pastebin.com/g5QLsyrD也许在那里订阅的计划有问题吗?我的目标是在用户订阅后立即获得付款,计划详情:pastebin.com/i7MvGizt 你有user_action: "CONTINUE",,这可能需要额外的审查步骤并需要发送显式的激活 API 调用 好的,所以删除user_action订阅应该会自动激活,但是假设我需要这个额外的验证步骤,我如何验证订阅并通过node js SDK API激活它?跨度> SDK 不支持新的 Subscriptiosn API,因此您需要在 API 参考 developer.paypal.com/docs/api/subscriptions/v1/… 中实现等效的 HTTPS curl 帖子

以上是关于如何激活 PayPal 订阅?的主要内容,如果未能解决你的问题,请参考以下文章

贝宝订阅重新激活计费日期

node.js / axios AUTHENTICATION_FAILURE 与 PayPal 订阅 API

WooCommerce 订阅 - PayPal 参考交易

Paypal 订阅(具有多个付款计划的付款协议)

重新激活的 PayPal 定期账户如何付款?

剩余天数取消 PayPal 定期付款