【发布时间】:2020-04-24 03:26:36
【问题描述】:
我在网站上有一个贝宝“智能按钮”支付网关。本地测试的沙盒版本似乎工作得很好,但是一旦我投入生产,支付弹出窗口仍然显示 sandbox.paypal.com/etc
我已确保我在 prod 上的 .env 文件具有以下设置:
APP_ENV = production
and
PAYPAL_MODE = live
(当然还有所有的沙盒和 prod 机密以及客户端 ID。我是否遗漏了这里需要的任何 ID?)
我的配置文件夹中有这个 paypal.php(我正在使用 Laravel):
<?php
/**
* PayPal Setting & API Credentials
*/
if ( env('APP_ENV') == 'local' || env('APP_ENV') == 'staging') {
return array(
'client_id' => env('PAYPAL_SANDBOX_CLIENT_ID'),
'secret' => env('PAYPAL_SANDBOX_SECRET'),
'settings' => array(
'mode' => env('PAYPAL_MODE', 'sandbox'),
'http.ConnectionTimeOut' => 3000,
'log.LogEnabled' => true,
'log.FileName' => storage_path() . '/logs/paypal.log',
'log.LogLevel' => env('PAYPAL_LOG_LEVEL', 'DEBUG'),
),
);
}
if ( env('APP_ENV') == 'production' ) {
return array(
'client_id' => env('PAYPAL_PROD_CLIENT_ID'),
'secret' => env('PAYPAL_PROD_SECRET'),
'settings' => array(
//payment mode, 'sandbox' or 'live'
'mode' => env('PAYPAL_MODE', 'live'),
'http.ConnectionTimeOut' => 3000,
'log.LogEnabled' => true,
'log.FileName' => storage_path() . '/logs/paypal.log',
'log.LogLevel' => env('PAYPAL_LOG_LEVEL', 'DEBUG'),
),
);
}
然后在我处理付款的控制器中,我添加了这个构造。我认为这可能是我做错了什么,因为我不确定我是否在这里遗漏了什么:
public function __construct()
{
/** PayPal api context **/
$paypal_conf = \Config::get('paypal');
$this->_api_context = new ApiContext(new OAuthTokenCredential(
$paypal_conf['client_id'],
$paypal_conf['secret'])
);
$this->_api_context->setConfig($paypal_conf['settings']);
}
我不确定这个问题还可能是由哪里引起的,但请告诉我,我可以添加代码!我正在使用 laravel 和 vuejs 堆栈
有什么想法吗?
【问题讨论】:
-
看看这条评论here!
-
HMM 很有趣,我现在就试试,但是每次我在 prod 和 paypal 更新上重建网站时,我不需要重做这个吗? @Maraboc
-
现在看起来沙盒和该文件中都有常量,我很确定我在配置中做错了什么,不允许网站看到我们正在直播
-
刚试了没啥影响
-
您似乎需要在运行时进行一些更基本的调试和打印值才能找到问题。