【问题标题】:Laravel Paypal SandBox to LiveLaravel Paypal 沙盒直播
【发布时间】: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 对我有用,即使什么也没有发生。 知道为什么会发生这种情况。我真的不知道,欢迎任何帮助。

【问题讨论】:

    标签: laravel paypal


    【解决方案1】:

    我认为您需要该 SDK 配置的“生产”模式

    但您使用的是已弃用且不再维护的 v1 SDK

    您应该使用 v2 Checkout-PHP-SDK,记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/


    顺便说一句,与之配对的最佳 UI 审批流程在这里:https://developer.paypal.com/demo/checkout/#/pattern/server

    【讨论】:

    • 谢谢普雷斯顿,我稍后会看,但首先我想知道为什么这不起作用。有什么想法吗?
    【解决方案2】:

    我有一个解决方案,它不是一个非常优雅的解决方案,但它对我有用。在 vendor\paypal\rest-api-sdk-php\lib\PayPal\Core\PayPalsConstants.php 中,将变量 REST_SANDBOX_ENDPOINT 从“http://api.sandbox.paypal.com”更改为“http ://api.paypal.com"

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 2012-08-25
      • 2016-11-17
      • 2020-03-29
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多