Электронные платежи, защититься от глупости пользователя
От: another_coder Россия  
Дата: 11.04.14 06:44
Оценка:
Хочется понять в принципе, как решить такую проблему:
— пользователь переходит на сайт платежной системы
— оплачивает там
— умудряется закрыть страницу основного сайта в момент, когда данные еще не получены из сервиса платежей (например, тормозная линия или инет отрубился как раз в момент когда данные ушли в сервис, а обратно не попали)

Основной вопрос: как все-таки убедиться/проверить/отметить, что платеж был сделан?

Интересно, есть ли какой-то общий подход к решению? Если нет, то PayPal и Google интересуют в основном. Но вообще систем много и хотелось бы решить в принципе проблему.
billing e-commerce
Re: Электронные платежи, защититься от глупости пользователя
От: Cyberax Марс  
Дата: 17.04.14 23:58
Оценка: +1
Здравствуйте, another_coder, Вы писали:

_>Основной вопрос: как все-таки убедиться/проверить/отметить, что платеж был сделан?

_>Интересно, есть ли какой-то общий подход к решению? Если нет, то PayPal и Google интересуют в основном.
Конечно. Все платёжные системы умеют вызывать специальный callback по завершению оплаты. Собственно, именно он и должен отмечать транзакцию как завершённую, а не переход пользователя на финальную страницу.
Sapienti sat!
Re[2]: Электронные платежи, защититься от глупости пользователя
От: another_coder Россия  
Дата: 18.04.14 03:22
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, another_coder, Вы писали:


_>>Основной вопрос: как все-таки убедиться/проверить/отметить, что платеж был сделан?

_>>Интересно, есть ли какой-то общий подход к решению? Если нет, то PayPal и Google интересуют в основном.
C>Конечно. Все платёжные системы умеют вызывать специальный callback по завершению оплаты. Собственно, именно он и должен отмечать транзакцию как завершённую, а не переход пользователя на финальную страницу.

На нашей стороне упал ресурс и калбек негде вызывать. Даже если в браузере он сработает, то на этом все и ограничивается. С этим как быть?

В Paypal есть двойная проверка на этот случай. Но если такого нет?
Re[3]: Электронные платежи, защититься от глупости пользователя
От: Cyberax Марс  
Дата: 18.04.14 05:11
Оценка:
Здравствуйте, another_coder, Вы писали:

C>>Конечно. Все платёжные системы умеют вызывать специальный callback по завершению оплаты. Собственно, именно он и должен отмечать транзакцию как завершённую, а не переход пользователя на финальную страницу.

_>На нашей стороне упал ресурс и калбек негде вызывать.
Сработает, когда ваш сервер поднимется, или это будет исключительная ситуация, требующая ручной обработки. Ещё в ряде процессинговых систем платёж не проводится окончательно, пока не вернулся callback.

_>Даже если в браузере он сработает, то на этом все и ограничивается. С этим как быть?

Причём тут вообще браузер? Callback об оплате делается серверным кодом на стороне процессора платежей, в браузер пользователя он не попадает никак.
Sapienti sat!
Re[3]: Электронные платежи, защититься от глупости пользователя
От: Степанов Андрей  
Дата: 09.07.20 12:18
Оценка:
Здравствуйте, another_coder, Вы писали:

_>Здравствуйте, Cyberax, Вы писали:


C>>Здравствуйте, another_coder, Вы писали:


_>>>Основной вопрос: как все-таки убедиться/проверить/отметить, что платеж был сделан?

_>>>Интересно, есть ли какой-то общий подход к решению? Если нет, то PayPal и Google интересуют в основном.
C>>Конечно. Все платёжные системы умеют вызывать специальный callback по завершению оплаты. Собственно, именно он и должен отмечать транзакцию как завершённую, а не переход пользователя на финальную страницу.

_>На нашей стороне упал ресурс и калбек негде вызывать. Даже если в браузере он сработает, то на этом все и ограничивается. С этим как быть?


_>В Paypal есть двойная проверка на этот случай. Но если такого нет?


Практически все платёжные системы решают проблему аж тремя способами одновременно:
1) Перед оплатой вы сами передаёте номер транзакции платёжному шлюзу. Что бы ни случилось, в какой бы момент что ни упало, вы можете запросить статус транзакции по этому номеру. Может быть вам придётся реализовывать фоновую службу, которая будет обновлять статусы по таким старым подвисшим платежам, но это несложно.
2) Обратный вызов вашего сервера по завершению оплаты. Как правило, вам шлётся некий HTTP запрос со статусом оплаты.
3) Переход на страницу вашего сайта по завершению оплаты. Как правило, в этот момент так же передаётся статус оплаты.
Re[3]: Электронные платежи, защититься от глупости пользователя
От: Слава  
Дата: 09.07.20 12:24
Оценка:
Здравствуйте, another_coder, Вы писали:

_>На нашей стороне упал ресурс и калбек негде вызывать. Даже если в браузере он сработает, то на этом все и ограничивается. С этим как быть?


Во-первых, callback — это уведомление об изменении статуса платежа, но не сам платёж. Состояние платежа "успешен/не успешен/..." можно проверять хоть с помощью опроса. У платежа есть номер на вашей стороне, и на стороне того, кто проводит платёж, всё это можно сопоставить.

Далее, callback'и могут вызываться несколько раз, с экспоненциальной задержкой. Поди уж поднимется ваш ресурс, если он упал. И вообще, у того вашего ресурса работа минимальная — принять сигнал и положить в очередь, чему тут падать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.