我有两个智能按钮在我的网站上,每月订阅(工作良好)。我成功地接收到IPN响应,并准备将支付信息添加到数据库中。但是我需要得到我的应用程序的UserID和IPN响应。
如何使用智能支付按钮传递自定义变量,以便将其传递给IPN (如果可能,用于购买交易和退款/取消)?
这是我的智能按钮代码:
<div id="paypal_button"></div>
<script src="https://www.paypal.com/sdk/js?client-id=[ID]...></script>
<script>
paypal.Buttons({
style:{
color:"blue",
shape:"rect",
label:"paypal",
tagline:false
},
createSubscription: function(data, actions) {
return actions.subscription.create({'plan_id': 'P-02S33....'});
},
onApprove: function(data, actions) {
alert('You have successfully created subscription ENTERPRISE' + data.subscriptionID);
}
}).render('#paypal_button');
</script>发布于 2021-03-24 07:59:42
从2020年6月开始,您可以使用paypal订阅按钮传递一个custom_id,如下所示:
createSubscription: function(data, actions) {
return actions.subscription.create({
plan_id: "P-1234567897897AAA",
custom_id: "1344", // for example your internal userid
});
},现在使用web钩子(如果使用PHP):
// get data from Paypal Webhook POST
$data = json_decode(file_get_contents("php://input"));
error_log('custom_id: '.$data->resource->custom_id);
// also helpful for debugging
error_log(print_r($data, true));如上文所述,包含custom_id的事件:
活动:
你需要使用:
error_log('custom_id: '.$data->resource->custom);最后没有_id。
注意:我编写了一个全面的教程,希望能帮助开发人员完成任务。教程:如何将Paypal订阅API与PHP和Javascript (2021)集成-完整指南
发布于 2020-06-08 08:26:36
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
invoice_id: 'your_value_1',
custom_id: 'your_value_2',
amount: {
value: '10'
}
}]
});
},IPN将包括以下员额变量:
$_POST['invoice']; // your_value_1
$_POST['custom'] // your_value_2发布于 2019-11-13 11:41:15
我使用了一个混合贝宝IPN和客户重定向反应时,他完成了付款。
当客户完成付款后,它将调用JS函数onApprove。如果需要的话,我使用这个函数从我的应用程序收集data.subscriptionID和UserID以及其他信息。然后,我将这些信息发送到我的数据库中(贝宝SubscriptionID和我的UserID )。
然后,我等待贝宝IPN呼叫我的路线之一。IPN将发送大量有关支付的信息。其中之一就是我之前存储的SubscriptionID。因此,我只需要用我拥有的匹配的SubscriptionID更新我的数据库条目。
为了获得更高的安全性,如果Subscription_ID与我的数据库中的任何条目不匹配,那么我的客户端调用和IPN调用都将创建一个新的DB条目(如果在客户端之前触发IPN,或者客户端在进行客户端调用之前关闭了我的网站页面)。
https://stackoverflow.com/questions/58820028
复制相似问题