paypal - 如何在订阅 paypal api 中添加自定义用户 ID

标签 paypal paypal-subscriptions

我需要将 Paypal 订阅集成到我的项目中。
我使用新的 Paypal 订阅 API https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions并且需要知道如何识别付款人和我自己的数据库用户。

这是我脑海中的场景:

  • 我用注册表单创建了我自己的数据库用户。
  • 我将自己的用户 ID 设置为 paypal api 调用
  • 在用户确认订阅 Paypal 返回我订阅 ID 后,然后我调用 Paypal API 以获取返回订阅的详细信息并查看我自己的数据库用户 ID

  • 但看起来paypal不能提供它。

    这是我的智能结账按钮代码

        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>
    

    我只找到了一种方法
  • 用户将所有数据插入到注册表单中,然后点击 Paypal 按钮
  • Paypal 付款成功后
        onApprove: function(data, actions) {
            $('#myform').append('<input name="subscriptions_id" value="data.subscriptionID"')
            $('#myform').submit()
            alert('You have successfully created subscription ' + data.subscriptionID);
    
        }
    

  • 为 mysql db 用户添加订阅 ID 的最佳方法是什么?

    最佳答案

    问题中的解决方案是一种可能的方法。 问题如果客户端在将数据发送到服务器之前发生故障,则 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 调用(表单发布)。如果任一方式失败,您都有后备。
    更新 2021-09-02:我自己在我们的网络计费解决方案中使用这种方法。我注意到的一件事是,从统计上讲,Web 客户端在得到响应之前出现故障是非常罕见的事件。我知道这是因为 webhook 调用会在事件发生后的几个小时到几天内发出。在我分析了数百个订阅之后,我没有看到一个 webhook 来修补丢失的事务的情况。
    我不知道为什么会这样。它当然超出了我的预期。
    我的猜测是 1. PayPal 服务器回复速度快 2. 我的 PWA 编写得足够好,可以警告用户等待一段时间不要关闭浏览器窗口,直到出现确认屏幕。
    我仍然建议实现 webhook。对于用户直接在 Paypal 上取消订阅的所有其他情况或其他此类事件,都需要它。

    关于paypal - 如何在订阅 paypal api 中添加自定义用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725172/

    相关文章:

    paypal - 即时付款通知 (IPN)

    php - 无法在 Codeigniter 中接收 PayPal IPN 响应

    rest - 为订阅调用 PayPal REST API 执行 URL 时到底发生了什么

    ruby-on-rails - 创建协议(protocol)时 Paypal Rest Api 内部服务器错误

    paypal - paypal定期付款试用期可以有0金额吗?

    ruby-on-rails - 如何在 Ruby 中将 Mass Pay API 与新的 REST API 结合使用?

    paypal - 不再提供对 paypal 沙箱的负面测试?

    php - 我应该如何使用 PayPal 创建帐户?

    用于定期付款的 Paypal 保险库

    paypal - 交易后获取客户详细信息