laravel 中的 Paypal 集成在获取付款状态时出错(尽管交易成功)
Posted
技术标签:
【中文标题】laravel 中的 Paypal 集成在获取付款状态时出错(尽管交易成功)【英文标题】:Paypal integration in laravel giving error on get payment status (although transaction becomes successful) 【发布时间】:2021-01-31 15:30:29 【问题描述】:enter image description here
这是我用于获取交易状态的代码....客户端 ID 和密码是相同的,并且从 PayPal 仪表板交易成功,并且此函数中使用的所有变量都不为空,并且这些都是准确的
$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');
【问题讨论】:
看起来像 ``` Session::forget('paypal_payment_id'); $payment = Payment::get(Session::get('paypal_payment_id'), $this->_api_context);``` 是倒退的。你忘记了它,然后试图得到它。删除 session:forget() 并重试。 我已经替换变量但仍然是同样的问题 【参考方案1】:$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
响应的其他可能原因包括:
-
api_context 缺失或无效
api_context 缺少 ClientID 和 Secret
api_context 的 ClientID 和密码错误
为错误环境配置了错误的环境或客户端 ID 和密码(沙盒与实时/生产模式)
您使用的特定客户端 ID 和密码存在问题(生成一个新的 sandbox account,然后为它生成一个新的 sandbox app)
如果您仍然遇到问题,请使用 curl 或 Postman 等其他工具进行测试,然后:
如果可行,请尝试调试您的完整请求和响应,包括标头,以查看您做错了什么 如果其他工具也不起作用,请联系 PayPal 寻求支持【讨论】:
访问api.sandbox.paypal.com/v1/payments/payment/… 时得到 Http 响应代码 400。创建新的沙盒帐户后出现同样的错误...我也在使用邮递员,但直到现在都无法修复400
还是 401?这些是不同的情况。如果是 400,请检查您的请求是否存在问题,并尽可能记录完整的请求和响应
另外,我不明白您为什么要浪费时间将旧的 v1/payments API 与已弃用的 PayPal-php-SDK 集成。将新的 v2/checkout/orders 与当前的 Checkout-PHP/SDK 一起使用,如下所述:developer.paypal.com/docs/checkout/reference/server-integration。您需要两条新的服务器路由,一条用于“设置事务”,一条用于“捕获事务”,然后您可以将其与此审批流程配对:developer.paypal.com/demo/checkout/#/pattern/server
现在我正在使用 srmklive 插件,但我得到这个类 'Srmklive\PayPal\Services\ExpressCheckout' 找不到我已经发布了所有服务以上是关于laravel 中的 Paypal 集成在获取付款状态时出错(尽管交易成功)的主要内容,如果未能解决你的问题,请参考以下文章
使用 paypal/rest-api-sdk-php 的 laravel paypal 集成错误
在 WooCommerce 上获取 Paypal 付款详细信息