В моем приложении Laravel я отправляю общую сумму заказа внешнему поставщику платежей для обработки. Корзина очищается только после успешной оплаты. Однако когда пользователь взаимодействует с формой оплаты (например, нажимая «Назад» или если платеж не проходит), корзина неожиданно очищается.
Внешний поставщик платежей отправляет POST-запрос обратно на мой сервер, и это запускает новый сеанс (вероятно, из-за запроса, поступающего из внешнего источника). Несмотря на то, что я очищаю корзину только после успешной оплаты в контроллере, она исчезает из-за сброса сеанса, вызванного запросом POST, без вызова ::destroy.
$validPayment = $this ->verifyResponse($request);
Код: Выделить всё
// get the basket
$orderId = ltrim($request->ORDER, '0');
$order = Order::find($orderId);
// If borica payment is successful
if ($validPayment) {
// update paid price
$order->amount_paid = $request->AMOUNT;
$order->save();
$this->orderService->finish($order);
$this->orderMailService->sendNotifications($order);
// Cart is destroyed
Cart::destroy();
// redirect to success
return redirect(URL::signedRoute('checkout.success', ['order' => $order->number]));
}
// redirect with errors
$message = '......';
if ($request->has('STATUSMSG')) {
$message = $request->STATUSMSG;
} else {
if (array_key_exists($request->RC, $this->errorMessages)) {
$message = $this->errorMessages[$request->RC];
}
}
// Cart should not be destroyed but it is
// redirect
return redirect()->route('checkout.index')->withErrors([$message]);
Есть ли лучший или более стандартизированный способ обработки сохранения корзины в Laravel при сбросе сеанса, вызванном перенаправлением внешнего поставщика платежей? Мне нужен совет, как избежать потери данных корзины в процессе оплаты.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -cart-on-f
Мобильная версия