Например страница заказа /checkout - почему эта страница не привязана к номеру заказа, например не /checkout/88. Или номер заказа в сессии хранится?
Существуют запросы GET,
существуют запросы POST
И да, еще есть сессии.
Смысла в
/checkout/88
нет - так как это разовая операция и нет необходимости иметь возможность попасть туда по ссылке когда угодно (что обеспечивает GET)
А также непонятно как сформировать данные заказа перед отправкой на платёжный сервис. К примеру я беру данные из корзины перед отправкой. Но мне же надо ещё и очистить эту корзину. Значит к примеру если перед отправкой данных пользователь решит обновить страницу, то данных не будет так как корзина уже очищена.
То, что пользователь ушел на платежный сервис, не означает, что он оплатил.
У него мог быть сбой по оплате (например, на этой карте нет денег) и вам нужно еще раз отправить его на платежный сервис.
Или он решил оплатить другим методом и вам нужно отправить его на платежный сервис иначе.
Или он решил добавить еще товара.
А вы в это время очистили уже корзину и потеряли тем самым клиента с большой вероятностью
Платежные сервисы уведомляют об оплате заказа, зачастую.
Вот тогда корзину и нужно очищать.