切换到Live Credentials时,PayPal Rest API会出现401错误

时间:2013-07-22 07:59:15

标签: php api rest paypal

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

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

  

致命错误:未捕获异常'PayPal \ Exception \ PPConnectionException',并在访问https://api.paypal.com/v1/payments/payment时收到消息'获取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->执行('{“意图”:“销售......”)#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 \付款 - >创建(对象(PayPal \ Rest \ ApiContext))#3 {main}抛出C:\ xampp \ htdocs \ rest_api_sdk_php \ sample \ vendor \ paypal \ sdk-core-php \ lib \ PayPal \ Core \ PPHttpConnection第99行的.php

坦率地说,我不知道是什么导致了这个错误。切换到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 

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

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

2 个答案:

答案 0 :(得分:3)

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

您必须将模式从sandbox更改为live,将log.LogLevelDEBUG更改为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'
    )
);

答案 1 :(得分:2)

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

事实上,问题不在我身边。我正在做正确的事。

客户未启用其真实帐户,这就是我无法使用Live Credentials发出付款请求的原因。无论如何,感谢你的帮助!

相关问题