laravel 路由中关于处理支付网关响应的问题

Posted

技术标签:

【中文标题】laravel 路由中关于处理支付网关响应的问题【英文标题】:problem in laravel route on tackling the response of payment gateway 【发布时间】:2020-06-02 19:58:14 【问题描述】:

我正在使用 laravel 并集成支付网关。当我发送发布请求然后在成功或取消后,它会像这样重定向参考 ID http://localhost/multi_vendor/user/paypal/return?flwref=FLW-MOCK-d4f7572650fbe61ecff7fb17a7129859&txref=rave-bxw7c98dymo8so0kwosco0wwscs8ogc 那么如何在 laravel 中解决呢?

我为此制定了路线

Route::get('/paypal/return', 'User\PaypalController@payreturn')->name('user.payment.return');

【问题讨论】:

在你的 public function payreturn($request, $request), you can access the query string values via $request->input('flwref)` 和 $request->input('txref') 中。你的问题到底是什么?您还没有真正解释发生了什么问题/遇到了什么问题。 公共函数 payreturn(Request $request) dd($request); 先生,我正在使用公共函数 payreturn(Request $request) dd($request); 处理此响应 但当 url 重定向时,它会显示“哎呀,好像出了点问题。” 启用日志记录...您应该只能在production 中看到该屏幕。将这些设置在您的 .envAPP_ENV=localAPP_DEBUG=true。另外,请确保您通过use Illuminate\Http\Request; 在控制器中导入Request(所有控制器都应该有这个) 感谢您的帮助,但经过大量努力我还没有完成,请查看此视频 【参考方案1】:

你可以像上面写的那样创建一个路由:-

Route::get('/paypal/return', 'User\PaypalController@payreturn')->name('user.payment.return');

然后在 User\PaypalController 控制器方法 payreturn 中,您可以执行以下操作:-

<?php

namespace App\Http\Controllers\User;

use Illuminate\Http\Request;
class PaypalController extends Controller


public function payreturn(Request $request)

//Here you can get the response request values
$ref = $request->flwref;
$TxRef = $request->txref;



【讨论】:

感谢您的帮助先生,正如您所说,我同样采用该程序,但到目前为止它对我不起作用。 Route _______ Route::post('/flutterwave/submit', 'User\PaypalController@process')->name('user.flutterwave.submit'); Route::get('/flutterwave/return', 'User\PaypalController@flutterwave')->name('user.flutterwave.return'); 我的控制器__________________ 我的控制器 _____________ webhookdanish.000webhostapp.com/controller.txt 我的路线 _____________________________ webhookdanish.000webhostapp.com/route.txt【参考方案2】:

我也不太明白你的问题,但让我试试。

可能的约会:

如果您的路线类似于 localhost/multi_vendor/user/paypal/return,您必须在路线文件中表示所有步骤,例如 Route::get('/multi_vendor/user/paypal/return,[...])。如果您已经在使用 somethink like it 或带有前缀的组,请忽略它; 如果你想重定向,你可以在你的控制器或路由文件中使用return redirect('yourCompleteUrl'); 如果您想检索 Tim Lewis 回答的参数,您需要:
    public function payreturn(Request $request)
    
        $flref = $request->input('flref');
        $txref = $request->input('txref');
    

【讨论】:

先生,您说的是对的,但我的问题没有解决请指导我一点webhookdanish.000webhostapp.com/video.htmlwebhookdanish.000webhostapp.com/route.txtwebhookdanish.000webhostapp.com/controller.txt 只是我了解您的流程:public function process(Request $request)... 将使用 curl 代码处理付款;如果成功,它将跳过if(!$transaction-&gt;data &amp;&amp; !$transaction-&gt;data-&gt;link),并在方法的最后一行重定向到先前在$redirect_url = action('User\PaypalController@payreturn');'redirect_url'=&gt;$redirect_url 中设置的url。我对这个流程有误? 如果我没记错的话:我将 /multi_vendor/ 视为您的默认 url 的一部分,并且我在路由中看到了用户组。发生的事情是您没有传播 url 参数。尝试将它们附加到路由: public function payreturn(Request $request) //dd($request); return redirect()->route('user-dashboard',['flwref'=>$request->flwref, 'txref'=>$request->txref])->with('success','供应商账户激活成功地'); 如果对您有帮助,请告诉我。 很难帮助您解决我们不了解您真正的问题。请尝试重新表述您的问题。 我只想获取支付网关返回的get参数【参考方案3】:

@darnish manzoor 只需添加您的 url 回调 rootverto verifycrsf 令牌

如果您的重定向 url 是 /ravecallback,只需添加它,它将停止为您提供不允许的方法

protected $except = [
        '/ravecallback'
  ];

【讨论】:

以上是关于laravel 路由中关于处理支付网关响应的问题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 - 在线支付 przelewy24 网关实现

如何在 laravel 中集成 Paypal 支付网关?

仅针对单一方法删除 csrf 令牌 - Laravel

laravel 5.5中的payhere支付网关集成[关闭]

使用 Laravel Omnipay(mollie 网关)进行支付

终止laravel app不在路由处理程序中并发送响应