Автоматический интерфейс Paymaster Direct для пластиковых карт
Запрос авторизации следует отправлять на
https://paymaster.ru/direct/authorize/card. Запрос должен содержать следующие обязательные параметры (используется метод POST).
Параметры запроса:
Параметр | Тип данных | Обязательный? | Описание |
response_type | String | Да | Константа. Параметр всегда должен иметь значение "code" |
client_id | String | Да | Идентификатор Продавца в системе PayMaster |
card_number | String | Да | Номер карты пользователя |
card_holder | String | Да | Имя держателя карты |
card_expiry | String | Да | Срок действия карты (ММ/ГГ или ГГГГ-ММ) |
card_cvv | String | Да | CVV код карты |
sign | String | Да | Подпись запроса. Передается либо в заголовке запроса, либо в параметре. |
type | String | Нет | Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest |
iat | String | Да | Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах. |
Пример запроса:
Незакодированный заголовок:
{"alg": "RS256", "IAT": 1347447988}
Незакодированные данные запроса:
{"response_type": "code", "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411", "card_number": "5470000000000000", "card_holder": "IVAN INVANOV", "card_expiry": "04/18", "card_cvv": "123"}
HTTP сообщение:
POST /... HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
request=eyJpYXQiOjE0MzgyNDY4NDEsImFsZyI6IlJTMjU2In0.eyJyZXNwb25zZV90eXBlIjoiY29kZSIsImNsaWVudF9pZCI6IjU0YmY0ZDQyLWI4NWMtNDhlMi04YmRhLWFkMGNmODc2ZjQxMSIsImNhcmRfbnVtYmVyIjoiNTQ3MDAwMDAwMDAwMDAwMCIsImNhcmRfaG9sZGVyIjoiSVZBTiBJTlZBTk9WIiwiY2FyZF9leHBpcnkiOiIwNC8xOCIsImNhcmRfY3Z2IjoiMTIzIn0.j7D9vV7si93Jq4fFnIHD_ckYZx34074XVFOTYZ48XCfCjNyRhY9cGXeaGhHoKfYjlzaCn_WUvYgL-p86lGk0FsilDEesgF3WvcguRHmwY2Xer7W8QUg3e-FDxkFI2UjcF6TV2Q06VAmhP7GxkwOKc0X4zvQrhPBHR1QtJZ660dQ
В зависимости от настроек выдается запрос дополнительного подтверждения, либо токен доступа:
HTTP/1.1 200 OK
{"access_token":"thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g","token_type":"bearer","expires_in":31535999,"account_identifier":"4************1234"}
Если дополнительное подтверждение осуществляется через проведение 3DSecure авторизации, то в ответе возвращается признак 3DSecure и необходимые данные для выполнения авторизации:
{ "confirmation": "3DSecure", "code": "Pbl8KuP8vg", "redirect_url": "https://acs.somebank.ru", "pa_req": "..."}
Если в ответе возвращается признак DebitAmount, то в качестве дополнительного подтверждения пользователь должен указать точную сумму списания с карты:
{ "confirmation": "DebitAmount", "code": "Pbl8KuP8vg" }
Подтверждение суммы списания
Запрос следует выполнять на https://paymaster.ru/direct/authorize/confirm. Запрос должен содержать следующие обязательные параметры (используется метод POST).
Параметры запроса:
Параметр | Тип данных | Обязательный? | Описание |
response_type | String | Да | Константа. Параметр всегда должен иметь значение "code" |
client_id | String | Да | Идентификатор Продавца в системе PayMaster |
code | String | Да | Временный токен, присвоенный при запросе на авторизацию |
amount | String | Да | Сумма списания, два знака в дробной части, разделитель ‘.’ |
sign | String | Да | Подпись запроса. Передается либо в заголовке запроса, либо в параметре. |
type | String | Нет | Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest |
iat | String | Да | Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах. |
Пример запроса:
Незакодированный заголовок:
{"alg": "RS256", "IAT": 1438247717}
Незакодированные данные запроса:
{"response_type": "code", "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411", "code": "Pbl8KuP8vg", "amount": "3.98"}
HTTP сообщение:
POST /... HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
request=eyJpYXQiOjE0NDU5NDkzNTcsImFsZyI6IlJTMjU2In0.eyJyZXNwb25zZV90eXBlIjoiY29kZSIsImNsaWVudF9pZCI6IjU0YmY0ZDQyLWI4NWMtNDhlMi04YmRhLWFkMGNmODc2ZjQxMSIsImNvZGUiOiJQYmw4S3VQOHZnIiwiYW1vdW50IjoiMy45OCJ9.Qljsp-hiug8gvGhnWwqTG3HUK2isYn1O5x8EDwSxmeWYENcQxlpHNkOxCUzAd3c4cwe0GrZY1hHzcfb913_UqnEfLXiSOZIEVQAEX-KP_4S1rbzJFS-vKtVMWhbLWjou4jsmzJVnaS6t_KqeAe8kLVzMOuvU-C2KS7LoclodXzc
В ответ выдается токен доступа::
HTTP/1.1 200 OK
{"access_token":"thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g","token_type":"bearer","expires_in":31535999,"account_identifier":"4************1234"}
Для проведения 3DSecure авторизации нужно перенаправить пользователя на специальную страницу эмитента карты по адресу redirect_url.
В запросе передаются следующие параметры:
PaReq - кодированная информация о операции, подставляется значение pa_req
MD - номер запроса мерчанта для идентификации результата
TermUrl - страница магазина для возврата пользователя после авторизации
Запрос передается методом POST.
После авторизации эмитент перенаправит пользователя на указанную страницу мерчанта TermUrl со следующими полями:
PaRes - кодированный результат авторизации
MD - номер запроса мерчанта, копируется из запроса
Для завершения привязки необходимо передать полученный результат авторизации PaRes через вызов метода завершения привязки.
Завершение 3DSecure авторизации
Запрос следует выполнять на https://paymaster.ru/direct/authorize/complete3ds. Запрос должен содержать следующие обязательные параметры (используется метод POST).
Параметры запроса:
Параметр | Тип данных | Обязательный? | Описание |
response_type | String | Да | Константа. Параметр всегда должен иметь значение "code" |
client_id | String | Да | Идентификатор Продавца в системе PayMaster |
code | String | Да | Временный токен, присвоенный при запросе на авторизацию |
pa_res | String | Да | Результат авторизации 3DSecure |
sign | String | Да | Подпись запроса. Передается либо в заголовке запроса, либо в параметре. |
type | String | Нет | Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest |
iat | String | Да | Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах. |
Пример запроса:
Незакодированный заголовок:
{"alg": "RS256", "IAT": 1438247717}
Незакодированные данные запроса:
{"response_type": "code", "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411", "code": "Pbl8KuP8vg", "pa_res": "eJzVWFmvo0iy/iutnkermh3bLdeRkh1swKwG3th3sFnM8usHn1OnuqZu9Wh0X0aDZDmJjIyMJCK+LzNPZtbFMWPE4djFbyc57ns/jX/L"}
HTTP сообщение:
POST /... HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
request=eyJpYXQiOjE0MzgyNDc3MTcsImFsZyI6IlJTMjU2In0.eyJyZXNwb25zZV90eXBlIjoiY29kZSIsImNsaWVudF9pZCI6IjU0YmY0ZDQyLWI4NWMtNDhlMi04YmRhLWFkMGNmODc2ZjQxMSIsImNvZGUiOiJQYmw4S3VQOHZnIiwicGFfcmVzIjoiZUp6VldGbXZvMGl5L2l1dG5rZXJtaDNiTGRlUmtoMXN3S3dHM3RoM3NGbk04dXNIbjFPbnVxWnU5V2gwWDBhRFpEbUpqSXlNSkNLK0x6TlBadGJGTVdQRTRkakZieWM1N25zL2pYL0wifQ.w5HV198v7w_YnNsnTslwboMuvRrME1UQi1EmuBgi2UC03eE1THtKS0lMGQ9_3FJHojhDvQogP6GGcucswa19f-6eh2Ma2Njk4mjq9EvpBqzlBovzAPIkltu8YIWxSTwBpzn1v2t2te5tGqfIlYO-Ne6LgtesnkCmA3oHIXjhzE0
В ответ выдается токен доступа::
HTTP/1.1 200 OK
{"access_token":"thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g","token_type":"bearer","expires_in":31535999,"account_identifier":"4************1234"}