Сеанс корзины очищается после POST-запроса внешнего платежа. Как перезагрузить корзину при неудачном платеже?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Сеанс корзины очищается после POST-запроса внешнего платежа. Как перезагрузить корзину при неудачном платеже?

Сообщение Anonymous »

Я работаю с Laravel-10.32.1 и пакетом Mindscms/laravelshoppingcart- 2.1, и у меня возникла проблема с сохранением корзины при интеграции внешнего поставщика платежей.
В моем приложении 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»