Назад к вопросам
Senior
4
Как будем получать ответ от payment провайдера? Интервьюер предлагает использовать вебхук.
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech 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)
}
Таким образом, вебхук позволяет получать уведомления в реальном времени без необходимости опрашивать провайдера.