【问题标题】:PayPal Buttons Subscribe and Add to Database贝宝按钮订阅和添加到数据库
【发布时间】:2021-10-09 03:45:18
【问题描述】:

我在我的网站上设置了一个 PayPal 订阅按钮。我想成功订阅,我将买家subscriptionID 添加到我的数据库中。

  paypal.Buttons({
      createSubscription: function(data, actions) {
        return actions.subscription.create({
          'plan_id': 'P-PLANID'
        });
      },
      onApprove: function(data, actions) {
        $.ajax({
            url: 'subscription_capture.php',
            type: 'post',
            data: { subid: data.subscriptionID},
            async: false,
            success: function(d) {
                location.reload();
            },
        });
      }
  }).render('#paypal-button-container');

subscription_capture.php

if(isset($_POST) and isset($_POST['subid'])){
    include 'db.php';;
    $query = $db->prepare("INSERT INTO `subscription` (`user_id`,`subscriptionID`) VALUES(?,?)");
    $query->bind_param('ss', $user_id, $_POST['subid']);
    $query->execute();
}

但这并不安全,因为任何查看代码的人都可以手动向subscription_capture.php 发送POST 请求,从而可能绕过订阅。有没有更好的方法来处理成功的订阅并将订阅 ID 添加到我的数据库中?

我了解到 Paypal 的 Button 是一种比设置 PayPalIPN 更简单的方式来处理付款。

【问题讨论】:

    标签: php mysql paypal paypal-ipn


    【解决方案1】:

    要接收订阅激活的安全通知,请注册webhook events,例如BILLING.SUBSCRIPTION.ACTIVATED(已激活个人资料)或PAYMENT.SALE.COMPLETED(已付款)

    Webhook 是非常古老的 IPN 服务的继承者。

    【讨论】:

    • 我创建了一个应用程序,然后创建了一个指向我的网站的 Webhook,该网站读取 $_POST 数据。现在我如何通过Buttons 获得订阅的 webhook 触发器?
    • 使用与按钮相同的客户端 ID 订阅事件。 $_POST 数据用于表单数据,您想读取所有输入并将其解析为 JSON。
    猜你喜欢
    • 2013-01-24
    • 2012-04-09
    • 2020-07-22
    • 2014-07-27
    • 2012-10-21
    • 2012-02-18
    • 2013-06-15
    • 2015-01-05
    相关资源
    最近更新 更多