Возврат посредством API
Общая информация о возвратах
Возврат можно провести посредством API. Для возвратов доступны все платежные методы: банковские карты (Visa/MasterCard/МИР), СБП, Яндекс Pay, MИР Pay.
Функциональность возвратов доступна для каждого сервиса и канала оплаты по умолчанию. Для отключения возвратов на конкретном сервисе обратитесь в отдел технической интеграции: acq_integration@life-pay.ru
Особенности проведения возвратов:
- Проведенные день в день проходят с минимальной задержкой. Зачисление денежных средств на счет плательщика происходит в течение операционного банковского дня.
- Для возвратов, проведённых на следующий день, срок зачисления денежных средств может составлять до семи рабочих дней, в зависимости от банка эмитента.
- Возвраты по СБП происходят день в день.
- Операцию возврат а невозможно отменить или изменить.
Возврат посредством API
Для создания заявки через API необходимо выполнить POST запрос на URL:
https://api-ecom.life-pay.ru/v1/invoices/{invoice_id}/refunds
, где {invoice_id}
ИД вашего счёта из вебхук-нотфикации или из запроса "создать счёт на оплату".
В заголовке запроса необходимо передать Content-Type: "application/json"
.
Авторизация осуществляется с помощью JWT Bearer, полученного в ответ на запрос https://api-ecom.life-pay.ru/v1/auth
.
Параметры запроса:
Параметр | Тип объекта | Описание |
---|---|---|
invoice_id | string {uuid} | uuid сущности |
amount | number {float} | сумма к возврату в валюте |
reason | string | причина возврата (опционально) |
refund_ext_id | string | идентификатор возврата во внешней системе (опционально) |
В ответ возвращается JSON с результатом обработки запроса
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2019-08-24T14:15:22Z",
"status": "progress",
"amount": 100,
"reason": "Заявление на возврат #23 от 10.01.2020",
"message": ""
}
Поля, возвращающиеся в случае успеха:
Параметр | Тип объекта | Описание |
---|---|---|
id | string {uuid} | uuid сущности |
created_at | string {date-time} | время создания |
status | string | статус сущности |
message | string | текст ошибки (опционально) |
amount | number {float} | сумма к возврату в валюте |
reason | string | причина возврата (опционально) |
refund_ext_id | string | идентификатор возврата во внешней системе (опционально) |
Поля, возвращающиеся в случае некорректного запроса:
Параметр | Тип объекта | Описание |
---|---|---|
message | string | текст ошибки (опционально) |
status | string | статус сущности |
Пример
- Python
- C#
- PHP
import http.client
import json
conn = http.client.HTTPSConnection("api-ecom.life-pay.ru")
headersList = {
"Content-Type": "application/json",
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2QeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2Q"
}
payload = json.dumps({
"amount": 1745.00,
"reason": "refund test payment",
"refund_ext_id": "ref_order_001"
})
conn.request("POST", "/v1/invoices/497f6eca-6276-4993-bfeb-53cbbbba6f08/refunds", payload, headersList)
response = conn.getresponse()
result = response.read()
print(result.decode("utf-8"))
var client = new HttpClient();
var request = new HttpRequestMessage();
request.RequestUri = new Uri("https://api-ecom.life-pay.ru/v1/invoices/497f6eca-6276-4993-bfeb-53cbbbba6f08/refunds");
request.Method = HttpMethod.Post;
request.Headers.Add("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2QeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2Q");
var bodyString = "{ \"amount\": 1745.00, \"reason\": \"refund test payment\", \"refund_ext_id\": \"ref_order_001\"}";
var content = new StringContent(bodyString, Encoding.UTF8, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result)
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withBody(
'{
"amount": 1745.00,
"reason": "refund test payment",
"refund_ext_id": "ref_order_001"
}', 'json'
)
->withHeaders([
'Content-Type'=> 'application/json',
'Authorization'=> 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2QeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6ImlrYW9paW91eXRBb3V5ckRTVVRZT0FGU2l5U2ZvdHVBZ3lsU0FEIiwiZXhwIjoxNjc3NjAxMzI2Ljk1OTgwN30.eyJleHAiOjE2Nzc2MDEzMjYuOTU5ODA3LCJpbnZvaWNlX2lkIjpudWxsLCJzZXJ2aWNlX2lkIjo4NzY2OH0.z_grZjfNLkGrUeVr2gEirvKrAYVNE4xXaG5ZZyBRwa27qLkDZKVHypnZLpm0AczZU7q6wOo5K34vbqf4VhJe2Q',
])
->post('https://api-ecom.life-pay.ru/v1/invoices/497f6eca-6276-4993-bfeb-53cbbbba6f08/refunds');
echo $response->body();