Внешние мерчанты (/ext)
Динамический роутинг внешних уведомлений и покупок:
- Путь: /ext/:api_type/:merchant/:action
- Поддержка методов:
GETиPOST(зависит от мерчанта) - Авторизация: выполняется обработчиком мерчанта (подпись/секреты), пользователь не требуется
merchant в URL — это ключ профиля из infrastructure.platforms.<api_type>.merchant_profiles. Например, /ext/32/xsolla_ptr/token использует профиль xsolla_ptr, а /ext/32/xsolla/token сопоставляется с merchant_profiles.default, если отдельный ключ xsolla не задан.
Мерчанты и действия
exe:buy:action=get_item|buy_item, параметры form или query, подписьsig(MD5 отсортированных полей +secret_key)
fs:buy: formpriceFmCents,itemId,transactionId,userId,sig(MD5)
gm:buy: querymerchant_param(JSON citem_id),sum,tid,uid,sign(MD5)
mm:buy: querymailiki_price,service_id,transaction_id,uid,sig(MD5)
vk:buy: form или querynotification_type,user_id|receiver_id,order_id,item,item_price,sig(MD5)
ok:buy: queryamount,product_code,transaction_id,uid,sig(MD5). Ошибки - XML (Invocation-error: 2,<error_code>2</error_code>)
beeline:buy: JSON{id,status,productId,price,phone,externalId}; приstatus=successсоздаёт транзакцию
dr:buy: queryprice,sid,id,uid; ответы"OK"/"RETRY"
play_deck:buy: JSONpayment.successful,payment.externalId(<product_id>|<tx>),payment.amount,payment.telegramId
xsolla:webhook:Authorization: Signature <sha1(body+webhook_secret)>,notification_type=payment|user_validation|order_paidtoken: JSON сapi_type,api_uid-> проксирует запрос к Xsolla
Подписи (кратко)
exe:sig = md5(join(sorted(key=value&..)) + secret_key)fs:sig = md5(priceFmCents + itemId + transactionId + userId + secret_key)gm:sign = md5(merchant_param + sum + tid + uid + secret_key)mm:sig = md5(uid + service_id + mailiki_price + transaction_id + secret_key)vk:sig = md5(concat(sorted(params without sig)) + app_secret)ok:sig = md5(concat(sorted(params without sig)) + application_secret_key)mobage:signature = sha1(concat(sorted(params without signature)) + consumer_secret)xsolla: Webhook HMAC/sha1(body + webhook_secret) вAuthorization: Signature ...
Важно: конкретный набор полей и порядок могут отличаться; см. отдельные обработчики interfaces/api/controllers/ext/merchant_*.go.
Проверка конфигурации
Маршрут отклоняется (404), если мерчант не включён для указанного api_type в конфигурации infrastructure.platforms.<api_type> (см. основной конфиг).
Коды/ответы (важные случаи)
gm/mm:{"error_code":700,"status":2}при ошибке подписи;{"error_code":703,"status":2}при неверной ценеvk:{"error":{"error_code":10|11|21,"critical":true}}ok: XML‑ошибки сInvocation-error: 2exe:{"error":{"code":10|11|20}}либо{"response":{"order_id":...}}mobage:{"returnCode":"OK|ERROR","returnMessage":"..."}+signature
Traffic Flows Webhook
- Путь: POST /ext/traffic_flows/webhook
- Типы:
test_connection- ответ{ "ready": true, "traffic_flow": {...} }connected- отмечает участие как connected; ответ{ "connected": true }completed- создаёт сообщение и отмечает участие как completed; ответ{ "completed": true, "awarded": true }
- Поиск флоу: по
keyсреди включённых OUTGOING.
