首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能支付按钮传递IPN的自定义变量

智能支付按钮传递IPN的自定义变量
EN

Stack Overflow用户
提问于 2019-11-12 13:42:05
回答 4查看 2.3K关注 0票数 6

我有两个智能按钮在我的网站上,每月订阅(工作良好)。我成功地接收到IPN响应,并准备将支付信息添加到数据库中。但是我需要得到我的应用程序的UserID和IPN响应。

如何使用智能支付按钮传递自定义变量,以便将其传递给IPN (如果可能,用于购买交易和退款/取消)?

这是我的智能按钮代码:

代码语言:javascript
复制
<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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-03-24 07:59:42

从2020年6月开始,您可以使用paypal订阅按钮传递一个custom_id,如下所示:

代码语言:javascript
复制
  createSubscription: function(data, actions) {
    return actions.subscription.create({
      plan_id: "P-1234567897897AAA",
      custom_id: "1344", // for example your internal userid
    });
  },

现在使用web钩子(如果使用PHP):

代码语言:javascript
复制
// 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的事件:

  • BILLING.SUBSCRIPTION.CREATED
  • BILLING.SUBSCRIPTION.ACTIVATED

活动:

  • PAYMENT.SALE.COMPLETED

你需要使用:

代码语言:javascript
复制
error_log('custom_id: '.$data->resource->custom);

最后没有_id

注意:我编写了一个全面的教程,希望能帮助开发人员完成任务。教程:如何将Paypal订阅API与PHP和Javascript (2021)集成-完整指南

票数 3
EN

Stack Overflow用户

发布于 2020-06-08 08:26:36

代码语言:javascript
复制
createOrder: function(data, actions) {
   return actions.order.create({
      purchase_units: [{
         invoice_id: 'your_value_1',
         custom_id: 'your_value_2',
         amount: {
            value: '10'
         }
      }]
   });
},

IPN将包括以下员额变量:

代码语言:javascript
复制
$_POST['invoice']; // your_value_1
$_POST['custom']   // your_value_2

更多信息:https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNandPDTVariables/#ipn-transaction-types

票数 4
EN

Stack Overflow用户

发布于 2019-11-13 11:41:15

我使用了一个混合贝宝IPN和客户重定向反应时,他完成了付款。

当客户完成付款后,它将调用JS函数onApprove。如果需要的话,我使用这个函数从我的应用程序收集data.subscriptionID和UserID以及其他信息。然后,我将这些信息发送到我的数据库中(贝宝SubscriptionID和我的UserID )。

然后,我等待贝宝IPN呼叫我的路线之一。IPN将发送大量有关支付的信息。其中之一就是我之前存储的SubscriptionID。因此,我只需要用我拥有的匹配的SubscriptionID更新我的数据库条目。

为了获得更高的安全性,如果Subscription_ID与我的数据库中的任何条目不匹配,那么我的客户端调用和IPN调用都将创建一个新的DB条目(如果在客户端之前触发IPN,或者客户端在进行客户端调用之前关闭了我的网站页面)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58820028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档