2017-03-20 23 views
0

尝试使用Braintree创建事务时出现以下错误。在沙盒中,它工作正常。我的服务器是带有SSL(TLS 1.2)的负载均衡器的AWS Beanstalk设置。Braintree Sale Error(PHP)

下面是从error_log中的错误:

[Mon Mar 20 11:32:31.816499 2017] [:error] [pid 11335] [client XX] PHP Fatal error: Uncaught Braintree\\Exception\\Authorization in /var/app/current/scripts/lib/Braintree/Util.php:61\nStack trace:\n#0 /var/app/current/scripts/lib/Braintree/Http.php(47): Braintree\\Util::throwStatusCodeException(403)\n#1 /var/app/current/scripts/lib/Braintree/TransactionGateway.php(477): Braintree\\Http->post('/merchants/jtd9...', Array)\n#2 /var/app/current/scripts/lib/Braintree/TransactionGateway.php(49): Braintree\\TransactionGateway->_doCreate('/transactions', Array)\n#3 /var/app/current/scripts/lib/Braintree/TransactionGateway.php(289): Braintree\\TransactionGateway->create(Array)\n#4 /var/app/current/scripts/lib/Braintree/Transaction.php(502): Braintree\\TransactionGateway->sale(Array)\n#5 /var/app/current/ajax/add_points.php(23): Braintree\\Transaction::sale(Array)\n#6 {main}\n thrown in /var/app/current/scripts/lib/Braintree/Util.php on line 61, referer: https://XX.com/dashboard 

下面是实际的服务器端的PHP代码:

require_once('../scripts/lib/Braintree.php'); 
Braintree_Configuration::environment('production'); 
Braintree_Configuration::merchantId('xx'); 
Braintree_Configuration::publicKey('xx'); 
Braintree_Configuration::privateKey('xx'); 
$pym = $_POST["payment_method_nonce"]; 
$points = 10*1.5; 

     $result = Braintree_Transaction::sale([ 
      'amount' => $points, 
      'currency' => 'EUR', 
      'paymentMethodNonce' => $pym, 
      'options' => [ 
       'submitForSettlement' => true 
      ] 
     ]); 

上面的代码的销售::部分是什么给了我上面的错误。我尝试做一个退出();在包含Braintree.php文件和所有配置选项后,它会按预期退出,因此错误肯定是由:: sale部分代码造成的。

所有在Sandbox中正常工作,并且nonce似乎正确生成客户端,然后发送。

我甚至不知道从哪里开始调试。任何建议都会有帮助!

+0

braintree的东西是,当你把它放在生产模式中时,你需要从头开始在沙盒中执行所有的事情(即以编程方式创建商家帐户等)以继续交易。你跟着这个吗? –

+0

是的 - 它看起来像授权正在通过(API密钥是好的,工作)。当我没有正确设置这些键时,错误显然告诉了我。现在,它看起来像我面临一个不同的问题:/ –

+0

是的..检查您的商家ID ..应该在您的生产模式中生成,并在您进行交易时使用它,所有的东西应该在生产模式下生成。如果有任何问题,请告知我。 –

回答

0

事实证明,我的客户端应用程序已被拒绝。这里

关键术语是授权 - 这比认证(其涉及API键,那是正确的)不同。