如何验证 PayPal 订阅

Posted

技术标签:

【中文标题】如何验证 PayPal 订阅【英文标题】:How to verify PayPal Subscription 【发布时间】:2021-09-23 01:14:20 【问题描述】:

我正在尝试验证订阅并将信息保存到数据库中,在我的最后一个问题中,我设置了一个允许双重结帐的结帐,用于订单和订阅。我正在这里验证订单:

<?php
    namespace Sample;

    require __DIR__ . '/vendor/autoload.php';
    use Sample\PayPalClient;
    use PayPalCheckoutSdk\Orders\OrdersGetRequest;
    require 'paypal-client.php';
    $orderID = $_GET['orderID'];
    class GetOrder
    
      public static function getOrder($orderId)
      
          

          // 3. Call PayPal to get the transaction details
          $client = PayPalClient::client();
          $response = $client->execute(new OrdersGetRequest($orderId));
              
          $orderID = $response->result->id;
          $email = $response->result->payer->email_address;
          $name = $response->result->purchase_units[0]->shipping->name->full_name;
          $payerid = $response->result->payer->payer_id;
          $id = $_GET["UserID"];
          include "include/connect.php";
          //echo "#################### $orderID ###### $email ######### $name ######### $payerid";
          $stmt = $conn->prepare("UPDATE User SET Active='2', OrderID='$orderID', PPemail='$email', PPname='$name', PPID='$payerid' WHERE ID = $id");
          $stmt->execute();
          if(!$stmt)
              echo "error" . mysqli_error($con);
          else
              header("Location:success.php?id=$id");
          
        ?>
        <pre>
        <?php
        //echo json_encode($response->result, JSON_PRETTY_PRINT);
        ?>
        </pre>
        <?php
      
    

    /**
     *This driver function invokes the getOrder function to retrieve
     *sample order details.
     *
     *To get the correct order ID, this sample uses createOrder to create an order
     *and then uses the newly-created order ID with GetOrder.
     */
    if (!count(debug_backtrace()))
    
      GetOrder::getOrder($orderID, true);
    
    ?>

但我还需要获取订阅详细信息以保存它,我找不到任何关于订阅的好教程。

【问题讨论】:

删除echo "error" . mysqli_error($con);,因为这段代码永远不会起作用 【参考方案1】:

使用the current Subscriptions API,或注册Subscriptions webhook events。

这些东西都没有受支持的服务器 SDK;使用direct HTTPS integration,或者根据需要调整 Checkout SDK 的源代码以执行这些其他调用。

【讨论】:

以上是关于如何验证 PayPal 订阅的主要内容,如果未能解决你的问题,请参考以下文章

PayPal API,账户验证

Paypal 定期付款响应验证并与 paypal 返回页面变量匹配

Paypal订阅不同数量的项目

如何将 Azure API 管理与 Paypal 集成

PayPal PDT 身份验证参数

PayFlow PayPal 定期付款 EXPDATE 验证