如何激活 PayPal 订阅?
How to activate a PayPal subscription?
我已经使用 PayPal
和 SmartButtons
实现了一个循环支付系统。客户可以通过我的系统创建订阅,在结帐结束时我创建了订阅:
{
"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));
}
});
}
我遇到的问题是:
response: {
name: 'BUSINESS_VALIDATION_ERROR',
debug_id: '82426af46aee4',
message: 'Validation Error.',
information_link: 'https://developer.paypal.com/docs/api/payments.billing-agreements#errors',
details: [ [Object] ],
httpStatusCode: 400
},
httpStatusCode: 400
}
我向 executeAgreement
发送了 subscriptionId,但我想问题在于,在创建的订阅中我只收到订阅的 id 而不是 paymentToken
,我该如何解决?
本质上:如果我只有通过以下方法编辑的订阅 ID return,我如何 execute/activate 订阅:
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'
}
});
}
上面的方法returnorderId - subscriptionId - facilitatorAccessToken
,似乎我无法在用户通过智能支付按钮批准定期付款后激活订阅ID。
实际上,I-J8CHJ9UKB8JU
已经是一个已创建且有效的订阅,您不需要执行任何操作。
执行计费协议的概念来自早于订阅的旧文档API。
在当前的 Sbscriptions API 中,您只需创建并激活订阅:
https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create
然后重定向到批准 URL,或使用智能支付按钮(这要好得多,因为它会打开 "in context" 批准 -- 不需要任何重定向)
所以不管怎样,您有有效的订阅 ID:I-J8CHJ9UKB8JU
现在只需保存此对象并将其与您的客户对象相关联。
我已经使用 PayPal
和 SmartButtons
实现了一个循环支付系统。客户可以通过我的系统创建订阅,在结帐结束时我创建了订阅:
{
"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));
}
});
}
我遇到的问题是:
response: { name: 'BUSINESS_VALIDATION_ERROR', debug_id: '82426af46aee4', message: 'Validation Error.', information_link: 'https://developer.paypal.com/docs/api/payments.billing-agreements#errors', details: [ [Object] ], httpStatusCode: 400 }, httpStatusCode: 400 }
我向 executeAgreement
发送了 subscriptionId,但我想问题在于,在创建的订阅中我只收到订阅的 id 而不是 paymentToken
,我该如何解决?
本质上:如果我只有通过以下方法编辑的订阅 ID return,我如何 execute/activate 订阅:
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'
}
});
}
上面的方法returnorderId - subscriptionId - facilitatorAccessToken
,似乎我无法在用户通过智能支付按钮批准定期付款后激活订阅ID。
实际上,I-J8CHJ9UKB8JU
已经是一个已创建且有效的订阅,您不需要执行任何操作。
执行计费协议的概念来自早于订阅的旧文档API。
在当前的 Sbscriptions API 中,您只需创建并激活订阅:
https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create
然后重定向到批准 URL,或使用智能支付按钮(这要好得多,因为它会打开 "in context" 批准 -- 不需要任何重定向)
所以不管怎样,您有有效的订阅 ID:I-J8CHJ9UKB8JU
现在只需保存此对象并将其与您的客户对象相关联。