Ответить Новая тема Новый опрос 
 Алгоритм автоматической ситемы оплаты
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, спасибо, конечно, только я говорил совсем о другом.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос