Тело, которое мы отправили в конечную точку, также прекрасно, это код, который принимает вызов API от почтальона
Код: Выделить всё
[HttpPost]
public ActionResult PaymentNotification(PaymentSession notification)
{
System.Diagnostics.Debug.WriteLine("PaymentNotification endpoint hit");
// Verifica si el cuerpo de la solicitud está vacío o es inválido
if (notification == null || notification.status == null || string.IsNullOrEmpty(notification.signature))
{
var jsonResult = new JsonResult
{
Data = new { message = "Los datos de la solicitud son inválidos o incompletos." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 400; // Código 400 (Bad Request)
return jsonResult;
}
string secretKey = "Hide for security purposes"; // La clave que usas para firmar
string calculatedSignature = GenerateSignature(notification, secretKey);
// Verifica si la firma no coincide
if (calculatedSignature != notification.signature)
{
var jsonResult = new JsonResult
{
Data = new { message = "Firma inválida." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 401; // Código de estado HTTP 401 (No autorizado)
return jsonResult;
}
// Busca la sesión de pago
if (!ExisteRegistro(notification.requestId, notification.reference))
{
var jsonResult = new JsonResult
{
Data = new { message = "Sesión no encontrada." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 404; // Código de estado HTTP 404 (Not Found)
return jsonResult;
}
// Guarda la sesión de pago actualizada
PayUResponse(notification.requestId);
// Responde con código 200 (OK) y mensaje de éxito
var successResult = new JsonResult
{
Data = new { message = "Notificación procesada correctamente." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 200; // Código de estado HTTP 200 (OK)
return successResult;
}
Код уже настроен для получения запросов http и https, а также сервера IIS.
Конечная точка отлично работает на локальном хосте или даже при использовании NGROK, и он работает для POST и GET.
С производственным доменом это не работает, URL-адрес полностью в порядке, и запрос GET позволяет мне получить некоторые данные, которые нам нужно сделать. уверен, что это работает, но при запросе POST мы получаем ошибку 404 - Файл или каталог не найден.
Подробнее здесь: https://stackoverflow.com/questions/792 ... st-request