Описание протокола paypal для благотворительных...
Post on 16-Apr-2017
89 Views
Preview:
TRANSCRIPT
1
Документация по интеграции сервиса оплаты PayPal
для благотворительных организаций
2
Содержание
ЭТАПЫ ИНТЕГРАЦИИ 3
КОД КНОПКИ ОПЛАТЫ 3 ОПИСАНИЕ ОСНОВНЫХ ПАРАМЕТРОВ 3 ПРИМЕР ФОРМЫ МОМЕНТАЛЬНОЙ ОПЛАТЫ 4 ПРИМЕР ФОРМЫ ОПЛАТЫ ДЛЯ РЕГУЛЯРНЫХ ЕЖЕМЕСЯЧНЫХ СПИСАНИЙ 4 ПОЛУЧЕНИЕ УВЕДОМЛЕНИЙ ОБ ОПЛАТЕ (IPN) 5
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ 6
ЛОГОТИПЫ PAYPAL 6 ТЕСТОВЫЕ РЕКВИЗИТЫ 6 ПРИМЕР HTML-ФОРМЫ С МОМЕНТАЛЬНЫМИ И ЕЖЕМЕСЯЧНЫМИ СПИСАНИЯМИ 7
3
Интеграция платежей через систему PayPal возможна различными методами, одним из которых является протокол Web Payments Standard. Так как протокол сочетает в себе простоту реализации и функциональность, он является оптимальным решением для благотворительных организаций.
Этапы интеграции Код кнопки оплаты Кнопка оплаты представляет собой HTML-форму, отправляющую POST-запрос на адрес https://www.paypal.com/cgi-bin/webscr (GET-запросы не поддерживаются). Для запросов на тестовую среду(Sandbox) используется адрес https://www.sandbox.paypal.com/cgi-bin/webscr.
Описание основных параметров
Параметр Пример значения Описание
business email@domain.ru Email корпоративного счета PayPal, на который осуществляется прием платежей
lc RU Язык платежной страницы. Возможные значения указаны в официальной документации
charset utf-8 Кодировка платежной страницы
return http://example.com URL для возврата пользователя после успешного платежа
cancel http://example.com URL для возврата пользователя после неуспешного платежа/отказа от оплаты
image_url https://site.ru/img.jpg Логотип органицазии, 150x50 px, формат gif, png или jpg
bn Somename_Donate_WPS_RU Код, выдающийся компанией PayPal, присвоенный организации.
amount 10.00 Сумма транзакции
no_shipping 1 Идентификатор типа транзакци: доставка/digital.
cmd _donations Идентификатор типа транзакции donation/shopping cart итд.
item Пожертвование Назначение платежа/название услуги/товара
currency_code RUB Код валюты
Специальные параметры для регулярных списаний
cmd _xclick-subscriptions Значение для активации регулярных списаний
t3 M Тип периода, M - месяц
p3 1 Периодичность списаний
src 1 Еще один необходимый для регулярных списаний флаг
Полное описание используемых параметров приведено на официальном портале для разработчиков PayPal: https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/
4
Пример формы моментальной оплаты
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="business" value="charity_test@business.ru">
<input type="hidden" name="lc" value="RU">
<input type="hidden" name="charset" value="utf-8">
<input type="hidden" name="return" value="http://example.com/success">
<input type="hidden" name="cancel_return" value="http://example.com/fail">
<input type="hidden" name="image_url" value="https://example.com/img.jpg">
<input type="hidden" name="bn" value="Somename_Donate_WPS_RU">
<p>Сумма: <input type="text" size="10" name="amount" placeholder="150.00" value="" required> RUB</p>
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="item_name" value="Пожертвование"> <input type="hidden" name="currency_code" value="RUB">
<input type="image" name="submit" border="0" src="buy-logo-large-ru-help.png"
alt="PayPal - The safer, easier way to pay online">
<img alt="" border="0" width="1" height="1"
src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif">
</form>
Пример формы оплаты для регулярных ежемесячных списаний
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="business" value=" charity_test@business.ru"> <input type="hidden" name="lc" value="RU">
<input type="hidden" name="charset" value="utf-8">
<input type="hidden" name="return" value="http://example.com/success">
<input type="hidden" name="cancel_return" value="http://example.com/fail">
<input type="hidden" name="image_url" value="https://example.com/img.jpg">
<input type="hidden" name="bn" value="Somename_Donate_WPS_RU">
<p>Сумма: <input type="text" size="10" name="amount" placeholder="150.00" value="" required> RUB</p>
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="src" value="1">
<input type="hidden" name="item_name" value=" Пожертвование"> <input type="hidden" name="currency_code" value="RUB">
<input type="image" name="submit" border="0" src="buy-logo-large-ru-help.png"
alt="PayPal - The safer, easier way to pay online">
<img alt="" border="0" width="1" height="1"
src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif">
</form>
5
Получение уведомлений об оплате (IPN) Instant Payment Notifications (IPN) – сервис информирования продавца о событиях, происходящих с транзакциями. Данный сервис создан с целью помочь продавцу автоматизировать функции обработки транзакций и интегрировать данные о транзакциях в собственные внутренние системы. Схема процесса уведомления:
1. Плательщик инициирует оплату на сайте продавца, продавец обращается к API PayPal,
указывая в параметре notify_url адрес своего обработчика входящих запросов.
2. PayPal отправляет HTTP-POST запрос на адрес, который был указан в поле notify_url.
3. Обработчик, расположенный по этому адресу, отправляет в ответ 200 OK.
4. Обработчик методом HTTP-POST отправляет тот же набор данных, что и был получен ранее,
обратно в PayPal. Запрос должен содержать те же поля, в том же порядке, кроме параметра
cmd=_notify-validate в начале, и в той же кодировке.
5. PayPal отправляет в ответ значение VERIFIED (в случае, если сообщение совпадает с
оригиналом) или INVALID (если не совпадает).
Для эмуляции процесса отправки IPN с сервера PayPal можно либо указывать URL тестового обработчика в notify_url при запросах на тестовую среду Sandbox, либо использоать IPN simulator. Более детально процесс работы с IPN описан на портале Developer: https://developer.paypal.com/docs/classic/ipn/gs_IPN/
6
Дополнительная информация IPN API: https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/ipnguide.pdf PayPal API эндпоинты: https://developer.paypal.com/docs/classic/api/endpoints/ Работа с PayPal Sandbox: https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/ Визуальные материалы: https://www.paypal.com/ru/webapps/mpp/logo-center Как делать negative testing: https://developer.paypal.com/docs/classic/lifecycle/sb_error-conditions/ Общее описание кодов ошибок: https://developer.paypal.com/docs/classic/api/errorcodes/ Работа с PayPal Sandbox: https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/
Логотипы PayPal Горизонтальный https://www.dropbox.com/s/2lysexsloxg9uqf/PP_logo_h_200x51.png?dl=0 Вертикальный https://www.dropbox.com/s/y366d1t9ycn6ad4/pp_cc_mark_111x69.jpg?dl=0 Кнопка оплаты https://www.dropbox.com/s/fxqfgiqh9u58pu5/buy-logo-large-ru-help.png?dl=0
Тестовые реквизиты Web interface access URL: https://sandbox.paypal.com/ Customer account: email: charity_test@customer.ru password: 1234567890 Business account: email: charity_test@business.ru password: 1234567890
7
Пример HTML-формы с моментальными и ежемесячными списаниями
<form id="paypal" action="https://www.paypal.com/cgi -bin/webscr" method="post"> <!-- Identify your business so that you can collect the payments. --> <input type="hidden" name="business" value=""> <input type="hidden" name="lc" value="RU"> <input type="hidden" name="charset" value="utf -8"> <input type="hidden" name="return" value=""> <input type="hidden" name="cancel_return" value=""> <!-- Logo should be 150x50 px size gif, png or jpg. --> <input type="hidden" name="image_url" value=""> <input type="hidden" name="bn" value="LifeLine_Donate_WPS_RU"> <p>Сумма: <input id="amt" type="text" size="10" name="amount" placeholder="150.00" value="" required> RUB</p> <p>Ежемесячно <input id="subscribe" type="checkbox" onclick="Subscribe(); "></p> <input id="_xclick-subscriptions" type="hidden" name="cmd" value="_xclick -subscriptions"> <input type="hidden" id="p3" name="p3" value="1"> <input type="hidden" id="t3" name="t3" value="M"> <input type="hidden" id="src" name="src" value="1"> <input type="hidden" name="no_shipping" value="1"> <input id="_donations" type="hidden" name="cmd" value="_donations"> <!-- Specify details about the contribution --> <input type="hidden" name="item_name" value=""> <input type="hidden" name="currency_code" value="RUB"> <!-- Display the payment button. --> <input type="image" name="submit" border="0" src="buy-logo-large-ru-help.png" alt="PayPal - The safer, easier way to pay online"> <img alt="" border="0" width="1" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" > <script type="text/javascript"> var form = document.getElementById("paypal"); var elements = form.elements; for (var i = 0, len = elements.length; i < len; ++i) { document.getElementById('p3').disabled = true; document.getElementById('t3').disabled = true; document.getElementById('src').disabled = true; document.getElementById('_xclick -subscriptions').disabled = true; document.getElementById('_donations').disabled = false; } function Subscribe() { var checkboxvar = document.getElementById('subscribe');
8
if (!checkboxvar.checked) { document.getElementById('p3').disabled = true; document.getElementById('t3').disabled = true; document.getElementById('src').disabled = true; document.getElementById("amt").setAttribute("name","amount"); document.getElementById('_xclick-subscriptions').disabled = true; document.getElementById('_donations').disabled = false; } else { document.getElementById('p3').disabled = false; document.getElementById('t3').disabled = false; document.getElementById('src').disabled = false; document.getElementById("amt").setAttribute("name","a3"); document.getElementById('_xclick-subscriptions').disabled = false; document.getElementById('_donations').disabled = true;}} </script> </form>
top related