【发布时间】:2017-11-17 22:58:55
【问题描述】:
我的 laravel 项目中有 paypal express checkout。我正在使用客户端休息,并在执行付款后,在 actions.payment.execute() 中进行请求,使用https://api.sandbox.paypal.com/v1/oauth2/token url 获取 access_token。
然后我尝试让 curl 请求确认付款:
https://api.sandbox.paypal.com/v1/payments/payment/". $PaymentID . "/execute"
但是我从 curl 请求中得到了 PERMISSION_DENIED:
"No permission for the requested operation"
这是我的 curl 请求
$ch = curl_init();
$token = $arrData['AccessToken'];
$data = ['payer_id' => $arrData['PayerID']];
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/payments/payment/". $arrData['PaymentID'] ."/execute");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,array(
"Content-Type:application/json",
"Authorization:Bearer ".$token )
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
$json = json_decode($result, TRUE); // 'true' converts it to an array
var_dump($json);exit;
curl_close($ch);
也许有人有同样的问题,知道是什么原因吗?
或者也许在客户端休息时,我们不需要发出 curl 请求来批准付款。我不确定 onAuthorize 功能是否足以批准付款。
非常感谢。
【问题讨论】:
-
您是否设置了 PayPal 应用程序,如果有,您可能没有设置正确的权限。
-
我有用于本地测试的沙盒帐户。我需要添加任何权限吗?
-
可能是这样,或者可能是他们不允许通过这样的沙箱发布付款。我知道 Authorize.net 对您可以通过他们的付款方式运行的内容有限制,我只能假设 PayPal 是类似的。
-
我在他们的文档中没有看到任何内容,使用沙箱我们无法提出后批准请求。
-
我不使用 PayPal 服务来确定。不过,我会在他们的尽头进行挖掘,看看是否有与阻止此操作相关的许可。祝你好运!
标签: laravel curl paypal express-checkout