img
scroll
#

Особливості підключення API Paypal

Uk Ru En
Статья
#0002
Paypal API Connection Features

Paypal предоставляет два API: REST и IPN.
Мы рассмотрим REST API, далее просто API, которое позволяет удобно взаимодействовать с необходимыми сущностями..
API Paypal это JSON API. Paypal предоставляет два окружения, основное, https://api.paypal.com/, и песочницу, https://api.sandbox.paypal.com/.

Для защиты запросов Paypal использует OAuth 2.0 аутентификацию. Таким образом для взаимодействия с API необходимо получить токен доступа. Для получения токена нужно отправить POST-запрос на "v1/oauth2/token" с параметром "grant_type" со значением "client_credentials" и с передачей заголовка "Authorization" со значением "Basic " . base64_encode("$clientId:$secret").

Для защиты запросов Paypal использует OAuth 2.0 аутентификацию. Таким образом для взаимодействия с API необходимо получить токен доступа. Для получения токена нужно отправить POST-запрос на "v1/oauth2/token" с параметром "grant_type" со значением "client_credentials" и с передачей заголовка "Authorization" со значением "Basic " . base64_encode("$clientId:$secret").

Полученный токен можно использовать для подписи всех последующих запросов в течении некоторого времени. $clientId и $secret можно получить непосредственно в кабинете Paypal. Также в кабинете можно переключить режим работы приложения. Для всех запросов кроме запроса на токен доступа данные можно отправлять в виде json.

Полученного токена в том числа достаточно для работы с платежами. Так, можно отправлять платежи, смотреть историю платежей и т.д. История платежей по умолчанию недоступна, ёё нужно разрешить использовать в личном кабинете Paypal. Тестовая среда по-умолчанию имеет пустую историю платежей и для манипуляций с существующими платежами их нужно создать (провести, make).

Для некоторых запросов уровень защиты повышен и чтобы, например, провести возврат платежа необходимо подписать запрос еще одной подписью. Необходимо передать заголовок "PayPal-Auth-Assertion" со значением конкатенированых точкой base64-зашифрованных json-строк, полученных из массивов ['alg' => 'none'] и ['iss' => $clientId, 'email' => $email]. Параметр $clientId встречался ранее, а $email - это почта пользователя Paypal, на которую зарегистрирован аккаунт. Будьте внимательны, если вы используете среду "песочница", то для нее Paypal генерирует тестовый email.

Кроме того вместо email во втором массиве можно использовать 'payer_id' со значением payer_id аккаунта пользователя. Стоит отдельно уточнить, что в результирующей строке между двумя шифрованными строками должна быть точка, которую Paypal будет использовать как разделитель.

Например на языке программирования PHP генерация второй подписи будет выглядеть следующим образом:

private function getPaypalAuthAssertion($email, $clientId) {
   $joseHeader = base64_encode(json_encode(['alg' => 'none']));
   $payload = base64_encode(json_encode([
        'iss' => $clientId,
        'email' => $email,
   ]));
   return $joseHeader . '.' . $payload;
}

Чтобы правильно реализовать обработку ошибок стоит учесть два типа ошибок: ошибки доступа, возвращаемые при неудачном получении токена, и ошибки валидации. Поэтому в вашей системе вам понадобится два механизма по переформатированию ошибок.

Блог
#0002
Статті, які можуть вас також зацікавити
Реалізація структури бази продуктів з сервісу sql-ex.ru з підтримкою Doctrine2
Розширюйте проект на міцній основі з використанням вбудованого функціоналу Doctrine2, спробуйте додати свої класи і таблиці. Характеристика бази продуктів
Поради щодо підключення до сервісу API ShipStation
Поради щодо підключення до сервісу API ShipStation
Використовуйте API ShipStation як агрегатор для вашого сервісу, а такж як відмінний інструмент для економії коштів на відправленнях посилок. Опис особливостей сервісу
Ключові відмінності між Laravel і Symfony
Ключові відмінності між Laravel і Symfony
Який з двох фреймворків Laravel чи Symfony вибрати для реалізації проекту? Під які конкретні потреби використовувати той чи інший фреймворк? Характеристика функціональних можливостей фреймворків
Особливості впровадження принципів SCRUM в нашій компанії і їх ефективність
Впровадження методів управління проектами SCRUM в нашій компанії, які використовують принципи і артефакти, результати застосування в спектрі ефективності використання трудових і часових ресурсів.
Зв'яжіться з нами
#0013
Готові Розпочати? Повідомте нас про це!
Телефон:
Адреса:

Україна, Житомир
вул. Вітрука 9в

Пн-Пт 9.00 - 19.00

Зв'яжіться з нами
#0000
Залишилися запитання?
Опишіть свою проблему, заповніть форму нижче та наші спеціалісти допоможуть Вам!
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле