【发布时间】:2019-11-09 11:55:16
【问题描述】:
我正在尝试通过像
这样的 UPI 超链接付款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
- 我通过短信发送上面的链接
- 当我点击链接时,它会显示 UPI 应用程序列表作为选项
- 我选择了 BHIM 应用(也尝试了其他应用)
- 然后完成支付,到现在一切正常。
UPI 支付完成后,处理对https://test.com/payment/orderId=12345 的“回调”请求的 Spring 控制器不会被调用。
那么如何正确获取Java中UPI超链接支付的响应呢?
编辑:
这是控制器方法。我也试过@GetMapping而不是@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;
}
【问题讨论】:
-
您期望的是 GET 还是 POST 请求?链接后面的控制器是否也制作了? “PaymentController.java”的控制器背后的代码是什么?有路线吗?您可以使用邮递员显式调用它并发送预期的变量吗?当您自己调用它时,您会看到什么响应?
-
付款成功。我已经为重定向 url [test.com/payment/orderId=123456] 尝试了 GET 和 POST,我也可以显式调用它。我只是在控制器内部做
System.out.println("Hello"); -
能否提供代码sn-p?
-
-我正在通过短信发送链接-当我单击链接时,它显示 UPI 应用程序列表作为选项-我选择了 BHIM 应用程序(也尝试了其他应用程序)-然后完成付款,直到现在它可以工作。 - 付款完成后重定向 url 应该被调用。但我不知道他们是否调用重定向网址。如果他们调用 url,那么我无法在给定的代码上处理它。
-
嗨,@NileshPatel,你能从回调 URL 中获取交易状态吗?我也面临同样的问题。