Как решить проблему отсутствия информации об успешных платежах по сторонней системе, используемой на моем сайте? - PullRequest
2 голосов
/ 10 апреля 2010

У меня есть подписной веб-сайт, который взаимодействует со сторонней системой для обработки платежей. Шаги для обработки регистрации нового абонента следующие:

  1. Подписчик вводит свои данные в форму подписки и нажимает кнопку отправки.
  2. При условии, что указанные данные верны, в базе данных создается новая запись для хранения этих данных.
  3. Затем подписчик перенаправляется на веб-сайт сторонней системы (аналог PayPal) для обработки платежа.
  4. После успешного завершения платежа сторонний веб-сайт перенаправляет подписчика обратно на наш веб-сайт.
  5. В настоящее время я знаю, что платеж был успешным, поэтому запись в базе данных обновляется, чтобы указать, что платеж был успешно выполнен.

Проблема, с которой я столкнулся довольно часто, заключается в том, что если абонент платит, но не завершает процесс правильно (например, использует браузер, закрывает окно), его / ее запись в базе данных не обновляется этот. Соответственно, я не знаю, заплатил ли он, просто посмотрев запись, и мне нужно дождаться отчета из сторонней системы, чтобы выяснить это.

Как вы решаете эту проблему?

PS. Одной из основных причин сохранения их данных в базе данных до завершения процесса оплаты является то, что они могут вернуться, чтобы завершить платеж, без повторного ввода своих данных. Например, когда их кредитные карты были отклонены сторонней системой, и они должны выяснить это в своем финансовом учреждении, что может занять некоторое время.

1 Ответ

3 голосов
/ 10 апреля 2010

Сторонняя платежная система должна информировать вас об успешной транзакции независимо от того, что делает пользователь.

Например, в PayPal на ваш сервер отправляется IPN (мгновенное уведомление о платеже) в виде данных POST на указанный вами URL-адрес. Затем ваш сервер проверяет с помощью Paypal, что транзакция является подлинной, и, если да, обновляет запись базы данных, чтобы указать, что подписка действительна. В какой-то момент в будущем PayPal может или не может затем перенаправить пользователя обратно на ваш сайт. («Не может» может произойти в таких случаях, как закрытие браузера, нажатие кнопки «Назад» или переход на новый URL-адрес)

Обратите внимание, что этот "разговор" между Paypal и вашим сервером не зависит от сеанса пользователя - это "личный разговор" между вами и PayPal о транзакции этого пользователя.

Очевидно, что возможны сбои связи и сбои сервера, поэтому, если Paypal не получит запрос проверки от вашего сервера немедленно, он будет периодически отправлять повторные попытки на ваш сервер, чтобы убедиться, что транзакция в конечном итоге завершена.

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

P.S. Вполне нормально требовать, чтобы пользователь вошел в систему (и, таким образом, был зарегистрирован в базе данных), прежде чем он начнет какую-либо финансовую транзакцию. Вам необходимо собрать всю необходимую информацию, прежде чем они пойдут на покупку, поскольку после покупки у вас нет возможности гарантировать, что они вернутся к вам для предоставления какой-либо дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...