Вебхук — это механизм моментального оповещения вашей системы о настроенных событиях на стороне Xsolla. Вы можете использовать вебхуки для автоматизации бэк-офиса и других функций вашего приложения.
Примеры событий, о которых вы можете получать оповещения:
Когда происходит настроенное событие, Xsolla через вебхук оповещает вашу систему об этом. В результате могут выполняться такие действия, как:
Пример работы вебхука обработки платежей:
Для корректной работы сервиса вебхуков должны выполняться следующие условия:
185.30.20.0/24
, 185.30.21.0/24
, 185.30.23.0/24
.Обратите внимание
Если обработчик вебхуков получил вебхук с идентификатором, который уже существует в базе, необходимо вернуть результат предыдущей обработки данной транзакции. Не рекомендуется зачислять пользователю повторную покупку и создавать дублирующие записи в базе данных.
Примечание
Xsolla использует HTTP-коды ответа для обозначения успешного или ошибочного запроса. Код 204 обозначает успешную обработку оповещения.
Из-за проблем с интернет-соединением или временных проблем на вашем сервере вебхуки могут теряться или задерживаться. Для решения этой проблемы Xsolla отправляет вебхуки многократно. Вебхуки отправляются в течение 12 часов с момента первой попытки, пока ваш обработчик не подтвердит их получение. Максимальное количество попыток — 12.
Примечание
Хотя интернет-соединение является частой причиной проблем с вебхуками, наиболее вероятной причиной является проблема в логике обработчика вебхуков.
Подпись обеспечивает безопасность передачи данных. Генерация подписи состоит из следующих шагов:
POST /your_uri HTTP/1.1
host: your.host
accept: application/json
content-type: application/json
content-length: 165
authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
"notification_type":"user_validation",
"user":{
"ip":"127.0.0.1",
"phone":"18777976552",
"email":"email@example.com",
"id":1234567,
"name":"Xsolla User",
"country":"US"
}
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
"notification_type":
"user_validation",
"user":
{
"ip": "127.0.0.1",
"phone": "18777976552",
"email": "email@example.com",
"id": 1234567,
"name": "Xsolla User",
"country": "US"
}
}'
Коды ошибок для HTTP-кода 400:
Код | Описание |
---|---|
INVALID_USER | Неверный пользователь |
INVALID_PARAMETER | Неверный параметр |
INVALID_SIGNATURE | Подпись неверна |
INCORRECT_AMOUNT | Некорректная сумма |
INCORRECT_INVOICE | Неверный заказ |
HTTP/1.1 400 Bad Request
{
"error":{
"code":"INVALID_USER",
"message":"Invalid user"
}
}