Estoy tratando de pagar a través de un hipervínculo UPI como
upi://pay?pa=abc@upi&pn=payeeName&tr=1234&tn=Pay%20to%20payeeName&am=1&mam=1&cu=INR&url=https://test.com/payment/orderId=123456
- Estoy enviando el enlace anterior a través de sms
- Cuando hago clic en el enlace, muestra la lista de aplicaciones UPI como opción
- He seleccionado la aplicación BHIM (también probé otras aplicaciones)
- Luego completó el pago, hasta ahora funciona bien.
Una vez que se realiza el pago UPI , no se llama al controlador Spring que maneja la solicitud de "devolución de llamada" a https://test.com/payment/orderId=12345 .
Entonces, ¿cómo obtener la respuesta del pago UPI Hyperlink en Java correctamente?
Editar:
Este es el método del controlador. También lo he intentado en @GetMapping
lugar de @PostMapping
.
@PostMapping("/payment")
public ModelAndView credPayment(HttpServletRequest request) {
String key = request.getParameter("orderId");
String txnId = request.getParameter("txnId");
String responseCode = request.getParameter("responseCode");
String approvalRefNo = request.getParameter("ApprovalRefNo");
String status = request.getParameter("Status");
String txnRef = request.getParameter("txnRef");
System.out.println("Parameter Names");
while (request.getParameterNames().hasMoreElements()) {
System.out.println(request.getParameterNames().nextElement());
}
System.out.println("Header Names");
while (request.getHeaderNames().hasMoreElements()) {
System.out.println(request.getHeaderNames().nextElement());
}
System.out.println("txnId : "+txnId);
System.out.println("responseCode : "+responseCode);
System.out.println("ApprovalRefNo : "+approvalRefNo);
System.out.println("Status : "+status);
System.out.println("txnRef : "+txnRef);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/");
return modelAndView;
}
System.out.println("Hello");
dentro del controlador/payment/orderId=123456
directamente desde un navegador, por ejemplo? Debido a tus ejemplos, no debería ser posible. Mira la respuesta de MyTwoCents .../payment/orderId=123456
desde la web y funciona bienRespuestas:
Si lo entendí correctamente, su URL de redireccionamiento es
Y cuando se llama a esto, debe obtener el valor de ID de pedido en su controlador.
Luego intente cambiar su método a algo como esto:
Problema:
Ha configurado su mapeo de URL como
/payment
solo, por lo que cualquier cosa posterior se excluirá de este mapeo, por ejemplo:/payment/sdfdsfs
fuente
https://test.com/payment?orderId=123456
del valor delurl
parámetro pasado a la URL UPI. Aún así, el problema básico y su solución sigue siendo el mismo.fuente
Su problema es con su firma de método. Intente agregar la respuesta a su parámetro de método para que pueda obtener el objeto de respuesta. Cambie su método a:
fuente