Estou tentando pagar através de um hiperlink 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
- Estou enviando link acima através de sms
- Quando clico no link, ele mostra a lista de aplicativos UPI como opção
- Eu selecionei o aplicativo BHIM (também tentei outros aplicativos)
- Pagamento concluído e até agora funciona bem.
Após o pagamento da UPI, o controlador Spring que lida com a solicitação de "retorno de chamada" para https://test.com/payment/orderId=12345 , não está sendo chamado.
Então, como obter a resposta do pagamento UPI Hyperlink em Java corretamente?
Editar:
Este é o método do controlador. Eu também tentei em @GetMapping
vez 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");
controlador dentro/payment/orderId=123456
diretamente de um navegador, por exemplo? Porque, com base nos seus exemplos, isso não deveria ser possível - veja a resposta dos MyTwoCents ... #/payment/orderId=123456
de web e seu trabalho excelentesRespostas:
Se eu entendi direito, seu URL de redirecionamento é
E quando isso é chamado, você precisa obter o valor do ID do pedido no seu controlador.
Em seguida, tente alterar seu método para algo como isto:
Questão:
Você configurou seu mapeamento de URL como
/payment
apenas, portanto, qualquer coisa a seguir será excluída desse mapeamento, por exemplo:/payment/sdfdsfs
fonte
https://test.com/payment?orderId=123456
como o valor dourl
parâmetro passado para o URL da UPI. Ainda assim, o problema básico e sua solução permanecem os mesmos.fonte
Seu problema é com a assinatura do método. Tente adicionar a resposta ao seu parâmetro de método para obter o objeto de resposta. Mude o seu método para:
fonte