laravel中的贝宝(Paypal)集成给出了获取付款状态的错误(尽管交易成功)

时间:2020-10-17 08:33:41

标签: php laravel api paypal

enter image description here

我用于获取交易状态的代码。...客户端ID和机密相同,并且在PayPal仪表板中交易成功,并且此函数中使用的所有变量都不为空,并且这些都是准确的< / p>

 $paymentId  = Session::get('paypal_payment_id');
 /** clear the session payment ID **/
 Session::forget('paypal_payment_id');
 $payment = Payment::get($paymentId, $this->_api_context);
 $execution = new PaymentExecution();
 $payer_id=$request->input('PayerID');
 $execution->setPayerId($payer_id);
  $result = $payment->execute($execution, $this->_api_context);
 if ($result->getState() == 'approved') {
 \Session::put('success', 'Payment success');
             return Redirect::route('success');
 }
 \Session::put('error', 'Payment failed');
         return Redirect::route('failed');

1 个答案:

答案 0 :(得分:0)

$paymentId  = Session::get('paypal_payment_id');
Session::forget('paypal_payment_id');
$payment = Payment::get(Session::get('paypal_payment_id').....

由于您忘记了会话变量,因此最后一行应该是

$payment = Payment::get($paymentId.....

图片中AUTHENTICATION_FAILURE响应的其他可能原因包括:

  1. 缺少或无效的api_context
  2. api_context缺少客户端ID和机密
  3. api_context具有错误的ClientID和机密
  4. 错误的环境配置或错误的环境的客户端ID和密码(沙盒与实时/生产模式)
  5. 与您正在使用的特定客户端ID和密码有关的问题(生成新的sandbox account,然后为其生成新的sandbox app

如果仍然有问题,请使用其他工具(例如curl或Postman)进行测试,并:

  • 如果可行,请尝试调试您的完整请求和响应(包括标头),以查看您做错了什么
  • 如果其他工具也无法使用,请联系PayPal获得支持