【发布时间】:2020-11-29 13:34:44
【问题描述】:
我的项目在“沙盒”模式下完美运行,但是当我将其置于“实时”模式时(我按照 PayPal-PHP-SDK 中的说明正确操作,我的凭据正确,我将模式设置为“ live'而不是模式'sandbox')。 它给了我以下错误:
PayPal \ Exception \ PayPalConnectionException
Got Http response code 401 when accessing https://api.sandbox.paypal.com/v1/oauth2/token.
寻找这个错误通知它发生在其他人身上但它是以下错误:
PayPal \ Exception \ PayPalConnectionException
Got Http response code 401 when accessing https://api.paypal.com/v1/oauth2/token.
如果我有“实时”模式,为什么我的错误会显示沙盒?所以我开始寻找,因为如果我有“实时”模式,我会不断收到 api.sandbox.paypal.com 而不是 api.paypal.com 错误。
并找到供应商 \ paypal \ rest-api-sdk-php \ lib \ PayPal \ Handler \ OauthHandler.php(我从未修改过)有一个 _getEndPoint 方法。
private static function _getEndpoint($config)
{
if (isset($config['oauth.EndPoint'])) {
$baseEndpoint = $config['oauth.EndPoint'];
} elseif (isset($config['service.EndPoint'])) {
$baseEndpoint = $config['service.EndPoint'];
} elseif (isset($config['mode'])) {
switch (strtoupper($config['mode'])) {
case 'SANDBOX':
$baseEndpoint = PayPalConstants::REST_SANDBOX_ENDPOINT;
break;
case 'LIVE':
$baseEndpoint = PayPalConstants::REST_LIVE_ENDPOINT;
break;
default:
throw new PayPalConfigurationException('The mode config parameter must be set to either sandbox/live');
}
} else {
// Defaulting to Sandbox
$baseEndpoint = PayPalConstants::REST_SANDBOX_ENDPOINT;
}
$baseEndpoint = rtrim(trim($baseEndpoint), '/') . "/v1/oauth2/token";
return $baseEndpoint;
}
我注意到配置在该部分始终为空,当它为空时,默认情况下会进入案例 这是沙盒。这就是为什么 sandobox 对我有用,即使什么也没有发生。 知道为什么会发生这种情况。我真的不知道,欢迎任何帮助。
【问题讨论】: