PayPal PHP SDK支付在500上崩溃

时间:2017-07-13 10:22:26

标签: php paypal

BSD

您好,我正在使用Paypal PHP SDK与paypal连接。我在共享主机帐户--linux系统。

我已经设置了所有内容,它似乎没问题......但是当它到达$payment->create方法时会产生500错误。

我有什么遗失的吗?另外,我如何检查apiContext是否正在连接?

require __DIR__  . '/sdk/autoload.php';

// requiring SDK uses

$api = new \PayPal\Rest\ApiContext(
        new \PayPal\Auth\OAuthTokenCredential(
            '...',     // ClientID
            '...'      // ClientSecret
        )
);

$api->setConfig([
    'mode' => 'sandbox',
    'http.ConnectionTimeOut' => 30,
    'log.LogEnabled' => false,
    'log.FileName' => '',
    'log.LogLevel' => 'FINE',
    'validation.level' => 'log'
]);

// setting up payer, details, amount, transaction, redirectUrls etc...

$payment->create($api); // crashes on a 500 error

我应该检查托管设置吗?我该如何调试apiContext?

我没有使用作曲家,这是一个问题吗?

还没有找到解决这个问题的方法,任何帮助都会很棒

这是日志导出

这是日志输出 -

[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.sandbox.paypal.com/v1/oauth2/token
[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : DEBUG: Request Headers     : 
[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : DEBUG: Request Data        : grant_type=client_credentials
--------------------------------------------------------------------------------------------------------------------------------

[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : INFO: Response Status  : 0
[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : DEBUG: Response Headers    : 
[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : ERROR: Got Http response code 0 when accessing https://api.sandbox.paypal.com/v1/oauth2/token. 
[24-07-2017 11:15:44] PayPal\Core\PayPalHttpConnection : DEBUG: 

================================================================================================================================

4 个答案:

答案 0 :(得分:1)

我的项目中也有500错误。我的问题与tls问题有关,为了实现pci-dss必须达到1.2。 https://github.com/paypal/TLS-update是PayPal对它的正式声明。也许您的Web服务器也运行在1.0上。

答案 1 :(得分:1)

试试这个:在PayPalHttpConfig.php文件中(位于Paypal/Core)更改

CURLOPT_SSLVERSION => 6,

CURLOPT_SSLVERSION => 1,

答案 2 :(得分:1)

考虑使用HTTPS代理,因此Origin标头在localhost上是http

答案 3 :(得分:1)

有点老的话题了,但是由于我偶然发现了这个话题,所以这就是造成我问题的原因。

付款方式使用openssl_encrypt加密数据。在基于FreeBSD的系统(包括MacOS X Mojave + MacPorts)上使用openssl_encrypt时,在PHP 7.3中对openssl_encrypt的调用失败。

See discussion