代码之家  ›  专栏  ›  技术社区  ›  Deogratius Mabima

用户付费后如何从PAYPAL获取订阅详细信息?

  •  0
  • Deogratius Mabima  · 技术社区  · 2 年前

    我正在使用PayPal按钮设置定期付款计划,但当用户完成付款后,我希望获得订阅详细信息,如用户电子邮件和姓名。我曾尝试使用下面的代码从paypal获取详细信息,但最终出现了这个错误,如var_dump=>“对象(stdClass)#1(5){[“名称”]=>字符串(16)“验证错误”[“调试id”]=>字符串(12)”f1579954da9c“[“消息”]=>字符串(29)”无效请求。请参阅详细信息。“[信息链接”]=>字符串(67)”https://developer.paypal.com/docs/api/payments.billing-plans#errors“[“详细信息”]=>数组(1){[0]=>对象(stdClass)#2(2){[“字段”]=>字符串(22)“模板id无效”[“问题”]=>字符串(18)“不正确的计划id”。”}}”

    代码:

    $ch=curl_init();

    curl_setopt($ch, CURLOPT_URL, 'https://api-m.sandbox.paypal.com/v1/payments/billing-plans/'.$plan_id);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    
    
    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: Bearer '.rawurlencode($token);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    $response=json_decode($result);
    var_dump($response);
    

    有人能帮忙吗!?提前谢谢。

    我的语言不好,但如果你问什么不清楚的问题,我可以试着详细说明

    1 回复  |  直到 2 年前
        1
  •  1
  •   Preston PHX    2 年前

    编辑:实际上这里的主要问题是使用 deprecated v1/payments/billing-plans 应用程序编程接口。而是使用 v1/billing/plans 用于管理当前订阅计划的API——尽管这个问题更多地是关于订阅本身,而不是计划。


    从错误中,您指定的计划id无效;计划ID必须以“P-”开头。因为你的问题陈述是为了获取用户的实际状态 订阅 (不是计划),不要使用计划id或API调用。

    订阅id以“I-”开头,如果您使用的是此类JS按钮,则会在订阅按钮的onApprove数据中返回。然后,您可以使用订阅id get the status 通过API调用。

    要在后端中填充订阅ID,最可靠的方法(因为它不依赖于任何客户端代码)是创建一个webhook事件侦听器,以便随时收到通知 new Subscription events 为该REST应用程序/客户端id执行。最有用的此类活动是 PAYMENT_SALE_COMPLETED 因为每次支付订阅时都会发生这种情况,可以用来标记订阅有效期为1个月(通常的逻辑/业务需要),但也有 BILLING.SUBSCRIPTION.ACTIVATED 当它开始的时候。

    对于和解,可以包含任意 custom_id 创建订阅时(如果使用按钮,则在createSubscription内;如果使用按钮,则在API create内)。这 自定义id 将在与该订阅相关的所有Webhook中返回,因此您可以确定该订阅用于哪个用户/配置文件。