Как сделать форму платежей PayPal?

Как сделать форму платежей PayPal?

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

Виды платежей

Paypal позволяет принимать несколько видов платежей. Вот некоторые из них:
1. Buy now buttons – единоразовый платеж, для оплаты одного или нескольких товаров (услуг). Позволяет задавать сумму платежа, описание товаров (услуг), количество товаров, адрес, доставки, вес покупки и т.д. Сумму платежа можно и не задавать, в этом случае Paypal даст юзеру возможность самостоятельно указать сумму, которую хочет заплатить.
2. Donate buttons – впринципе, по функционалу аналогична «Buy now», тоже единоразовый платеж, сумму можно задать как принудительно, так и оставить на усмотрение юзера. Отоичие в том, что не позволяет указать адрес доставки и все, что с ней (доставкой) связано.
3. Add to cart buttons – позволяет создавать корзину из ваших товаров, на стороне Paypal`а. На вашем сайте юзер может только добавлять товары в корзину. Чтобы просмотреть содержимое корзины или удалить оттуда какие-либо позиции, придется залогиниться на Paypal.
4. Subscribe buttons – позволяет организовать прием периодических платежей, например, оплата аккаунта, услуг.
5. Еслть еще подарочные сертификаты, но с ними даже не пытался разобраться.

В моем случае идеальным решением было использование платежей “Buy now”, о них и пойдет дальше речь.

Заюзать “Buy now” на своем сайте можно двумя способами:
1. создать кнопку c помощью инструментов Paypal’а.
2. создать свою собственную форму.

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



Создание формы платежа
Рaypal, что естественно, жестко регламентирует названия полей формы. Полный список этих полей можно найти на https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables. То что использовано у нас:
— cmd = _xclick – указываем тип платежа “Buy now”;
— business – тут указываем email, аккаунта, куда будут приниматься платежи. Сам адрес должен быть подтвержденным (подтверждается где-то в настройках аккаунта);
— item_name – тут задаем описание товара/услуги. Будет отображаться в Paypal при проведении платежа;
— custom – здесь служебная инфа, понадобится потом нам же для идентификации юзера;
— amount – сумма платежа;
— currency – валюта платежа. Возможные варианты Здесь.
— no_shipping =1 – указываем, что доствка не осуществляется.

Настройка аккаунта
Далее, для приема платежей на свой аккаунт, этот самый аккаунт надо соответствующим образом настроить.

Paypal поддерживает два метода передачи данных о транзакции нашему скрипту: PDT (Payment Data Transfer) и IPN (Instant Payment Notification). Насколько я понял, разница в том, что при использовании PDT от Paypal’а приходит одно единственное сообщение уже после совершения юзером платежа (т.е. когда деньги от юзера уже находятся на пути к вашему аккаунту). При использовании IPN Paypal генерирует несколько сообщений, оповещая нас о каждой отдельной стадии совершения платежа. Для решения моей задачи вполне хватало PDT, который я и заюзал.

Процесс включения PDT описан Здесь. Там внизу есть раздел Activating PDT.

Суть PDT — при завершении платежа, Paypalпосылает указанному скрипту GET- зарпос, в котором передает номер транзакции, её статус, сумму и т.д. У самого Paypal’a существует механизм проверки подлинности транзакции — мы отправляем POST-запрос определенного вида на их адрес с полученным номером транзакции. В ответ приходит либо код ошибки, либо описание транзакции — статус, сумма и еще куча всяких служебных данных.

Алгоритм работы скрипта
Собственно, что требуется от скрипта:
1. получить эти данные.
2. проверить тип транакции — если используется обычная оплата (buy now). то тип транзакции должен быть web_accept;
3. проверяем емайл получателя платежа и id аккаунта получателя. (поля bussiness, receiver_email, receiver_id);
4. в поле custom содержится служебная инфа полученная от нас, например
ид юзера — проверяем его.
5. в поле txn_id содежится номер транакции в системе paypal. проверяем
чтобы не было повторных платежей.
6. после этого, если поле payment_status = Complete, т.е. платеж
нормально завершен, то проводим платеж уже у себя, при любом другом
статусе — какие-то траблы.
Сумма и валюта будут в полях mc_gross и mc_currency.
Полный список все параметров передаваемых Paypal'ом при использовании PDT (да и при IPN тоже) Здесь.

Теперь о тех плюшках, которые обещал раньше. Относятся они к полю custom, которое мы сами и отправляем Paypal’y. Можно, конечно, просто записать туда id юзера и не париться, но мы ведь легких путей не ищем. В это поле вполне можно записать id записи с описанием платежа в нашей системе, а уже там сохраняться юзера, запоминать тип услуги, к которую приобрел юзер, сумму и т.д. Это позволит, например, отслеживать покупки, которые так и не были оплачены, а также, при получении данных от Paypal’a, можно сверять с сохраненными у нас, что дает небольшой + к секьюрности.



Понравилось - репост:


Еще интересно почитать
Простое счетоводство может сэкономить малому бизнесу деньги
Web-сайты для малого бизнеса: 10 шагов к успеху
Как поднять индекс цитирования
Совершенствование вашей команды
Ресурсы Интернета для малого бизнеса
Организация как ключ успеха для малого бизнеса
Как добавить статью в индекс Яндекса наверняка (Yandex)
Коворкинг: фрилансер ищет офис
Чего ты стоишь
Как вывести сайт из бана в Яндексе?
Почему сложно разрабатывать качественные планы...
User agent поисковых роботов Яндекса, Google, Rambler, Yahoo, MSN, Alexa
Растем или деградируем? Почему в жизни у нас разные результаты
Ищем работу за границей
Что необходимо знать при покупке готового бизнеса
Как правильно провести совещание
Как устроиться на работу после 40
Поиск подходящего агента по страхованию бизнеса
Распространенные ошибки малого бизнеса при найме персонала
Супружеская жизнь и предпринимательство