Описание протокола paypal для благотворительных...

8
1 Документация по интеграции сервиса оплаты PayPal для благотворительных организаций

Upload: paypalmoscow

Post on 16-Apr-2017

89 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: Описание протокола PayPal для благотворительных организаций

1

Документация по интеграции сервиса оплаты PayPal

для благотворительных организаций

Page 2: Описание протокола PayPal для благотворительных организаций

2

Содержание

ЭТАПЫ ИНТЕГРАЦИИ 3

КОД КНОПКИ ОПЛАТЫ 3 ОПИСАНИЕ ОСНОВНЫХ ПАРАМЕТРОВ 3 ПРИМЕР ФОРМЫ МОМЕНТАЛЬНОЙ ОПЛАТЫ 4 ПРИМЕР ФОРМЫ ОПЛАТЫ ДЛЯ РЕГУЛЯРНЫХ ЕЖЕМЕСЯЧНЫХ СПИСАНИЙ 4 ПОЛУЧЕНИЕ УВЕДОМЛЕНИЙ ОБ ОПЛАТЕ (IPN) 5

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ 6

ЛОГОТИПЫ PAYPAL 6 ТЕСТОВЫЕ РЕКВИЗИТЫ 6 ПРИМЕР HTML-ФОРМЫ С МОМЕНТАЛЬНЫМИ И ЕЖЕМЕСЯЧНЫМИ СПИСАНИЯМИ 7

Page 3: Описание протокола PayPal для благотворительных организаций

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 protected] 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/

Page 4: Описание протокола PayPal для благотворительных организаций

4

Пример формы моментальной оплаты

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

<input type="hidden" name="business" value="[email protected]">

<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=" [email protected]"> <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>

Page 5: Описание протокола PayPal для благотворительных организаций

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/

Page 6: Описание протокола PayPal для благотворительных организаций

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: [email protected] password: 1234567890 Business account: email: [email protected] password: 1234567890

Page 7: Описание протокола PayPal для благотворительных организаций

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');

Page 8: Описание протокола PayPal для благотворительных организаций

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>