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

Php Laravel 8-在线支付przelewy24网关实现,php,laravel,payment-gateway,laravel-8,Php,Laravel,Payment Gateway,Laravel 8,我想在我的项目中实现在线支付。我使用波兰的Przelewy24网关 对于Laravel 8,我选择了在这里工作的插件: 我正在努力解决的错误是来自网关的关于是否收到或预订了传输的反馈 我联系了Przelewy24技术支持,并收到了他们的回复,他们在日志中获得了以下信息: [responseBody]=>重定向到“/登录” 重定向为“/登录”。 [httpResponseCode]=>302 我尝试了很多方法,但不幸的是没有任何结果。 以下代码已更改多次 后端 -- web.php -- Ro

我想在我的项目中实现在线支付。我使用波兰的Przelewy24网关

对于Laravel 8,我选择了在这里工作的插件:

我正在努力解决的错误是来自网关的关于是否收到或预订了传输的反馈

我联系了Przelewy24技术支持,并收到了他们的回复,他们在日志中获得了以下信息:

[responseBody]=>重定向到“/登录” 重定向为“/登录”。 [httpResponseCode]=>302

我尝试了很多方法,但不幸的是没有任何结果。 以下代码已更改多次

后端

-- web.php --

Route::post('/order_status', 'Payment_Controller@order_status')->name('order_status');
Auth::routes([ 'verify' => true ]);
...
...
Route::get('/orderPaymentMethods/', 'Payment_Controller@paymentMethods')->name('orderPayments_paymentMethods');
Route::get('/order-success', 'Payment_Controller@order_success')->name('order_success'); 
-- cartPage_paymentMethod.blade.php --

<html>
...
...
@php
  /** PAYMENT */

$transaction = new App\Http\Controllers\Payment_Controller();
$sessionId = $transaction->set_sessionId();
$create_trans = $transaction->create_transaction();
$transaction_url = '';
if(is_string($create_trans))
    echo $create_trans;
else
    $transaction_url = $create_trans->redirectUrl();

@endphp

<form method="post" action="{{$transaction_url}}">
    @csrf
    <button class="btn btn-primary">{{__('labels.toPayment')}}</button>
</form>
前端

-- web.php --

Route::post('/order_status', 'Payment_Controller@order_status')->name('order_status');
Auth::routes([ 'verify' => true ]);
...
...
Route::get('/orderPaymentMethods/', 'Payment_Controller@paymentMethods')->name('orderPayments_paymentMethods');
Route::get('/order-success', 'Payment_Controller@order_success')->name('order_success'); 
-- cartPage_paymentMethod.blade.php --

<html>
...
...
@php
  /** PAYMENT */

$transaction = new App\Http\Controllers\Payment_Controller();
$sessionId = $transaction->set_sessionId();
$create_trans = $transaction->create_transaction();
$transaction_url = '';
if(is_string($create_trans))
    echo $create_trans;
else
    $transaction_url = $create_trans->redirectUrl();

@endphp

<form method="post" action="{{$transaction_url}}">
    @csrf
    <button class="btn btn-primary">{{__('labels.toPayment')}}</button>
</form>
--cartPage\u paymentMethod.blade.php--
...
...
@php
/**付款*/
$transaction=new App\Http\Controllers\Payment\u Controller();
$sessionId=$transaction->set_sessionId();
$create_trans=$transaction->create_transaction();
$transaction_url='';
if(is_string($create_trans))
echo$create_trans;
其他的
$transaction_url=$create_trans->redirectUrl();
@endphp
@csrf
{{{('labels.toPayment')}
--order_success.blade.php--//
@节(“内容”)
等待付款。。。
-
@推送('custom-js')
$(文档).ready(函数(){
setTimeout(函数(){
$.ajaxSetup({
标题:{
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
“缓存控制”:“无缓存”,
“X-request-With”:“XMLHttpRequest”,
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
},
});
$.ajax({
类型:“POST”,
url:{{route('order_status')}}},
数据类型:“JSON”,
标题:{
},
processData:false,
成功:功能(resp){
控制台日志(resp);
$('#response').html(resp);
},
错误:函数(xhr){
console.log(xhr);
}
})
}, 1000)
})
@端推
@端部
我认为laravel可能存在不允许外部脚本的问题,或者它“尝试”强制脚本登录(即重定向到登录页面),但我认为“订单状态”用户不必登录

尚未对数据库进行读/写操作。这是我将遵循的下一步,因为上面的代码最终开始正常工作。我已经挣扎了两周了。。。所以请。救命啊

问题是: [responseBody]=>重定向到“/login”重定向为“/login”。[httpResponseCode]=>302

看起来您的Laravel应用程序需要此URL的授权。不应该。检查控制器文件的请求。如果它有这样的东西:

public function __construct()
{
    $this->middleware('auth');
}

删除它以获得订单成功方法。或者只为回调创建另一个控制器,而不使用身份验证中间件。

首先猜测路由是受身份验证保护的,但它似乎不像前面提到的那样

`“订单状态”在我看来,用户不必登录

仔细检查路由的中间件以确保那里没有身份验证。如果没有帮助,我建议使用监视包来查看到底发生了什么

我相信这会给你足够的数据来解决这个问题

更新


订单状态路由位于web中间件中,受csrf保护。所以,解决方案是将其从csrf保护中排除,正如前面解释的那样

我安装了望远镜,并且有重定向到/login页面,但我找不到原因。我检查了此请求/响应的所有日志,但未发现任何内容。如果您可以检查,我可以在这里发送图像。我检查了“有效负载”选项卡,可以看到所有从支付网关发送的支付数据,因此信息可以正确发送,但在“响应”选项卡中,我可以看到信息:重定向到/login实际我安装了该软件包,但无法尝试。我没有有效的商户id来启动流程。在望远镜中,请求详细信息,有一个中间件行。里面有auth吗?如果是,请查找应用的位置,或者在路由中添加不带中间件的中间件可能会有所帮助。此外,在order\u status方法中,您有,$this->checkCart(),您确定该方法中没有身份验证签入吗?你为什么需要它?你能给我你的电子邮件吗?我可以向您发送IDs数据。此类中没有
\u构造
中间件
。我甚至创建了一个新的,但有相同的“错误”