【问题标题】:paypal php credit card payment returns 401paypal php信用卡支付返回401
【发布时间】:2015-10-21 16:05:43
【问题描述】:

我正在尝试通过 paypal REST API 服务进行信用卡付款,我可以获取访问令牌,但每次尝试进行信用卡付款我都会收到 401。

我的示例在 .NET 上完美运行,但在 PHP 上却不行。请指教

$json = '{"intent":"sale","redirect_urls":{"return_url":"","cancel_url":""},"payer":{"payment_method":"credit_card","funding_instruments":[{"credit_card":{"number":"4417119669820331","type":"visa","expire_month":11,"expire_year":2018,"cvv2":"874","first_name":"Betsy","last_name":"Buyer","billing_address":{"line1":"111 First Street","city":"Saratoga","state":"CA","postal_code":"95070","country_code":"US"}}}]},"transactions":[{"amount":{"total":"200","currency":"USD"},"description":"Credit Card Payment - $200"}]}';

$Url = "https://api.sandbox.paypal.com/v1/payments/payment";
$AccessToken = GetAccessToken();
echo "Bearer ".$AccessToken;
echo "<br><br>";
$headers = array("Authorization" => "Bearer ".$AccessToken, "Content-Type" => "text/json", "Content-length" =>strlen($json));

$handle = curl_init($Url);


curl_setopt($handle,CURLOPT_HTTPHEADER,$headers);   
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $json);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$response   = curl_exec($handle);
$info = curl_getinfo($handle);
$error= curl_error ( $handle );
curl_close($handle);

var_dump($info);
echo "<br><br>";
var_dump($error);
echo "<br><br>";
var_dump($response);

这里有完整示例https://dl.dropboxusercontent.com/u/3517813/index.php

【问题讨论】:

标签: php paypal http-status-code-401


【解决方案1】:

我可以通过将 $headers 行更改为:

$headers = array("Content-Type: application/json", "Authorization: Bearer" . $AccessToken);

【讨论】:

  • 这太不可思议了,它奏效了。是否有任何理由为什么标题排序在 php 中很重要而在 .NET 中无关紧要?
  • 我在 java 中遇到了同样的错误。当我重新启动服务器时,会生成新的访问令牌。
猜你喜欢
  • 2013-09-01
  • 2013-11-30
  • 2014-09-10
  • 2018-01-13
  • 2017-12-02
  • 2013-04-17
  • 2011-10-10
  • 2011-09-06
  • 2018-06-18
相关资源
最近更新 更多