Первый запрос
После того как вы настроили мерчанта и интеграцию, можно делать первый pay-запрос.
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}{ "status": "declined", "details": "Friendly error message", "amount": 123456, "currency": "EUR", "logs": [], "result": true}{ "status": "pending", "amount": 123456, "currency": "EUR", "logs": [], "result": true}{ "error": "Internal error message", "logs": [], "result": false}