首页 > 解决方案 > 如何在 UPI 超链接支付中指定的 url 上获得响应

问题描述

我正在尝试通过 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 支付完成后,处理对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;
}

标签: javaspring

解决方案


如果我理解正确,您的重定向 URL 是

https://test.com/payment/orderId=123456

当调用它时,您需要在控制器中获取订单 ID 值。

然后尝试将您的方法更改为以下内容:

@GetMapping(value = "/payment/{order}")
public ModelAndView credPayment(@PathVariable("order") String order, HttpServletRequest request) {
    System.out.println(order); // prints orderId=123456
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("redirect:/");
    return modelAndView;
}

问题:

您已将 URL 映射配置为/paymentonly,因此之后的任何内容都将从此映射中排除,例如:/payment/sdfdsfs


推荐阅读