PayPal
Обзор
PayPal — платёжный метод для проведения платежей с использованием электронного кошелька PayPal. Для работы с этим методом доступно проведение оплат через Payment Page и Gate, возвратов — через Gate, выплат — через Gate и Dashboard.
Характеристика
Тип платёжного метода | платежи с использованием электронных кошельков |
---|---|
Платёжные инструменты | электронные кошельки |
Регионы использования | список доступен по ссылке |
Валюты платежей | AUD, BRL (доступна только для Бразилии), CAD, CZK, DKK, EUR, HKD, HUF, INR (доступна только для Индии), ILS, JPY, MYR (доступна только для Малайзии), MXN, TWD, NZD, NOK, PHP, PLN, GBP, RUB, SGD, SEK, CHF, THB, USD |
Конвертация валют | на стороне ecommpay * |
Оплаты | + |
Выплаты | + |
Оплаты по сохранённым данным | – |
Полные возвраты | + |
Частичные возвраты | + |
Опротестования | + |
Особенности |
|
Организация и стоимость подключения | по согласованию с курирующим менеджером ecommpay |
* За более подробной информацией обращайтесь к курирующему менеджеру ecommpay.
Для подключения этого платёжного метода мерчанту необходимо предоставить ecommpay права на проведение платежей с использованием сервиса PayPal от имени этого мерчанта. К таким правам относятся право на работу с оплатами и возвратами по ним и право на работу с выплатами. Чтобы предоставить любое из этих прав со стороны мерчанта необходимо:
- Сообщить курирующему менеджеру ecommpay о готовности подключить платёжный метод PayPal.
- Получить от ecommpay письмо со ссылкой для перехода на сайт сервиса PayPal.
- Перейти по ссылке и подтвердить право ecommpay на проведение платежей. При этом можно использовать существующую учётную запись мерчанта в PayPal или зарегистрировать новую.
- Получить от ecommpay письмо с уведомлением о подтверждении со стороны PayPal права проводить платежи с использованием указанного идентификатора мерчанта. После этого можно ожидать технической настройки на стороне ecommpay. Как правило, она выполняется в течение трёх дней.
- Получить от ecommpay письмо с подтверждением готовности проводить платежи с использованием метода PayPal. После этого можно начинать работу с использованием данного метода.
При необходимости любое из предоставленных прав может быть отозвано на стороне сервиса PayPal по согласованию с курирующим менеджером ecommpay.
Схема работы
В проведении отдельного платежа с использованием PayPal задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, а также технические средства PayPal.
Основные операции
Интерфейсы | Суммы, USD | Время ** | ||||||
---|---|---|---|---|---|---|---|---|
Payment Page | CMS Plug-ins | Gate | Dashboard | минимум | максимум | базовое | предельное | |
Оплаты | + | – | + | – | – | 60 000,00 * | 1 минута | 3 дня |
Выплаты | – | – | + | + | – | * | 1 минута | 30 дней |
Полные возвраты | – | – | + | + | – | – | – | 35 дней |
Частичные возвраты | – | – | + | + | – | – | – | 35 дней |
* Подробную информацию уточняйте у курирующего менеджера ecommpay.
** Базовое и предельное время определяются следующим образом:
- Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время, определяемое для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя (там, где они необходимы). Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа.
- Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус
decline
. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки ecommpay.
Сценарии использования
Проведение оплат с использованием метода PayPal выполняется с перенаправлением пользователей к сервису PayPal, проведение возвратов и выплат — с уведомлением пользователей через веб-сервис мерчанта.
Рис.: Оплата через Payment Page
Рис.: Оплата через Gate
Рис.: Возврат через Gate
Рис.: Выплата через Gate
Детальные сведения о том, что необходимо делать со стороны мерчанта для проведения платежей, а также о том, что можно использовать для анализа информации о проведённых платежах и операциях, представлены далее.
Оплаты через Payment Page
Общая информация
Для оплаты через Payment Page с использованием метода PayPal со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате оплаты. При этом метод PayPal можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платёжных методов). Полная схема проведения оплаты представлена далее.
Рис.: Проведение оплаты через Payment Page
- Пользователь на стороне веб-сервиса инициирует оплату.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Payment Page.
- Запрос на проведение оплаты поступает в платёжную платформу.
- Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- Осуществляется формирование Payment Page согласно настройкам проекта и параметрам вызова.
- Пользователю отображается сгенерированная платёжная форма.
- Пользователь выбирает для оплаты электронный кошелёк PayPal.
- Запрос на проведение оплаты через PayPal поступает в платёжную платформу.
- Выполняются дальнейшая обработка запроса и его отправка в сервис PayPal.
- На стороне PayPal выполняется обработка запроса на оплату.
- От сервиса PayPal к платёжной платформе передаются данные для перенаправления пользователя в сервис PayPal.
- Данные для перенаправления пользователя передаются к Payment Page.
- Пользователь перенаправляется в сервис PayPal.
- Пользователь выполняет необходимые действия для оплаты.
- На стороне сервиса PayPal выполняется обработка платежа.
- Пользователь перенаправляется к Payment Page.
- От сервиса PayPal к платёжной платформе направляется результат оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
- От платёжной платформы к Payment Page направляется результат проведения оплаты.
- Результат оплаты отображается пользователю на Payment Page.
Информация о формате запросов и параметрах вызова Payment Page при работе с PayPal, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API представлена в разделе Описание Payment Page API.
Формат запросов
При формировании запросов на открытие платёжной формы с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
- project_id — идентификатор проекта, полученный от ecommpay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- payment_currency — валюта платежа в формате ISO-4217 alpha-3;
- payment_amount — сумма платежа в дробных единицах;
- customer_id — идентификатор уникальный в рамках проекта.
- Для предварительного выбора метода PayPal необходимо указывать код платёжного метода в параметре force_payment_method —
paypal-wallet
. - Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
- После определения всех параметров необходимо составить подпись. Подробная информация представлена в разделе Работа с подписью к данным.
Таким образом, корректный запрос на открытие платёжной формы с применением метода PayPal должен содержать идентификаторы проекта, пользователя и платежа, а также валюту и сумму платежа и подпись:
{ payment_id: 'ID_1547', payment_amount: 1000, payment_currency: 'USD', project_id: 210, customer_id: 'customer1', signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO\ /RLCvhtT4DqtVUkDJrOcZzUCwX6R\/ekpZhkIQg==" }
Детальная информация обо всех указанных параметрах приведена в отдельном разделе.
Формат оповещений
Для оповещений о результатах оплат с применением метода PayPal используется стандартный формат, описание которого представлено в разделе Оповещения.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 210
для была успешно проведена оплата в размере 10,00 USD
:
Рис.: Пример оповещения о проведении оплаты
{ "project_id": 210, "payment": { "id": "test_payment_1", "type": "purchase", "status": "success", "date": "2019-12-25T09:48:29+0000", "method": "PayPal Wallet", "sum": { "amount": 1000, "currency": "USD" }, "description": "" }, "account": { "number": "VSAFYPWDD123" }, "customer": { "id": "7895623" }, "operation": { "id": 63460000012251, "type": "sale", "status": "success", "date": "2019-12-25T09:48:29+0000", "created_date": "2019-12-25T09:47:54+0000", "request_id": "55aa73dcab3dd00c239565d5d98d27dc766da37f3a4eeb72f7-00063461", "sum_initial": { "amount": 1000, "currency": "USD" }, "sum_converted": { "amount": 1000, "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 1556, "payment_id": "14C27062M77937123", "auth_code": "", "date": "2019-12-25T09:48:27+0000" } }, "signature": "bLraFo85nfQ+ozqLbMjCbr3hdUfpfn...VhVkMyaximHVkuL3THI1oHRkukafnk3A==" }
В следующем примере оплата была отклонена.
Рис.: Пример оповещения об отказе в проведении оплаты
{ "project_id": 210, "payment": { "id": "test_payment_2", "type": "purchase", "status": "decline", "date": "2019-12-18T09:00:07+0000", "method": "PayPal Wallet", "sum": { "amount": 900, "currency": "USD" }, "description": "test_paypal" }, "customer": { "id": "156787" }, "operation": { "id": 55628000009581, "type": "sale", "status": "decline", "date": "2019-12-18T09:00:07+0000", "created_date": "2019-12-18T08:59:30+0000", "request_id": "b8d98d70def1762c0b6170f5fc525996f9b0df9f52dc00ffb6-00055629", "sum_initial": { "amount": 900, "currency": "USD" }, "sum_converted": { "amount": 900, "currency": "USD" }, "code": "20000", "message": "General decline", "provider": { "id": 1556, "payment_id": "", "auth_code": "" } }, "signature": "OEDB1GoxL9wsMnrPmuJ1Glccx2S...TOaeB+W8q64WLUnsj6gsW5qen7MrDC2o3Rg==" }
Дополнительные материалы
Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:
Оплаты через Gate
Общая информация
Для оплаты через Gate с использованием метода PayPal со стороны веб-сервиса необходимо:
- Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
- Осуществить перенаправление в сервис PayPal.
- Принять оповещение от платежной платформы ecommpay о результате оплаты.
Полная схема проведения оплаты представлена далее.
Рис.: Проведение оплаты через Gate
- Пользователь на стороне веб-сервиса инициирует оплату через PayPal.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Gate.
- Запрос на проведение оплаты поступает в платёжную платформу ecommpay.
- Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробная информация представлена в разделе Формат ответа.
- В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис PayPal.
- На стороне PayPal выполняется обработка запроса на оплату.
- От сервиса PayPal к платёжной платформе передаются данные для перенаправления пользователя на сайт PayPal.
- От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя в PayPal в объекте redirect_data.
- Пользователь перенаправляется в сервис PayPal.
- Пользователь выполняет необходимые действия для оплаты.
- На стороне сервиса PayPal выполняется обработка платежа.
- Пользователь перенаправляется к веб-сервису.
- От сервиса PayPal к платёжной платформе направляется уведомление о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
- От веб-сервиса пользователю направляется результат оплаты.
Информация о формате запросов и параметрах инициирования оплат методом PayPal через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API представлена в разделе Работа с API.
Формат запросов на проведение оплаты
При работе с запросами на оплаты с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться запрос на следующие точки входа, отправляемый методом POST:
/v2/payment/wallet/paypal/sale
для проведения оплаты в одну стадию (относится к группе запросов /v2/payment/wallet/{payment_method}/sale);/v2/payment/wallet/paypal/auth
для проведения оплаты в две стадии (относится к группе запросов /v2/payment/wallet/{payment_method}/auth);
- В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные идентификационные сведения о запросе:
- project_id — идентификатор проекта, полученный от ecommpay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
- payment — объект, содержащий сведения о платеже:
- amount — сумма платежа в дробных единицах;
- currency — валюта платежа в формате ISO-4217 alpha-3;
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор, уникальный в рамках проекта,
- ip_address — используемый IP-адрес;
- general — объект, содержащий основные идентификационные сведения о запросе:
- При проведении оплаты в одну стадию необходимо указывать следующие параметры в объекте return_url, содержащем URL для перенаправления пользователя в веб-сервис:
- success — URL для перенаправления пользователя в случае, когда он выполнил необходимые действия на стороне сервиса PayPal;
- decline — URL для перенаправления пользователя в случае, когда он не выполнил необходимые действия на стороне сервиса PayPal.
- При проведении оплаты в две стадии в объекте return_url необходимо передавать параметр return — URL для перенаправления пользователя на любом шаге оплаты.
- Также при проведении оплаты в две стадии в зависимости от типа бизнеса мерчанта можно передавать следующие параметры (информацию необходимо уточнять у курирующего менеджера ecommpay):
- customer — объект, содержащий сведения о пользователе:
- email — адрес электронной почты;
- first_name — имя;
- last_name — фамилия;
- country — код страны в формате ISO 3166-1 alpha-2;
- phone — номер телефона пользователя;
- additional_data — объект, содержащий дополнительные данные о пользователе в сервисе мерчанта:
- sender_create_date — время создания учётной записи пользователя в UTC+0 в формате ISO 8601 (например
2022-01-25T10:15:30+00:00
); - payments_count — количество платежей, проведённых веб-сервисом мерчанта для пользователя в течение предыдущих трёх месяцев до инициирования платежа;
- pin_verification — определяет, подтверждается ли при оплате подлинность пользователя с использованием PIN-кода (если да — в значении необходимо передавать
Y
, если нет —N
); - face_id_verification — определяет, подтверждается ли при оплате подлинность пользователя с использованием сканирования объёмно-пространственной формы лица (если да — в значении необходимо передавать
Y
, если нет —N
); - additional_verification — комбинация из четырёх индикаторов, отображающих выполнение ряда условий по подтверждению информации на стороне веб-сервиса в заданной последовательности. В качестве таких индикаторов должны использоваться цифры
0
или1
(0
— не подтверждено,1
— подтверждено). К этим условиям относятся:- Номер телефона подтверждён
- Фотография, подтверждающая личность подтверждена
- Информация о платёжной карте подтверждена
- Информация о банковском счёте подтверждена
Например:
1101
.
- sender_create_date — время создания учётной записи пользователя в UTC+0 в формате ISO 8601 (например
- customer — объект, содержащий сведения о пользователе:
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на оплату в одну стадию с применением метода PayPal должен содержать идентификаторы проекта и платежа, подпись, валюту и сумму платежа, IP-адрес пользователя и URL для перенаправления:
Рис.: Пример запроса на оплату в одну стадию
{ "general": { "project_id": 210, "payment_id": "test_payment", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7cV+VHq3L wY3T\/pOMeSaRfBaNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 1000, "currency": "USD" }, "customer": { "ip_address": "1.1.1.1", "id": "customer123" }, "return_url": { "success": "http://example.com/success", "decline": "http://example.com/decline" } }
Таким образом, корректный запрос на оплату в две стадии с применением метода PayPal должен содержать идентификаторы проекта и платежа, подпись, валюту и сумму платежа, IP-адрес пользователя, URL для перенаправления и дополнительную информацию (по необходимости):
Рис.: Пример запроса на оплату две стадии
{ "general": { "project_id": 210, "payment_id": "test_payment", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7cV+VHq3L wY3T\/pOMeSaRfBaNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 1000, "currency": "USD" }, "customer": { "ip_address": "123.45.67.89", "id": "customer123", "email": "test@example.com", "first_name": "John", "last_name": "Doe", "phone": "3572437356", "country": "RU" }, "additional_data": { "sender_create_date": "2022-01-25T10:15:30+00:00", "payments_count": 123, "pin_verification": "Y", "face_id_verification": "N", "additional_verification": "1101" }, "return_url": { "return": "http://example.com/return" } }
Форматы данных для перенаправления пользователей
Для перенаправления пользователя от веб-сервиса на сайт сервиса PayPal необходимо принять оповещение от платёжной платформы, содержащее ссылку для перенаправления в параметре redirect_data.url и данные для отправки в теле запроса redirect_data.body, и использовать эти параметры при открытии HTML-страницы сайта методом, указанным в redirect_data.method.
Далее приведён фрагмент оповещения, содержащего данные для перенаправления.
"redirect_data": {
"body": {},
"method": "GET",
"url": "https://www.sandbox.paypal.com/checkoutnow?token=123"
}
Формат запросов на списание заблокированных средств
При работе с запросами на списание средств с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться запрос к конечной точке
/v2/payment/wallet/paypal/capture
(относится к группе запросов /v2/payment/wallet/{payment_method}/capture), отправляемый методом POST. - В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные идентификационные сведения о запросе:
- project_id — идентификатор проекта, полученный от ecommpay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
- general — объект, содержащий основные идентификационные сведения о запросе:
- Дополнительно могут использоваться все параметры, указанные в спецификации.
Таким образом, корректный запрос на списание заблокированных средств с применением метода PayPal должен содержать идентификаторы проекта и платежа, подпись, валюту и сумму платежа:
Рис.: Пример запроса на оплату
{ "general": { "project_id": 210, "payment_id": "test_payment", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7cV+VHq3L wY3T\/pOMeSaRfBaNIipTv+AWoXW\/9MTO8yJA==" } }
Формат запросов на отмену блокировки средств
При работе с запросами на отмену блокировки средств с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться запрос к конечной точке
/v2/payment/wallet/paypal/cancel
(относится к группе запросов /v2/payment/wallet/{payment_method}/cancel), отправляемый методом POST. - В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные идентификационные сведения о запросе:
- project_id — идентификатор проекта, полученный от ecommpay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
- general — объект, содержащий основные идентификационные сведения о запросе:
- Дополнительно могут использоваться все параметры, указанные в спецификации.
Таким образом, корректный запрос на отмену блокировки средств с применением метода PayPal должен содержать идентификаторы проекта и платежа, а также подпись:
Рис.: Пример запроса на оплату
{ "general": { "project_id": 210, "payment_id": "test_payment", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7cV+VHq3L wY3T\/pOMeSaRfBaNIipTv+AWoXW\/9MTO8yJA==" } }
Формат оповещений
Для оповещений о результатах оплат с применением метода PayPal используется стандартный формат, описание которого представлено в разделе Оповещения.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 210
была успешно проведена одностадийная оплата в размере 10,00 USD
:
Рис.: Пример оповещения о проведении оплаты
{ "project_id": 210, "payment": { "id": "test_payment_1", "type": "purchase", "status": "success", "date": "2019-12-25T09:48:29+0000", "method": "PayPal Wallet", "sum": { "amount": 1000, "currency": "USD" }, "description": "" }, "account": { "number": "ABCDEFG123456" }, "provider_extra_fields": { "holder": "John Doe", "email": "customer@example.com" }, "customer": { "id": "7895623" }, "operation": { "id": 63460000012251, "type": "sale", "status": "success", "date": "2019-12-25T09:48:29+0000", "created_date": "2019-12-25T09:47:54+0000", "request_id": "55aa73dcab3dd00c239565d5d98d27dc766da37f3a4eeb72f7-00063461", "sum_initial": { "amount": 1000, "currency": "USD" }, "sum_converted": { "amount": 1000, "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 1556, "payment_id": "14C27062M77937123", "auth_code": "", "date": "2019-12-25T09:48:27+0000" } }, "signature": "bLraFo85nfQ+ozqLbMjCbr3hdUfpfn...VhVkMyaximHVkuL3THI1oHRkukafnk3A==" }
В следующем примере одностадийная оплата была отклонена.
Рис.: Пример оповещения об отказе в проведении оплаты
{ "project_id": 210, "payment": { "id": "test_payment_2", "type": "purchase", "status": "decline", "date": "2019-12-18T09:00:07+0000", "method": "PayPal Wallet", "sum": { "amount": 900, "currency": "USD" }, "description": "test_paypal" }, "customer": { "id": "156787" }, "operation": { "id": 55628000009581, "type": "sale", "status": "decline", "date": "2019-12-18T09:00:07+0000", "created_date": "2019-12-18T08:59:30+0000", "request_id": "b8d98d70def1762c0b6170f5fc525996f9b0df9f52dc00ffb6-00055629", "sum_initial": { "amount": 900, "currency": "USD" }, "sum_converted": { "amount": 900, "currency": "USD" }, "code": "20000", "message": "General decline", "provider": { "id": 1556, "payment_id": "", "auth_code": "" } }, "signature": "OEDB1GoxL9wsMnrPmuJ1Glccx2S...TOaeB+W8q64WLUnsj6gsW5qen7MrDC2o3Rg==" }
В следующем примере оповещение свидетельствует о том, что в рамках проекта 1037
была успешно проведена блокировка средств в размере 100,00 USD
:
Рис.: Пример оповещения о проведённой блокировке средств
{ "project_id": 1037, "payment": { "id": "62153051", "type": "purchase", "status": "awaiting capture", "date": "2021-12-15T13:04:15+0000", "method": "PayPal Wallet", "sum": { "amount": 10000, "currency": "USD" }, "description": "Test sale" }, "account": { "number": "ABCDEFG123456" }, "customer": { "id": "123" }, "provider_extra_fields": { "holder": "John Doe", "email": "customer@example.com" }, "operation": { "id": 62, "type": "auth", "status": "success", "date": "2021-12-15T13:04:15+0000", "created_date": "2021-12-15T13:03:24+0000", "request_id": "363dedea362289833e5611b639a382c310b7e3e35-00000001", "sum_initial": { "amount": 10000, "currency": "USD" }, "sum_converted": { "amount": 10000, "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 1782, "payment_id": "33007291SS518890B", "auth_code": "", "date": "2021-12-15T13:04:12+0000" } }, "signature": "AAB6/UB0MJY+O/hEEZj9NJkTAeX+Cqlzh11NfFIsO6WXRzCSnJDPXYg==" }
В следующем примере блокировка средств была отклонена:
Рис.: Пример оповещения об отказе в блокировке средств
{ "project_id": 1037, "payment": { "id": "87764079", "type": "purchase", "status": "decline", "date": "2021-12-15T13:21:51+0000", "method": "PayPal Wallet", "sum": { "amount": 10000, "currency": "EUR" }, "description": "Test sale" }, "customer": { "id": "123" }, "operation": { "id": 67, "type": "auth", "status": "decline", "date": "2021-12-15T13:21:51+0000", "created_date": "2021-12-15T13:21:39+0000", "request_id": "982fc18ec872b1806c5ff4033c4fd14e486c925d88-00000001", "sum_initial": { "amount": 10000, "currency": "EUR" }, "sum_converted": { "amount": 10000, "currency": "EUR" }, "code": "20000", "message": "General decline", "provider": { "id": 1782, "payment_id": "", "auth_code": "" } }, "signature": "zZBZHvDTIKG12yYE+HENeup+SdwLGW642i03JQL238wkmhcLcg==" }
В следующем примере оповещение свидетельствует о том, что в рамках проекта 1037
списаны заблокированные ранее средства в размере 100,00 EUR
:
Рис.: Пример оповещения о списании заблокированных средств
{ "project_id": 1037, "payment": { "id": "62153051", "type": "purchase", "status": "success", "date": "2021-12-15T13:05:00+0000", "method": "PayPal Wallet", "sum": { "amount": 10000, "currency": "EUR" }, "description": "Test sale" }, "account": { "number": "ABCDEFG123456" }, "customer": { "id": "1234" }, "operation": { "id": 63, "type": "capture", "status": "success", "date": "2021-12-15T13:05:00+0000", "created_date": "2021-12-15T13:04:50+0000", "request_id": "ea2e5888a67c369b93b4668fe1d66b2ec5cf1b1f2b5-00000001", "sum_initial": { "amount": 10000, "currency": "EUR" }, "sum_converted": { "amount": 10000, "currency": "EUR" }, "code": "0", "message": "Success", "provider": { "id": 1782, "payment_id": "7C035795EJ562523A", "auth_code": "", "date": "2021-12-15T13:04:57+0000" } }, "signature": "uU6LOpEjEqxeqdmD5B8IDCNUauA7Jo0J2GsDkDnaY+1p1m4aS5zTPkJA==" }
В следующем примере списание средств было отклонено:
Рис.: Пример оповещения об отказе в списании средств
{ "project_id": 1037, "payment": { "id": "59375393", "type": "purchase", "status": "awaiting capture", "date": "2021-12-15T14:29:38+0000", "method": "PayPal Wallet", "sum": { "amount": 100000, "currency": "EUR" }, "description": "Test sale" }, "account": { "number": "ABCDEFG123456" }, "customer": { "id": "1234" }, "operation": { "id": 84, "type": "capture", "status": "decline", "date": "2021-12-15T14:29:38+0000", "created_date": "2021-12-15T14:29:31+0000", "request_id": "776d5d3e6e2af6ce83b0e8660d4a02912e88858c922e34e5-00000001", "sum_initial": { "amount": 100000, "currency": "EUR" }, "sum_converted": { "amount": 100000, "currency": "USD" }, "code": "20000", "message": "General decline", "provider": { "id": 1782, "payment_id": "", "auth_code": "" } }, "signature": "qjVnKRZX51+IPClrxh5kqCzurbJbQQSAeFwqH7H9gk7gUYI3A==" }
В следующем примере оповещение свидетельствует о том, что в рамках проекта 1037
отменена блокировка средств в размере 140,00 EUR
:
Рис.: Пример оповещения об отмене блокировки средств
{ "project_id": 1037, "payment": { "id": "34121156", "type": "purchase", "status": "canceled", "date": "2021-12-15T13:13:43+0000", "method": "PayPal Wallet", "sum": { "amount": 10400, "currency": "EUR" }, "description": "Test sale" }, "account": { "number": "ABCDEFG123456" }, "customer": { "id": "54356" }, "operation": { "id": 65, "type": "cancel", "status": "success", "date": "2021-12-15T13:13:43+0000", "created_date": "2021-12-15T13:13:31+0000", "request_id": "93a233b6e894b9c8c4325a0c53634575b04376500459-00000001", "sum_initial": { "amount": 10400, "currency": "EUR" }, "sum_converted": { "amount": 10400, "currency": "EUR" }, "code": "0", "message": "Success", "provider": { "id": 1782, "payment_id": "83M31576986944942", "auth_code": "", "date": "2021-12-15T13:13:39+0000" } }, "signature": "sxsHVGlOb0ezdOxtdmi19cdwf4Ddv7HDMoW0KUB+PIrMns8/94pr17g==" }
В следующем примере отмена блокировки средств была отклонена:
Рис.: Пример оповещения об отказе в отмене блокировки средств
{ "project_id": 1037, "payment": { "id": "24594739", "type": "purchase", "status": "awaiting capture", "date": "2021-12-15T14:18:06+0000", "method": "PayPal Wallet", "sum": { "amount": 100000, "currency": "EUR" }, "description": "Test sale" }, "account": { "number": "ABCDEFG123456" }, "customer": { "id": "134" }, "operation": { "id": 81, "type": "cancel", "status": "decline", "date": "2021-12-15T14:18:06+0000", "created_date": "2021-12-15T14:17:58+0000", "request_id": "c5aa36c9134a1c60703d10a98476f629a23121add6-00000001", "sum_initial": { "amount": 100000, "currency": "EUR" }, "sum_converted": { "amount": 100000, "currency": "EUR" }, "code": "20000", "message": "General decline", "provider": { "id": 1782, "payment_id": "", "auth_code": "" } }, "signature": "PZBiCA2ZFxnLw2S/PN4buxfL+WnePV1m1zFY0Ys8vbz1g==" }
Дополнительные материалы
Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:
Возвраты через Gate
Общая информация
PayPal поддерживает проведение полных и частичных возвратов. Для проведения возврата через Gate с использованием метода PayPal со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения возврата представлена далее.
Рис.: Проведение возврата через Gate
- Пользователь запрашивает возврат средств в веб-сервисе.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение возврата через Gate.
- Запрос на проведение возврата поступает в платёжную платформу ecommpay для дальнейшей обработки.
- Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробная информация представлена в разделе Формат ответа.
- Обработанный запрос передается в сервис PayPal.
- На стороне PayPal выполняется обработка платежа.
- От PayPal к платёжной платформе направляется оповещение о результате.
- От платёжной платформы ecommpay к веб-сервису направляется оповещение о результате.
- Пользователь получает информацию о поступлении запрошенных средств.
Информация о формате запросов и параметрах инициирования возвратов методом PayPal через Gate, а также о формате оповещений о результатах возвратов приведена далее, общая информация о работе с API представлена в разделе Работа с API.
Формат запросов
При работе с запросами на возврат с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться запрос
/v2/payment/wallet/paypal/refund
, отправляемый методом POST. Этот запрос относится к группе запросов для платежей с использованием электронных кошельков /v2/payment/wallet/{payment_method}/refund. - В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные идентификационные сведения о запросе:
- project_id — идентификатор проекта;
- payment_id — идентификатор платежа;
- signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
- payment — объект, содержащий сведения о возврате:
- amount — сумма возврата в дробных единицах валюты (обязательный при частичном возврате);
- currency — валюта возврата в формате ISO-4217 alpha-3 (обязательный при частичном возврате);
- description — комментарий или описание возврата.
- general — объект, содержащий основные идентификационные сведения о запросе:
- Дополнительно могут использоваться все параметры, указанные в спецификации.
Таким образом, корректный запрос на частичный возврат с применением метода PayPal должен содержать идентификаторы проекта и платежа, подпись, сумму, валюту и описание возврата:
Рис.: Пример запроса на возврат
{
"general": {
"project_id": 210,
"payment_id": "test_refund_1",
"signature": "U5LCm6489ly9cXCKIVBNV0mFruH4s05cFDqLks8ZJMR6iNdlUtm1EdHHdA3D19Qg=="
},
"payment": {
"amount": 1000,
"currency": "USD",
"description": "Test PayPal refund"
}
}
Формат оповещений
Для оповещений о результатах возврата с применением метода PayPal используется стандартный формат, описание которого представлено в разделе Оповещения.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 210
был успешно проведён возврат в размере 10,00 USD
на счёт № 2626324568
.
Рис.: Пример оповещения о проведении возврата
{
"customer": {
"id": "7895623"
},
"account": {
"number": "VSAFYPWDD35123"
},
"project_id": 210,
"payment": {
"id": "test_refund_1",
"type": "purchase",
"status": "refunded",
"date": "2019-12-25T09:52:32+0000",
"method": "PayPal Wallet",
"sum": {
"amount": 0,
"currency": "USD"
},
"description": ""
},
"operation": {
"id": 63460000005982,
"type": "refund",
"status": "success",
"date": "2019-12-25T09:52:33+0000",
"created_date": "2019-12-25T09:52:08+0000",
"request_id": "ce8a135fe3c28ad2c669184d4ddcfa7a7002d80ad948284c-00063461",
"sum_initial": {
"amount": 1000,
"currency": "USD"
},
"sum_converted": {
"amount": 1000,
"currency": "USD"
},
"code": "0",
"message": "Success",
"provider": {
"id": 1556,
"payment_id": "8YC17810N19968319",
"auth_code": "",
"date": "2019-12-25T09:52:11+0000"
}
},
"signature": "TPqAIy7FUlH3iy/mz8mmSosn5Hpor...QxJ2MTdxuNofnt4or7LdABIrH6JGMGw=="
}
В следующем примере возврат был отклонён.
Рис.: Пример оповещения об отказе в проведении возврата
{
"customer": {
"id": "7895623"
},
"account": {
"number": "VSAFYPWDD35123"
},
"project_id": 210,
"payment": {
"id": "test_refund_2",
"type": "purchase",
"status": "success",
"date": "2019-12-25T09:52:32+0000",
"method": "PayPal Wallet",
"sum": {
"amount": 1000,
"currency": "USD"
},
"description": ""
},
"operation": {
"id": 63460000005982,
"type": "refund",
"status": "decline",
"date": "2019-12-25T09:52:33+0000",
"created_date": "2019-12-25T09:52:08+0000",
"request_id": "ce8a135fe3c28ad2c66c90184d4ddcfa7a7002d80ad948284c-00063461",
"sum_initial": {
"amount": 1000,
"currency": "USD"
},
"sum_converted": {
"amount": 1000,
"currency": "USD"
},
"code": "20100",
"message": "Decline",
"provider": {
"id": 1556,
"payment_id": "8YC17810N19968319",
"auth_code": "",
"date": "2019-12-25T09:52:11+0000"
}
},
"signature": "TPqAIy7FUlH3iy/mz8mmSosn5Hp...jGFi2MTdxuNofnt4or7LdABIrH6JGMGw=="
}
Дополнительные материалы
Для организации работы с возвратами через Gate также могут быть полезны следующие материалы:
Выплаты через Gate
Общая информация
Для выплаты через Gate с использованием метода PayPal со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате выплаты. Полная схема проведения выплаты представлена далее.
Рис.: Проведение выплаты через Gate
- Пользователь на стороне веб-сервиса инициирует выплату через PayPal.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение выплаты через Gate.
- Запрос на проведение выплаты поступает в платёжную платформу.
- Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
- В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис PayPal.
- На стороне PayPal выполняется обработка платежа.
- От PayPal к платёжной платформе направляется оповещение о результате.
- От платёжной платформы к веб-сервису направляется оповещение о результате.
- От веб-сервиса пользователю направляется результат выплаты.
Информация о формате запросов и параметрах инициации выплат методом PayPal через Gate, а также о формате оповещений о результатах выплат приведена далее, общая информация о работе с API см. в разделе Работа с API.
Формат запросов
При работе с запросами на выплаты с применением метода PayPal необходимо учитывать следующее:
- Должен использоваться запрос
/v2/payment/wallet/paypal/payout
, отправляемый методом POST. Этот запрос относится к группе запросов для проведения выплат с использованием электронных кошельков /v2/payment/wallet/{payment_method}/payout. - В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные идентификационные сведения запроса:
- project_id — идентификатор проекта, полученный от ecommpay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
- payment — сведения о платеже:
- amount — сумма выплаты в дробных единицах валюты,
- currency — валюта платежа в формате ISO-4217 alpha-3;
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор пользователя, уникальный в рамках проекта,
- ip_address — используемый IP-адрес;
- account — объект, содержащий сведения об электронном кошельке пользователя:
- number — идентификатор кошелька пользователя или адрес электронной почты, на которую зарегистрирован кошелёк. Выбор значения параметра зависит от типа бизнеса мерчанта. Информацию необходимо уточнять у курирующего менеджера ecommpay.
- general — объект, содержащий основные идентификационные сведения запроса:
- Дополнительно могут использоваться все параметры, указанные в спецификации.
Таким образом, корректный запрос на выплату с применением метода PayPal должен содержать идентификаторы проекта и платежа, подпись, валюту и сумму платежа, а также данные пользователя:
Рис.: Пример запроса на выплату
{ "general": { "project_id": 603, "payment_id": "test_payoutt_1", "signature": "U5LCm6489ly9cXCKIVBNV0mFr4XiCruECSyQEbT1hSXJ70zuH4s05cFDqLks8ZJMR6iNdlUtm1EdHHdA3D19Qg==" }, "payment": { "amount": 3000, "currency": "USD", "description": "Test PayPal payout" }, "customer": { "ip_address": "1.2.3.4", "id": "34534543545" }, "account": { "number": "DHEV3UAE54T6G" } }
Формат оповещений
Для оповещений о результатах выплат с применением метода PayPal используется стандартный формат, описание которого представлено в разделе Оповещения.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 112
для пользователя 120005
была успешно проведена выплата в размере 10,00 GBP
на кошелёк DHEV3UAE54T3G
.
Рис.: Пример оповещения о проведении выплаты
{ "customer": { "id": "120005" }, "account": { "number": "DHEV3UAE54T6G" }, "project_id": 112, "payment": { "id": "test_paypal_payout", "type": "payout", "status": "success", "date": "2020-01-27T12:50:35+0000", "method": "PayPal Wallet", "sum": { "amount": 1000, "currency": "GBP" }, "description": "test_payout" }, "operation": { "id": 56417000021431, "type": "payout", "status": "success", "date": "2020-01-27T12:50:35+0000", "created_date": "2020-01-27T12:50:11+0000", "request_id": "678923242211798109ef056eb0b1c7adfdcad60e968f-00056418", "sum_initial": { "amount": 1000, "currency": "GBP" }, "sum_converted": { "amount": 1000, "currency": "GBP" }, "code": "0", "message": "Success", "provider": { "id": 1556, "payment_id": "2334", "auth_code": "", "date": "2020-01-27T12:50:17+0000" } }, "signature": "BmR11YQo8fszfS3kMMO66zXDCOpVLXd/y/v0mXN8Huy9V3gA==" }
В следующем примере выплата была отклонена.
Рис.: Пример оповещения об отказе в проведении выплаты
{ "customer": { "id": "120005" }, "account": { "number": "DHEV3UAE54T3G" }, "project_id": 112, "payment": { "id": "test_paypal_payout2", "type": "payout", "status": "decline", "date": "2020-01-27T12:51:35+0000", "method": "PayPal Wallet", "sum": { "amount": 1000, "currency": "GBP" }, "description": "test_payout2" }, "operation": { "id": 56417000021432, "type": "payout", "status": "decline", "date": "2020-01-27T12:51:35+0000", "created_date": "2020-01-27T12:51:11+0000", "request_id": "678923242211798109ef056eb0b1c7adfdcad60e968f-00056423", "sum_initial": { "amount": 1000, "currency": "GBP" }, "sum_converted": { "amount": 1000, "currency": "GBP" }, "code": "0", "message": "Success", "provider": { "id": 1556, "payment_id": "2335", "auth_code": "", "date": "2020-01-27T12:51:17+0000" } }, "signature": "BmR11YQo8fszfS3kMMO66zXDCOpVLXd/y/v0mXeqewqgV3gA==" }
Дополнительные материалы
Для организации работы с выплатами через Gate также могут быть полезны следующие материалы:
Выплаты через Dashboard
При использовании интерфейса Dashboard можно проводить одиночные и массовые выплаты методом PayPal с единичной и пакетной отправкой запросов, называемые соответственно одиночными и массовыми.
- Для проведения одиночной выплаты необходимо открыть форму выплаты, задать все необходимые параметры (включая метод), отправить запрос и убедиться в проведении выплаты.
-
Для проведения массовой выплаты необходимо подготовить и загрузить файл с информацией обо всех целевых выплатах, отправить пакет запросов и убедиться в проведении выплат.
При этом должен использоваться файл формата CSV, структура которого соответствует требованиям, представленным в разделе Сведения о массовых платежах, а параметры выплат — должны соответствовать требованиям, представленным в разделе Выплаты через Gate этой статьи (за исключением пункта о подписи).
Более подробная информация о проведении выплат через Dashboard представлена в отдельной статье.
Анализ результатов проведения платежей
Как и при работе с другими платёжными методами, которые предоставляет ecommpay, при использовании метода PayPal доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.
Всю необходимую информацию можно получать и анализировать средствами Dashboard, в том числе с помощью аналитических панелей на вкладке Analytics.
Также можно выгружать нужную информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:
- Dashboard позволяет выгружать данные в форматах CSV и XLS с помощью инструментов на вкладке Платежи. При этом можно выполнять разовые выгрузки информации на локальный компьютер и задействовать периодическую выгрузку и отправку информации на заданные адреса электронной почты.
- Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы /operations/get.
С любыми вопросами о возможностях анализа можно обращаться в службу технической поддержки ecommpay.