API PayPal REST: отправка запросов от имени продавца - PullRequest
1 голос
/ 27 апреля 2020

Я нахожусь в процессе переноса нашего программного обеспечения, которое от имени торговцев делает запросы в PayPal, используя PayPal SOAP API, в инфраструктуру API PayPal REST.

Я использую Клиент Идентификатор / Секрет моей учетной записи разработчика PayPal для получения токена Bearer из Песочницы, используя https://api.sandbox.paypal.com/v1/oauth2/token.

Затем я звоню на https://api.sandbox.paypal.com/v2/checkout/orders используя наш токен на предъявителя, чтобы делать запросы от имени продавца. Я использую заголовок PayPal-Auth-Assertion со следующим (закодированным) JWT-токеном:

Header:
    {
  "typ": "JWT",
  "alg": "HS256"
}
Body: {
  "email": "[merchant e-mail]",
  "iss": "[my client id]"
}

"Электронная почта продавца" является одной из учетных записей песочницы, которую я открыт в https://developer.paypal.com/developer/accounts/

В ответ я получаю (400) Bad Request {"error":"invalid_request","error_description":"No permissions to set target_client_id"}.

Похоже, что для учетной записи песочницы должен быть дополнительный шаг, чтобы предоставить разрешения для аккаунт разработчика. Для API SOAP я мог бы добавить имя пользователя третьей стороны на следующем экране enter image description here. Тогда я мог бы использовать то же имя пользователя, что и значение заголовка для X-PAYPAL-SECURITY-USERID. Однако я не могу связать учетную запись «песочницы» таким же образом, потому что для основной учетной записи не существует «имени пользователя третьей стороны» (от которого я получаю идентификатор клиента).

Что именно имеет быть настроен для разрешения этих типов сторонних вызовов для REST API?

1 Ответ

0 голосов
/ 27 апреля 2020

Я использую заголовок PayPal-Auth-Assertion со следующим (закодированным) JWT-токеном:

Вам необходимо быть партнером PayPal, чтобы использовать этот тип функций , Свяжитесь с PayPal, если хотите стать партнером.

Если вы хотите использовать их общедоступные API, у вас есть два варианта.

  1. Пусть каждый продавец создаст свое собственное приложение REST API через https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fapplications, и скопируйте и вставьте их действующий идентификатор клиента и секрет в вашу конфигурацию. Это лучшее решение, и это решение, которое вы должны стремиться.
  2. Используйте объект payee: https://developer.paypal.com/docs/checkout/integration-features/custom-payee/, который дает вам меньше контроля (например, не может захватывать разрешения или возвращать деньги)
...