Первое: оплата и подтверждение
Нужно работать адекватно с подтверждением оплаты
вы когда передаете данные заказа, то вы кодируете данные одним ключем
банк раскодирует и потом кодирует вторым ключем и вы уже при подтвержддении их раскодируете также вторым ключем их и смотрите -- какой заказ подтвердил банк
Все платежки, которые я знаю работают по такому принципу:
- выдаются 2 ключа
- туда отправляете данные -- одним кодируете
- полученные данные вторым раскодируете
- в полученных данных есть номер заказа
Второе: очистка корзины
Очищайте корзину сразу после принятия заказа и записывайте заказ в заказы (что логично)
А оплачен заказ или нет -- другая история, у пользователя в случае ошибки оплаты просто будет не оплаченный заказ
Если нужно что-то напомнить -- напоминайте. У вас, мол, не оплачен заказ, оплатите, пока есть на месте товары