我需要将Paypal订阅集成到我的项目中。 我使用新的Paypal订阅api https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions,并且需要知道如何识别付款人和我自己的数据库用户。
这是我的想法:
但是看起来贝宝无法提供它。
这是我的智能结帐按钮代码
paypal.Buttons({
style: {
layout: 'horizontal',
size: 'small',
color: 'blue',
label: 'pay',
height: 55,
tagline: 'false'
},
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': 'P-5GS67390M7258253CLUHXAHQ',
'metadata' : {
'user_id' : 'myuserid'
}
});
},
onApprove: function(data, actions) {
console.log(data);
alert('You have successfully created subscription ' + data.subscriptionID);
}
}).render('#paypal-button-container');
</script>
我只找到一种方法
在成功付款后
onApprove: function(data, actions) {
$('#myform').append('<input name="subscriptions_id" value="data.subscriptionID"')
$('#myform').submit()
alert('You have successfully created subscription ' + data.subscriptionID);
}
为mysql数据库用户添加订阅ID的最佳方法是什么?
答案 0 :(得分:1)
问题中的解决方案是正确的,应该在创建时存储subscription-id并将其与内部用户id关联,对于内部订阅,该ID在批准后立即发生(在onApprove函数中)
可以使用fetch API代替表单发布将此订阅ID传递给服务器,以及将其与之关联的用户ID进行通信-类似于https://developer.paypal.com/demo/checkout/#/pattern/server
中的示例答案 1 :(得分:0)
问题中的解决方案是一种可能的方法。它的问题是,如果客户端在将数据发送到服务器之前发生故障,则 user_id 和 subscription_id 之间的关联将丢失。
解决方法是将 user_id 作为 custom_id
发送到 paypal。该 custom_id 然后是订阅数据的一部分,保留在 payapl 服务器上,显示在 paypal 计费 UI 中以获取订阅详细信息。我还不确定,但强烈怀疑它也被发送到了 webhook。
见PayPal API documentation for creating a subscription
所以最好将两者结合起来。使用 webhook 将 custom_id(您的 user_id)与订阅相关联。像您一样进行 API 调用(表单发布)。如果任一方式失败,您都有后备。