6

我正在创建一个小型网站,在其中实现了 PayPal REST API 来处理信用卡结账。

现在的问题是它使用 Sandbox Credentials 工作正常......但是当我切换到 Live Credentials 时它会出现以下错误:

致命错误:访问https://api.paypal.com/v1/payments/payment时未捕获异常 'PayPal\Exception\PPConnectionException' 并带有消息 'Got 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 时,我在两个地方进行了更改。IE

“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 

将“模式”从“沙盒”更改为“实时”

是否还有其他文件需要我进行更改?

4

2 回答 2

4

我面临同样的问题然后得到了解决方案。

您必须将模式从sandboxtolivelog.LogLevelfrom DEBUGto更改为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'
    )
);
于 2015-11-04T12:43:43.933 回答
2

从评论中回答- @PayPal_Patrick Thanx 伙计!我已经解决了这个问题。

事实上,问题不在我这边。我做的一切都是正确的。

客户没有启用她的真实账户,这就是我无法使用实时凭据提出付款请求的原因。无论如何,谢谢您的帮助!

于 2013-10-30T18:40:05.733 回答