POSTСмена состояния заказа
ваш адрес изcallbackUrl
Отправляется на callback_url мерчанта при каждой смене состояния заказа.
Ответьте любым 2xx в течение 5 секунд, иначе колбэк будет повторён
(до 8 попыток: 30 с, 1, 2, 4, 8, 16, 30 мин).
Одно событие может прийти повторно и не по порядку. Ключ события —
order_id + sequence: уже обработанную пару принимайте с 200,
событие с sequence меньше полученного не применяйте.
Обработчик
import express from 'express';
const app = express();
app.post('/hooks/terminal', express.json(), async (req, res) => {
const event = req.body;
// Ключ события — order_id + sequence. Событие может прийти повторно и не
// по порядку: уже обработанную пару принимаем с 200, событие с sequence
// меньше полученного не применяем.
const last = await lastSequence(event.order_id);
if (last === undefined || event.sequence > last) await apply(event);
// Любой 2xx в течение 5 секунд — доставлено, иначе колбэк повторится.
res.sendStatus(200);
});from flask import Flask, request
app = Flask(__name__)
@app.post("/hooks/terminal")
def terminal_hook():
event = request.get_json()
# Ключ события — order_id + sequence. Событие может прийти повторно и не
# по порядку: уже обработанную пару принимаем с 200, событие с sequence
# меньше полученного не применяем.
last = last_sequence(event["order_id"])
if last is None or event["sequence"] > last:
apply(event)
# Любой 2xx в течение 5 секунд — доставлено, иначе колбэк повторится.
return "", 200Параметры
Заголовки
X-Request-IDstringИдентификатор доставки для обращений в поддержку
Тело запроса
application/json · обязательно
order_idstringобязательноеИдентификатор заказа
merchant_idintegerобязательноеsequenceintegerобязательноеНомер события по заказу, растёт с каждой сменой состояния
statestringобязательное"created""attempting""awaiting""orphaned""review""succeeded""failed"amountobjectобязательноеСумма
rateobjectобязательноеКурс
occurred_atstringобязательноеВремя события, RFC 3339
merchant_order_idstringИдентификатор заказа на стороне мерчанта
reason_codestringКод причины в верхнем регистре (см. /v1/dictionary/reasons)
requisitesobjectРеквизиты для оплаты
Ответы
Колбэк принят
Доступ
mutualTLSmutualTLSКлиентский сертификат, выданный мерчанту при подключении.
X-SignatureapiKeyHMAC-подпись запроса секретным ключом мерчанта.