Перейти к содержимому

Первый запрос

После того как вы настроили мерчанта и интеграцию, можно делать первый pay-запрос.

Merchant payment request
curl 'https://stage.reactivepay.com/api/v1/payments' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 2b2f542d9694bf784ab0' \
-d '{
"amount": 123456,
"currency": "EUR",
"card": {
"cvv": "123",
"pan": "4242424242424242",
"holder": "Test holder",
"expires": "02/2077"
},
"customer": {
"email": "email@mail.com"
},
"product": "first product"
}'

Если настройка была выполнена корректно, вы должны получить POST-запрос на /pay.

{
"method_name": "pay"
}

Однако в таком виде запрос бесполезен.

Для запроса к API провайдера как минимум необходимы параметры, переданные мерчантом: card, amount, currency. Также нам нужен ключ для авторизации запроса к провайдеру и, возможно, другие настройки мерчанта.

Чтобы это исправить, нужно добавить в настройки интеграции необходимые параметры:

Обновление настроек интеграции
curl 'https://stage.reactivepay.com/api/v1/gateway_settings' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic YWRtaW46YWRtaW4=' \
-d '
...
"gateway_key": "my_gateway",
"methods": {
"pay": {
"enable_status_checker": true,
"final_waiting_seconds": 10,
"params_fields": {
"params": [],
"payment": [],
"settings": []
"params": ["pan", "expires", "holder", "cvv"],
"payment": ["gateway_currency", "gateway_amount"],
"settings": ["api_key"]
}
},
"status": {
"params_fields": {
"params": [],
"payment": [],
"settings": []
"settings": ["api_key"]
}
}
},
...
'

Теперь, повторив запрос мерчанта, мы получаем полезные данные, с которыми можно делать запрос к API провайдера.

{
"settings": {
"api_key": "0266e225-4225-4ed1-94f7-1b612d15e948"
},
"params": {
"pan": "4242424242424242",
"expires": "02/2077",
"holder": "Test holder",
"cvv": "123"
},
"payment": {
"gateway_currency": "EUR",
"gateway_amount": 123456
},
"method_name": "pay"
}

Сделав запрос в гейт, интеграция должна вернуть один из ответов:

{
"status": "approved",
"amount": 123456,
"currency": "EUR",
"logs": [],
"result": true
}