Senior
Hoe gaan we het antwoord van de betalingsprovider ontvangen? De interviewer stelt voor om een webhook te gebruiken.
sobes.tech AI
Antwoord van 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)
}
Таким образом, вебхук позволяет получать уведомления в реальном времени без необходимости опрашивать провайдера.