Sobes.tech
Senior

Cum vom primi răspunsul de la furnizorul de plăți? Intervievatorul propune să folosească un webhook.

sobes.tech AI

Răspuns de la AI

Использование вебхука для получения ответа от payment провайдера — распространённый и удобный способ асинхронного уведомления о статусе платежа.

Как это работает:

  • Вы регистрируете на стороне провайдера URL вашего сервера (вебхук).
  • После обработки платежа провайдер отправляет HTTP POST запрос на этот URL с информацией о результате.
  • Ваш сервер принимает запрос, проверяет подпись/авторизацию для безопасности и обновляет статус платежа в системе.

Пример на Go (упрощённо):

func paymentWebhookHandler(w http.ResponseWriter, r *http.Request) {
    // Проверка метода
    if r.Method != http.MethodPost {
        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
        return
    }

    // Чтение тела запроса
    body, err := ioutil.ReadAll(r.Body)
    if err != nil {
        http.Error(w, "Bad request", http.StatusBadRequest)
        return
    }

    // Валидация подписи (зависит от провайдера)
    if !validateSignature(r.Header, body) {
        http.Error(w, "Unauthorized", http.StatusUnauthorized)
        return
    }

    // Парсинг данных
    var paymentStatus PaymentStatus
    if err := json.Unmarshal(body, &paymentStatus); err != nil {
        http.Error(w, "Bad request", http.StatusBadRequest)
        return
    }

    // Обновление статуса платежа в базе
    updatePaymentStatus(paymentStatus)

    w.WriteHeader(http.StatusOK)
}

Таким образом, вебхук позволяет получать уведомления в реальном времени без необходимости опрашивать провайдера.