Прикручиваем Paypal для оплаты

Одной из самых популярных платежных систем в буржунете является Paypal. Поэтому желающие прикрутить ее к своему сайту для оплаты товаров и услуг встречается очень часто на любом фрилансерском сайте, например, на RentACoder. Но так, как россиянам Paypal разрешает иметь только send only аккаунты, у нас эта платежная система не прижилась.

Сделать кнопку «Buy now» совсем не сложно, это простейшая форма вот такого вида:













Когда пользователь произведет оплату, он будет перенаправлен на URL, указанный в параметре return. После этого Пейпал сам отправит уведомление о поступившем платеже на notify_url, только эти данные подлежат тщательной проверке, поскольку любому злоумышленнику не составит особого труда сформировать POST-запрос на notify_url. Поэтому полученные данные надо перезапросить у paypal еще раз, добавив к запросу параметр cmd со значением _notify-validate. И если paypal подтвердит совершенный платеж, транзакцию можно считать завершенной.

Для сторонних разработчиков Paypal предусмотрел специальный сервис Paypal Sandbox, который позволяет тестировать весь процесс приема платежей, с одним небольшим ограничением. В paypal sandbox не работает IPN (Instant Payment Notification), когда уведомление о платеже отправляется на notify_url. Для отладки скриптов по обработке IPN в песочнице сделали отдельный инструмент Instant Payment Notification (IPN) simulator.

Прикручиваем Paypal для оплаты: 7 комментариев

  1. Привет! Смотрю, Вы тоже осваиваете буржуйский рынок :)

    Я удаленно работаю на оДеск, это онлайн платформа, где заказчики могут найти тех, кто предоставляет нужные им услуги, практически в любой стране мира, и удаленно с ними работать. Россия, конечно же, занимает одно из ведущих мест по объему предоставляемых услуг.

    Вот тут есть статистика по аутсорсингу в Россию: http://www.odesk.com/community/oconomy/outsourcing_russia.

    Может, еще будет интересно почитать наш недавний пост “Кто самый трудолюбивый?”: http://www.odesk.com/blog/2009/01/do-russians-work-the-hardest.

    Удачи,
    Ольга

  2. На первый взгляд все довольно просто. Но, думаю что не все так очевидно, иначе, не было бы много заказов на Retacoder’е.

  3. Olga, спасибо за ссылки, весьма познавательно.

    Noby, не только на первый взгляд, но и на самом деле несложно. Я еще возился с биллингом от Authorize.Net, там в общем-то тоже несложно. Все они похожи в какой-то степени.

  4. Вот такой вопрос: есть инет-магазин.
    Человек делает транзакцию, оплачивает на сайте пейпела счет и не жмет кнопочку перейти назад на сайт, а у меня по ссылке с этой кнопки идет полное оформление заказа (смена статуса в бд, сообщение на почту покупателю и продавцу), как сделать, чтобы с пейпела передавалась инфа тогда, когда покупатель на кнопку не нажал.
    Спасибо.

  5. yAnTar, с точки зрения безопасности такая процедура оформления заказа очень уязвимая. Ни в коем случае нельзя верить тем данным, что мы получаем GET и POST запросами от пользователей, верить можно только проверенным запросам от Paypal.

    Оформление заказа должно происходить на странице, которая проверяет результат операции в Paypal (как правило эта страница не видна пользователю и в документации она называется notify_url). Если покупатель оплатил заказ и в настройках аккаунта notify_url задан, то Paypal по-любому уведомит о покупке, даже если пользователь не нажмет ссылку “Вернуться на сайт продавца”.

  6. Понял свою ошибку, я тестировал с локального сайта, а с notify_url это не работает, потому, что paypal обращается к сайту.

Обсуждение закрыто.