Senior
Comment allons-nous recevoir la réponse du fournisseur de paiement ? L'intervieweur propose d'utiliser un webhook.
sobes.tech IA
Réponse de l'IA
Использование вебхука для получения ответа от 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)
}
Таким образом, вебхук позволяет получать уведомления в реальном времени без необходимости опрашивать провайдера.