Paypal 从 php 中的支付密钥获取交易详情

Posted

技术标签:

【中文标题】Paypal 从 php 中的支付密钥获取交易详情【英文标题】:Paypal get transaction details from pay key in php 【发布时间】:2014-11-27 08:57:18 【问题描述】:

我从 ios sdk 获得支付密钥,我需要通过支付密钥检查交易状态。

我使用了适用于 php 的 PayPal Merchant SDK。其中我可以从交易 ID 中获取交易详情,但不能从支付密钥中获取。

我也检查了这个 Paypal Adaptive payment Pay key validation received from IOS 但 IPN 选项,但它在我的情况下没有用。

但我的要求是,我有 ios 应用程序,其中用户将金额存入贝宝。然后对于服务器端,我需要验证事务状态,然后执行进一步的操作。

但我无法从支付密钥中找到交易详情。

有人做过吗??谢谢。

【问题讨论】:

您检查过PaymentDetails API 吗? 感谢@AndrewAngell 我实现了这个并且它的工作正常。 【参考方案1】:

终于找到了从pay-key获取交易明细的方法

首先使用您的 clientId 和 ClientSecret 获取访问令牌

$ch = curl_init();
            $clientId = PAYPAL_CLIENT_ID; //client Id
            $secret = PAYPAL_CLIENT_SECRET; client secrete key
            curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token");
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_USERPWD, $clientId . ":" . $secret);
            curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
            $result = curl_exec($ch);
            $accessToken = null;
            if (empty($result))
               die('invalid access token');
            else 
                $json = json_decode($result);
                $accessToken = $json->access_token;
            
            curl_close($ch);

获取访问令牌后,我使用以下代码获取交易详情

 $curl = curl_init("https://api.sandbox.paypal.com/v1/payments/payment/<paykey>");
            curl_setopt($curl, CURLOPT_POST, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_HEADER, false);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                'Authorization: Bearer ' . $accessToken,
                'Accept: application/json',
                'Content-Type: application/json'
            ));
            $response = curl_exec($curl);
            $result = json_decode($response);

这样我们就可以验证交易了。

当您使用它进行直播时,从 url 中删除沙盒工作。

【讨论】:

我成功获得了访问令牌。但是当我得到交易细节时,下面的 json 返回。 "name":"INVALID_RESOURCE_ID","message":"The requested resource ID was not found","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#INVALID_RESOURCE_ID","debug_id":"1b6ab351d8ce8"你能告诉我为什么会这样吗? @HassanRaza,我遇到了同样的问题,谁能帮忙解决这个问题..

以上是关于Paypal 从 php 中的支付密钥获取交易详情的主要内容,如果未能解决你的问题,请参考以下文章

需要从支付密钥 PayPal 获得交易 ID

获取有关增强的定期支付服务的交易详情

有啥方法可以在 php 的返回页面中从 PayPal 获取交易详细信息?

如何在 MPL android 中获取 PayPal 交易详情

Paypal 使用 PHP cURL 获取交易详情

通过贝宝付款完成后如何获取交易详情