Перейти к основному содержанию

Web-hook

Меньше 1 минуты

Web-hook

Для уведомлять магазина о получении платежа, мы используем механизм web-hook. Чтобы получать информацию о платежах в вашем магазине, зарегистрируйте конечную точку, на которую вы хотите получать уведомления о платежах, в настройках магазина мерчанта.

img.png Где используется “secret” для подписи.

Обязательно установите флажок напротив "Поступил новый платеж"

Для получение обратного вызова с целью узнать о платеже, вам необходимо создать конечную точку на стороне интегратора, на которую мерчант отправит событие в данный момент. Мерчант поддерживает только один вариант событий: получение платежа.

Для обеспечения безопасности магазина используется механизм подписи. Мерчант передает зашифрованную строку sha256 в заголовке X-sign, которая включает в себя тело отправляемого запроса и объединенный “secret”.

Например, мерчант отправляет веб-хук по URL _____________ с запросом POST

Тело запроса в этом случае будет выглядеть следующим образом

{
  "orderId": "",
  "status": "paid",
  "createdAt": "2023-09-15T07:31:46.000000Z",
  "paidAt": "2023-09-15T07:31:46.000000Z",
  "expiredAt": "2023-09-15T07:51:46.000000Z",
  "amount": 15,
  "receivedAmount": "15.00",
  "transactions": [
    {
      "txId": "98af9289aa06da5a13a9881dd2ee74ba85cfd1af20343ce50c6071275eea8e7b",
      "createdAt": "2023-09-15 07:31:46",
      "currency": "USDT",
      "blockchain": "tron",
      "amount": "15.00000000",
      "amountUsd": "15.00",
      "rate": "1.00000000"
    }
  ],
  "payer": {
    "id": "623cf62d-7ec3-4b60-8abc-ba063f3bbf93",
    "storeUserId": "502162"
  }
}

наш заголовок X-sign будет eaba3d825829da2db79b95ef362e7b24a4c8b27fb643bad54d180e43ca9152de

Соответственно, со стороны хранилища стоит проверить правильность подписи, создав тот же хэш и сверив его с заголовком

$requestBodyString = '{"orderId":"","status":"paid","createdAt":"2023-09-15T07:31:46.000000Z","paidAt":"2023-09-15T07:31:46.000000Z","expiredAt":"2023-09-15T07:51:46.000000Z","amount":15,"receivedAmount":"15.00","transactions":[{"txId":"98af9289aa06da5a13a9881dd2ee74ba85cfd1af20343ce50c6071275eea8e7b","createdAt":"2023-09-15 07:31:46","currency":"USDT","blockchain":"tron","amount":"15.00000000","amountUsd":"15.00","rate"
:"1.00000000"}],"payer":{"id":"623cf62d-7ec3-4b60-8abc-ba063f3bbf93","storeUserId":"502162"}}';

$secret = 'c23a3ce904b4a9421d35590639f3589e0a491bf7'

$sign = hash('sha256', $requestBodyString . $secret); //eaba3d825829da2db79b95ef362e7b24a4c8b27fb643bad54d180e43ca9152de

если по какой-либо причине не удалось получить ответ 200 от магазина, через некоторое время мерчант повторно отправит сообщение, частота отправки увеличивается экспоненциально.

Последнее обновление:
Контрибьюторы: RadgRabbi,RadgRabbi