PayPal Rest API 在切换到 Live Credentials 时出现 401 错误
Posted
技术标签:
【中文标题】PayPal Rest API 在切换到 Live Credentials 时出现 401 错误【英文标题】:PayPal Rest API gives 401 error when switched to Live Credentials 【发布时间】:2013-07-20 21:22:06 【问题描述】:我正在创建一个小型网站,在其中实现了 PayPal REST API 来处理信用卡结账。
现在的问题是使用 Sandbox Credentials 可以正常工作...但是当我切换到 Live Credentials 时会出现以下错误:
致命错误:访问https://api.paypal.com/v1/payments/payment 时未捕获异常“PayPal\Exception\PPConnectionException”,消息“得到 Http 响应代码 401”。重试0次。在 C:\xampp\htdocs\rest_api_sdk_php\sample\vendor\paypal\sdk-core-php\lib\PayPal\Core\PPHttpConnection.php:99 堆栈跟踪:#0 C:\xampp\htdocs\rest_api_sdk_php\sample\vendor \paypal\sdk-core-php\lib\PayPal\Transport\PPRESTCall.php(44): PayPal\Core\PPHttpConnection->execute('"intent":"sale...') #1 C:\xampp \htdocs\rest_api_sdk_php\sample\vendor\paypal\rest-api-sdk-php\lib\PayPal\Api\Payment.php(246): PayPal\Transport\PPRESTCall->execute(Array, '/v1/payments/pa ...', 'POST', '"intent":"sale...') #2 C:\xampp\htdocs\rest_api_sdk_php\sample\payments\CreatePayment.php(89): PayPal\Api\Payment- >create(Object(PayPal\Rest\ApiContext)) #3 main 在 C:\xampp\htdocs\rest_api_sdk_php\sample\vendor\paypal\sdk-core-php\lib\PayPal\Core\PPHttpConnection.php 中抛出第 99 行
坦率地说,我不知道是什么导致了这个错误。切换到 PayPal Live 时,我在两个地方进行了更改。即
“bootstrap.php”中的第一个:
$apiContext = new ApiContext(new OAuthTokenCredential(
'<Live Client ID>',
'<Live Secret>'));
提供 Live Client-ID 和 Secret。我进行更改的另一个文件是“sdk_config.ini”:
;Service Configuration
[Service]
mode=live ; can be set to sandbox / live
将“模式”从“沙盒”更改为“实时”
是否还有其他文件需要我进行更改?
【问题讨论】:
您能否确认它实际上是在尝试访问正确的 Live 端点? @PayPal_Patrick 我不知道如何确认?你能指导我吗? @PayPal_Patrick 我在日志文件中得到了这个:PayPal\Core\PPHttpConnection: Connecting to https://api.paypal.com/v1/payments/payment
。所以,我猜它正在访问正确的 Live EndPoint。
@PayPal_Patrick 你能指导我 401 错误的主要可能性是什么?
@PayPal_Patrick 感谢好友!我已经解决了这个问题。事实上,问题不在我这边。我做的一切都是正确的。客户没有启用她的真实账户,这就是为什么我无法使用实时凭证发出付款请求。无论如何,感谢您的帮助!
【参考方案1】:
我遇到了同样的问题然后得到了解决方案。
您必须将模式从sandbox
更改为live
,并将log.LogLevel
从DEBUG
更改为FINE
:
/* Sandbox */
$apiContext->setConfig(
array(
'mode' => 'sandbox',
'log.LogEnabled' => true,
'log.FileName' => '../PayPal.log',
'log.LogLevel' => 'DEBUG', // PLEASE USE FINE LEVEL FOR LOGGING IN LIVE ENVIRONMENTS
'cache.enabled' => true,
// 'http.CURLOPT_CONNECTTIMEOUT' => 30
// 'http.headers.PayPal-Partner-Attribution-Id' => '123123123'
)
);
/* For Live */
$apiContext->setConfig(
array(
'mode' => 'live',
'log.LogEnabled' => true,
'log.FileName' => '../PayPal.log',
'log.LogLevel' => 'FINE', // PLEASE USE FINE LEVEL FOR LOGGING IN LIVE ENVIRONMENTS
'cache.enabled' => true,
// 'http.CURLOPT_CONNECTTIMEOUT' => 30
// 'http.headers.PayPal-Partner-Attribution-Id' => '123123123'
)
);
【讨论】:
【参考方案2】:cmets 的回答 - @PayPal_Patrick 感谢好友!我已经解决了这个问题。
事实上,问题不在我这边。我做的一切都是正确的。
客户没有启用她的真实帐户,这就是我无法使用实时凭据发出付款请求的原因。无论如何,感谢您的帮助!
【讨论】:
以上是关于PayPal Rest API 在切换到 Live Credentials 时出现 401 错误的主要内容,如果未能解决你的问题,请参考以下文章
PayPal - 使用 REST API 从沙盒切换到真实账户
使用 Paypal 上线 - REST API 应用程序和 CLASSIC API 应用程序之间的区别?