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
Статьи, которые могут вас также заинтересовать
Особенности подключения Iiko API
Iiko API это JSON API. Каждый запрос нужно подписывать специальным временным токеном доступа. Получить временный токен можно используя имя и пароль Вашего Iiko аккаунта, предоставленного Вам Iiko.
Опыт подключения API Admitad
Опыт подключения API Admitad
Admitad - это глобальная партнерская сеть с большим выбором партнерских программ, высокими ставками, экспресс-выплатами и множеством инструментов.
Как правильно создать обменник электронных валют
Как правильно создать обменник электронных валют
Советы по созданию онлайн-обменника. На что следует обратить особое внимание при создании обменника, удобного для пользователя? Основные требования к коду
Реализация структуры база продуктов с сервиса sql-ex.ru с помощью Doctrine2
Расширяйте проект на прочной основе с использованием встроенного функционала Doctrine2, попробуйте добавить свои классы и таблицы. Характеристика базы продуктов
Свяжитесь с нами
#0013
Готовы Начать? Дайте нам знать!
Телефон:
Адрес:

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

Пн-Пт 9.00 - 19.00

Свяжитесь с нами
#0000
Остались вопросы?
Опишите свою проблему, заполните форму ниже и наши специалисты помогут Вам!
Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле