未收到通知回调
Notification callback is not being received
我正在使用这个 laravel 包“https://github.com/kanazaca/easypay”通过 Easypay API 创建 MB 引用。
我有这个方法来创建引用:
public function generateReference()
{
$amount = Session::get('total');
$payment_info = [
't_value' => $amount,
'o_obs' => '',
't_key' => 1
];
$easypay = new EasyPay($payment_info);
$reference = $easypay->createReference();
Session::put('entity', $reference['ep_entity']);
Session::put('reference', $reference['ep_reference']);
Session::put('value', $reference['ep_value']);
}
并且它与此代码一起工作正常我得到了一些可以使用 MB 或信用卡支付的参考代码。
然后,当付款完成时,easypay 将调用 "Notification URL"。
我们应该在 "URL Configurations" 下的 easypay 后台进行配置。
因为当 easypay 服务收到付款时,他们会调用我们提供的 URL。所以我在easypay的后台定义了一个url,并在项目中创建了一个路由:
Route::get('/easypay/notification-callback', [
'uses' => 'PaymentController@receiveNotifications',
'as' =>'mb.notifications'
]);
在 api 后台有一个模拟支付的按钮,点击这个按钮后没有任何反应,如果我手动访问“http://....ngrok.io/easypay/notification-callback
”,它显示一个空数组:
[]
但是在文档中 (https://docs.easypay.pt/workflow/payment-notification) 说当 Easypay 调用这个端点时,它带有几个参数:"ep_cin"、"ep_user" 和 "ep_doc"过程中是必要的。所以它不应该出现一个空数组。
您知道可能是什么问题吗?我是使用 API 的初学者,所以我不明白问题出在哪里。
PaymentController receiveNotifications()
方法:
public function receiveNotifications(Request $request)
{
dd($request->all());
//$easypay = new EasyPay($payment_info);
//$xml = $easypay->processPaymentInfo();
//return \Response::make($xml, '200')->header('Content-Type', 'text/xml'); //must return in text/xml for easypay
}
receiveNotifications() 方法与日志:
public function receiveNotifications(Request $request)
{
//dd($request->all());
Log::info('Showing info: ' .var_export($request->all(),true));
$payment_info = [
'ep_cin' => $request->ep_cin,
'ep_user' => $request->ep_user,
'ep_doc' => $request->ep_doc
];
Log::info('Showing info: ' .var_export($payment_info,true));
//dd($payment_info);
$easypay = new EasyPay($payment_info);
$xml = $easypay->processPaymentInfo();
return \Response::make($xml, '200')->header('Content-Type', 'text/xml'); //must return in text/xml for easypay
}
会话保存在访问您的网站并发起付款的用户的会话文件中。
如果您在那里做任何事情,receiveNotifications 会调用属于支付网关服务器的会话文件中的数据。数据不匹配,因为两者互不认识。
此外,您的请求处理中可能没有 Session::save()
将会话数据写入文件的地方。
将引用存储在数据库中。创建一个模型来存储这些数据,这样您就可以在该模型中查询 verify/do 东西的正确参考 ID。
当请求从支付网关返回时,使用变量 ep_cin、ep_user 和 ep_doc 从模型中获取数据。
当您手动请求该数据时,您是通过 GET 请求请求它的,该请求不会一起发送上述数据。
支付提供商发出的请求将获得 DD 的结果,但没有记录在任何地方,所以什么也没有发生。
Log your data 由远程 api 触发的请求,看看会发生什么。
我正在使用这个 laravel 包“https://github.com/kanazaca/easypay”通过 Easypay API 创建 MB 引用。
我有这个方法来创建引用:
public function generateReference()
{
$amount = Session::get('total');
$payment_info = [
't_value' => $amount,
'o_obs' => '',
't_key' => 1
];
$easypay = new EasyPay($payment_info);
$reference = $easypay->createReference();
Session::put('entity', $reference['ep_entity']);
Session::put('reference', $reference['ep_reference']);
Session::put('value', $reference['ep_value']);
}
并且它与此代码一起工作正常我得到了一些可以使用 MB 或信用卡支付的参考代码。
然后,当付款完成时,easypay 将调用 "Notification URL"。 我们应该在 "URL Configurations" 下的 easypay 后台进行配置。 因为当 easypay 服务收到付款时,他们会调用我们提供的 URL。所以我在easypay的后台定义了一个url,并在项目中创建了一个路由:
Route::get('/easypay/notification-callback', [
'uses' => 'PaymentController@receiveNotifications',
'as' =>'mb.notifications'
]);
在 api 后台有一个模拟支付的按钮,点击这个按钮后没有任何反应,如果我手动访问“http://....ngrok.io/easypay/notification-callback
”,它显示一个空数组:
[]
但是在文档中 (https://docs.easypay.pt/workflow/payment-notification) 说当 Easypay 调用这个端点时,它带有几个参数:"ep_cin"、"ep_user" 和 "ep_doc"过程中是必要的。所以它不应该出现一个空数组。
您知道可能是什么问题吗?我是使用 API 的初学者,所以我不明白问题出在哪里。
PaymentController receiveNotifications()
方法:
public function receiveNotifications(Request $request)
{
dd($request->all());
//$easypay = new EasyPay($payment_info);
//$xml = $easypay->processPaymentInfo();
//return \Response::make($xml, '200')->header('Content-Type', 'text/xml'); //must return in text/xml for easypay
}
receiveNotifications() 方法与日志:
public function receiveNotifications(Request $request)
{
//dd($request->all());
Log::info('Showing info: ' .var_export($request->all(),true));
$payment_info = [
'ep_cin' => $request->ep_cin,
'ep_user' => $request->ep_user,
'ep_doc' => $request->ep_doc
];
Log::info('Showing info: ' .var_export($payment_info,true));
//dd($payment_info);
$easypay = new EasyPay($payment_info);
$xml = $easypay->processPaymentInfo();
return \Response::make($xml, '200')->header('Content-Type', 'text/xml'); //must return in text/xml for easypay
}
会话保存在访问您的网站并发起付款的用户的会话文件中。
如果您在那里做任何事情,receiveNotifications 会调用属于支付网关服务器的会话文件中的数据。数据不匹配,因为两者互不认识。
此外,您的请求处理中可能没有 Session::save()
将会话数据写入文件的地方。
将引用存储在数据库中。创建一个模型来存储这些数据,这样您就可以在该模型中查询 verify/do 东西的正确参考 ID。
当请求从支付网关返回时,使用变量 ep_cin、ep_user 和 ep_doc 从模型中获取数据。
当您手动请求该数据时,您是通过 GET 请求请求它的,该请求不会一起发送上述数据。
支付提供商发出的请求将获得 DD 的结果,但没有记录在任何地方,所以什么也没有发生。
Log your data 由远程 api 触发的请求,看看会发生什么。