Приложения разработчика
OAuth-приложения
Создавайте приложения partner, запрашивайте делегированный доступ к компаниям и вызывайте API-интерфейсы MakeCrypto с ограниченными токенами OAuth.
Портал разработчиков
Создавайте приложения partner и управляйте ими в https://apps.makecrypto.io. Приложения принадлежат компании MakeCrypto и определяют URI перенаправления, разрешенные области OAuth, webhooks, значок, контакт службы поддержки, политику конфиденциальности и условия, отображаемые во время согласия.
Каждое конфиденциальное приложение имеет секрет клиента. Секрет отображается один раз при его создании или ротации, а затем сохраняется только в виде хеша. Публичные приложения должны использовать PKCE и не получать секретности.
Код авторизации с PKCE
MakeCrypto поддерживает корпоративное делегирование OAuth для приложений partner. Запускает поток, отправляя пользователя в конечную точку авторизации с точным зарегистрированным URI перенаправления и запросом PKCE S256.
GET https://makecrypto.io/oauth/authorize
?response_type=code
&client_id=mco_app_...
&redirect_uri=https%3A%2F%2Fpartner.example%2Fcallback
&scope=company%3Aread%20makepay%3Apayment-links%3Aread
&resource=https%3A%2F%2Fmakecrypto.io%2Fapi%2Fpartner%2Fv1
&code_challenge=BASE64URL_SHA256_VERIFIER
&code_challenge_method=S256
Пользователь выбирает компанию, просматривает запрошенные разрешения и одобряет или отклоняет доступ. Если вы одобрите, MakeCrypto перенаправит вас обратно с кратковременным кодом авторизации.
Обменяйтесь кодом на конечной точке токена. Конфиденциальные клиенты проходят аутентификацию с помощью client_secret_basic или client_secret_post; общедоступные клиенты проходят аутентификацию с помощью своих верификаторов client_id и PKCE.
POST https://makecrypto.io/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code
&code=mco_code_...
&redirect_uri=https%3A%2F%2Fpartner.example%2Fcallback
&code_verifier=ORIGINAL_PKCE_VERIFIER
Токены доступа являются недолговечными носителями JWT. Токены обновления меняются при каждом использовании, а повторное использование токена обновления приводит к отзыву семейства токенов.
Официальные встроенные интеграции, такие как плагин MakePay WordPress, не используют портал разработчика или общий секрет клиента. Они регистрируют одну общедоступную установку для каждого магазина на POST /oauth/native/installations, используют точное соответствие URI обратного вызова и получают токены, привязанные к DPoP, которые должны быть отправлены с Authorization: DPoP и соответствующим тестовым заголовком DPoP.
Официальный SDK
Используйте официальный SDK, если вам нужна интеграция на стороне сервера без создания HTTP-клиента, полезных данных платежных ссылок и проверки подписи webhooks с нуля.
| SDK | Использовать | Гид |
|---|---|---|
| SDK PHP MakePay | PHP, Laravel, Symfony, собственный checkout и создание платных ссылок на бэкэнде. | SDK PHP |
| SDK MakePay НПМ | Node.js, Next.js, серверные части TypeScript и серверные обработчики webhooks. | SDK NPM |
Конечные точки
| Цель | Конечная точка |
|---|---|
| Авторизация | GET /oauth/authorize |
| Обмен токенов | POST /oauth/token |
| отзыв | POST /oauth/revoke |
| Самоанализ | POST /oauth/introspect |
| Отправленный запрос на авторизацию | POST /oauth/par |
| Родной журнал установки | POST /oauth/native/installations |
| JWKS | GET /oauth/jwks.json |
| Метаданные сервера авторизации | GET /.well-known/oauth-authorization-server |
| Метаданные защищенного ресурса | GET /.well-known/oauth-protected-resource |
Объем
| объем | Доступ |
|---|---|
company:read | Прочтите идентичность и основные настройки выбранной компании. |
wallet:balances:read | Чтение баланса кошелька выбранной компании. |
wallet:activity:read | Прочтите активность кошелька и расчеты. |
makepay:payment-links:read | Прочтите ссылки на оплату MakePay и статус платежа. |
makepay:payment-links:write | Создайте и обновите платежные ссылки MakePay. |
makepay:customers:read | Чтение записей клиентов MakePay. |
makepay:customers:write | Создайте и обновите записи клиентов MakePay. |
makepay:subscriptions:read | Чтение записей подписки MakePay. |
makepay:subscriptions:write | Создайте и обновите подписки MakePay. |
makepay:settings:read | Прочтите настройки merchant MakePay и включенные ресурсы. |
makepay:settings:write | Обновите настройки merchant MakePay и конфигурацию обратного вызова. |
makepay:webhooks:read | Прочтите конечные точки webhook MakePay и журналы доставки. |
makepay:webhooks:write | Создайте, обновите, протестируйте и повторите доставку webhook MakePay. |
Разрешения на маршрут API
| Маршрут | Метод | Требуемый объем |
|---|---|---|
/api/partner/v1/makepay/payment-links | GET | makepay:payment-links:read |
/api/partner/v1/makepay/payment-links | POST | makepay:payment-links:write |
/api/partner/v1/makepay/customers | GET | makepay:customers:read |
/api/partner/v1/makepay/customers | POST | makepay:customers:write |
/api/partner/v1/makepay/subscriptions | GET | makepay:subscriptions:read |
/api/partner/v1/makepay/subscriptions | POST | makepay:subscriptions:write |
/api/partner/v1/makepay/settings | GET | makepay:settings:read |
/api/partner/v1/makepay/settings | PUT | makepay:settings:write |
/api/partner/v1/makepay/webhook-requests | GET | makepay:webhooks:read |
/api/partner/v1/companies/{id}/wallet/balances | GET | wallet:balances:read |
/api/partner/v1/companies/{id}/wallet/activity | GET | wallet:activity:read |
Подпись webhooks
Сообщения webhooks приложения включают заголовок makecrypto-signature с меткой времени v1 и значениями подписи. Проверяет актуальность метки времени, перестраивает payload, подписанный как timestamp.rawBody, и сравнивает подпись с секретом webhook, отображаемым один раз при создании или смене конечной точки.
Управление подключенными приложениями
Утвержденные гранты OAuth отображаются на информационной панели компании под Integrations -> Connected apps. Администраторы предприятия могут просматривать состояние приложения, последний доступ и предоставленные области, а также отзывать доступ, когда соединение partner необходимо отключить.