我正在处理angular项目,我的要求是配置贝宝支付网关,包括创建订阅、取消订阅、升级订阅。
我有2个贝宝问题,如下所述:
1(我已经成功地用以下代码呈现了贝宝按钮:
index.html
<script src="https://www.paypal.com/sdk/js?client-id=client_id_here&disable-funding=credit,card&vault=true"></script>
支付组件.ts
const self = this;
this.planId = localStorage.getItem("paypalPlanId"); //Default Plan Id
paypal.Buttons({
createSubscription: function (data, actions) {
return actions.subscription.create({
'plan_id': self.planId,
"subscriber": {
"name": {
"given_name": localStorage.getItem("fullName").split(' ')[0],
"surname": localStorage.getItem("fullName").split(' ')[1]
},
"email_address": localStorage.getItem("email")
}
});
},
onApprove: function (data) {
console.log(data);
self.getSubcriptionDetails();
self.router.navigate(CC_GLOBAL.PAYMENT_THANKS_ROUTE);
},
onCancel: function (data) {
// Show a cancel page, or return to cart
console.log(data);
},
onError: function (err) {
// Show an error page here, when an error occurs
console.log(err);
}
}).render(this.paypalElement.nativeElement);
上面的代码按预期工作,并且能够创建订阅。现在我的要求大不相同,如下所述:
点击贝宝按钮后,它将打开模式弹出窗口,在成功登录后,我可以订阅计划。
我还用我的帐户设置了webhook方法,在成功订阅后,它会调用webhook方式,在调用webhookmethod时,会返回loggedIn用户详细信息(电子邮件,名字/姓氏(,而不是上面的电子邮件和用户名字/姓氏。
上面createSubscription方法有时按预期工作,但有时并非如此。
从贝宝官方文档中获得了上述代码的参考。
2(Paypal升级计划REST API返回错误:
我有订阅id,并从这里获得参考:
https://developer.paypal.com/docs/business/subscriptions/add-capabilities/revise-subscriptions/
但is返回以下错误:
修订操作的订阅状态无效;订阅状态应为活动状态
我如何知道活动状态,我使用沙盒帐户
在这里我对这个问题进行了一些研究,发现了以下贝宝漏洞:
1(https://github.com/paypal/paypal-checkout-components/issues/1336
2(https://github.com/paypal/paypal-checkout-components/issues/1247#issuecomment-551066663
尽管如此,我仍在寻找同样的答案。