Алгоритм автоматической ситемы оплаты
apaex
Новичок
: 16
: 29-04-2011


15-08-2011 02:46
Коллеги, подскажите, как правильно построить такую схему.

Есть автоматизированная система оплаты, которая получает номер заказа в параметрах запроса к серверу при выставлении счёта. Но чтобы номер заказа был, нужно его сначала создать, вызвав validateOrder(). Теперь, если запрос к серверу закончится ошибкой, то заказ остаётся в базе магазина. Можно, конечно, вызвать delete, но validateOrder() отправит клиенту письмо о успешном принятии заказа, что породит путаницу.

Как я понимаю, нужно сначала делать запрос к серверу, а потом вызывать validateOrder(), если всё прошло удачно. Но где взять номер заказа для запроса? Номер нужен правильный, т.к. по нему ориентируется клиент при оплате.

Как это делается по уму?

 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


15-08-2011 09:29
Меняйте статус "Заказ принят" _PS_OS_PREPARATION_
Код:
validateOrder((int)$cart->id, _PS_OS_PREPARATION_,...
 
  
ors
Профессионал
: 1885
: 09-11-2009


15-08-2011 11:39
Используйте номер корзины
 
  
apaex
Новичок
: 16
: 29-04-2011


15-08-2011 12:21
Алекс, не понял идеи. При ошибке запроса к серверу заказ окажется в магазине в состоянии "принят", при этом пользователю всё равно придет сообщение, что он успешно принят. Поясните, пожалуйста.

ors, думал так сделать, но оставил это на крайнюю меру. Нужно, чтобы в комментарии заказа было написано "Оплата заказа №123", по этому номеру ориентируется пользователь и я ориентируюсь, когда смотрю оплаченные счета на сайте системы.
 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


15-08-2011 13:31
Другого способа нет, проверяйте статус запроса на ошибки и отдавайте "заказ принят".

Что за чудо "автоматизированная система оплаты"?
 
  
apaex
Новичок
: 16
: 29-04-2011


15-08-2011 13:44
Алекс, в каком статусе, тогда, создавать заказ перед отсылкой запроса? Не создав заказ, я не могу сформировать запрос с правильным коментарием ("Оплата заказа №ххх)

Да любая, QIWI например. Вот в QIWI, что у ors-а на сайте - телефон неправильно ввёл, запрос не прошел - заказ удалился, а в почту пришло сообщение, что заказ принят.
 
  
Алекс


Администратор
: 4516
: Красноярск
: 29-05-2009


15-08-2011 14:17
Цитата:( apaex @ 15-08-2011 14:44 Смотреть сообщение )
Алекс, в каком статусе, тогда, создавать заказ перед отсылкой запроса? Не создав заказ, я не могу сформировать запрос с правильным коментарием ("Оплата заказа №ххх)

"Заказ принят" или любой другой в ПУ можно создать свой статус.

Код:
$paymodule->validateOrder((int)$cart->id, _PS_OS_PREPARATION_, $amount, $paymodule->displayName, $message, NULL, NULL, false, $customer->secure_key);



Цитата:( apaex @ 15-08-2011 14:44 Смотреть сообщение )
Да любая, QIWI например. Вот в QIWI, что у ors-а на сайте - телефон неправильно ввёл, запрос не прошел - заказ удалился, а в почту пришло сообщение, что заказ принят.


Проверяйте данные перед отправкой на сервер.
 
  
ors
Профессионал
: 1885
: 09-11-2009


15-08-2011 16:28
1. При нажатии кнопки оплаты в магазине создаете заказ со статусом "Принят"
2. После оплаты заказа переводите его в статус "Оплачен"

Чтобы при создании заказа письмо не отправлялось правьте класс PaymentModule
 
  
apaex
Новичок
: 16
: 29-04-2011


15-08-2011 22:01
ors, спасибо, конечно, только я говорил совсем о другом.