微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PayPal + PHP - 获取收款开始时间/结束时间

如何解决PayPal + PHP - 获取收款开始时间/结束时间

我的目标是使用 PHP/curl 列出某个日期(例如,从 2021 年 3 月 9 日起所有收到的付款)的所有传入(!)PayPal 付款。阅读 PayPal 的 GetStarted 部分,我还认识到从 V1 到 V2 的 API 版本发生了变化:(PayPal's V1 deprecation note)

尝试 V1: 对于 V1,解释了一些完全符合我需要的查询参数。例如:start_time + end_time。 (V1-Parameters) 按照文档,我设法使用 V1 获取了一些付款,但它们不符合给定的日期。它们来自 2018 年的某个时候——尽管贝宝账户是在很多年前创建的。所以结果似乎有点随意,我猜 V1 不再满足我的需要。

$live_url = "https://api-m.paypal.com/v1/payments/payment";
$myStart_time = date("Y-m-d")."T00:00:00Z";                                 // e.g. 2021-03-09T00:00:00Z
$myEnd_time = date("Y-d-m",time()) ."T". date("H:m:s",time()) . "Z";      // e.g. 2021-03-09T14:21:00Z

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$live_url);
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_CUSTomrEQUEST,'GET');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($ch,CURLOPT_USERPWD,$client_id.":".$paypal_secret);
curl_setopt($ch,CURLOPT_POSTFIELDS,"start_time=".$myStart_time);
curl_setopt($ch,"end_time=".$myEnd_time);
curl_setopt($ch,"total_count_required=true");
curl_setopt($ch,"start_index=0");
curl_setopt($ch,"sort_by=update_time");
curl_setopt($ch,"sort_order=desc");
curl_setopt($ch,"grant_type=client_credentials");
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Accept: application/json","Accept-Language: en_US",'Content-Type: application/x-www-form-urlencoded'));
$result = curl_exec($ch);

尝试 V2:我还设法使用 V2 的交易代码从某笔付款中获取 PayPal 付款详细信息。但是对于这种方法,我需要在之前知道交易代码,然后才能列出具体的付款。但我不知道交易代码,才知道有哪些付款。

$payments_url = "https://api.paypal.com/v2/payments/captures/$transaction_code";

(使用上述 V2 的 URL 是因为“https://api-m.paypal.com/v2/payments/payment”不存在:返回 HTML 404。)

$ch = curl_init();
curl_setopt($ch,$payments_url);
curl_setopt($ch,array(
    'Authorization: Bearer ' . $access_token,'Accept: application/json','Content-Type: application/json'
));
$result = curl_exec($ch);

所以任何人都可以建议我如何管理? (也许我只是走错了路,因为除了与 API V1 相关的非常旧的答案之外,我没有真正找到任何有用的答案)

解决方法

    echo "<br>REPORT TRANSACTIONS<br>";
    $live_url = "https://api-m.paypal.com/v1/reporting/transactions";

    $transactions_url = "?start_date=2021-03-17T00:00:00Zend_date=2021-03-18T13:50:59Z&fields=all";
    
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$live_url . $transactions_url);

    curl_setopt($ch,CURLOPT_HEADER,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_CUSTOMREQUEST,'GET');
//  curl_setopt($ch,CURLOPT_POSTFIELDS,"start_date=".($myStart_time));
//  curl_setopt($ch,"end_date=".($myEnd_time));
    curl_setopt($ch,"fields=all");
    curl_setopt($ch,"page_size=10");
    curl_setopt($ch,"page=1");
    curl_setopt($ch,"sync_mode=false");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch,CURLOPT_USERPWD,$client_id.":".$paypal_secret);
    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        "Accept: application/json","Accept-Language: en_US","Authorization: Bearer " . $access_token,"Content-Type: application/json"
    ));

    $result = curl_exec($ch);
    $info = curl_getinfo($ch);      
    $err = curl_error($ch);

    echo "<hr>";

    if ($err) {
      echo "<br>cURL Error: $err <br>Info: $info <br>Result: $result";
    }
    else
    {
        echo "<pre>";
        print_r($info);
        print_r($r = json_decode($result)); 
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。