You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中UPI超链接支付回调未触发,如何正确获取支付响应?

解决UPI支付回调未触发的问题

首先,咱们先定位核心问题:你的控制器没被调用,大概率是回调URL格式错误或者服务不可达导致的,咱们一步步拆解排查:

1. 修正UPI支付链接中的回调URL参数

你当前UPI链接里的url参数写法有问题:

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

orderId=123456是查询参数,不能直接拼在路径末尾,正确格式应该是把参数放在?后面:

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应用回调时才会请求到你@PostMapping("/payment")映射的控制器路径上。

2. 兼容UPI应用的回调HTTP方法

不同UPI应用的回调请求方法可能存在差异,BHIM等主流应用通常用POST,但为了兼容所有情况,你可以让控制器同时支持GET和POST:

@RequestMapping(value = "/payment", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView credPayment(HttpServletRequest request) {
    // 你的原有逻辑
}

3. 确保回调服务公网可达

如果你的https://test.com是本地测试环境(比如localhost),UPI应用的服务器根本无法访问到你的本地服务。这种情况下你需要:

  • 将服务部署到公网可访问的服务器上
  • 或者用本地穿透工具(如ngrok)把本地服务暴露为公网地址,替换回调URL中的域名。

4. 核对UPI回调的参数名

UPI应用传递的参数名可能和你预期的不一致,比如部分服务商的参数是全小写的status而非Status,transactionId而非txnId。你代码里已经打印了所有参数名,这很好——当回调触发后,查看控制台输出的参数名,再调整参数获取逻辑。比如改用@RequestParam更清晰直观:

@RequestMapping(value = "/payment", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView credPayment(
        @RequestParam("orderId") String orderId,
        @RequestParam(value = "txnId", required = false) String txnId,
        @RequestParam(value = "responseCode", required = false) String responseCode,
        @RequestParam(value = "status", required = false) String status) {
    
    System.out.println("orderId: " + orderId);
    System.out.println("txnId: " + txnId);
    System.out.println("status: " + status);
    
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("redirect:/");
    return modelAndView;
}

5. 模拟回调测试

在等待UPI应用回调前,你可以用Postman直接发送请求测试控制器是否正常工作:

  • 请求方法选POST或GET
  • URL填https://test.com/payment?orderId=123456
  • 在Query参数或请求Body中添加模拟的UPI参数(如txnId=test123&status=SUCCESS)
  • 查看控制台输出,确认控制器能正常接收参数并执行逻辑。

内容的提问来源于stack exchange,提问作者Nilesh Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:30:46