JAVA后台如何回复微信V3支付的通知

本文详细介绍了JAVA后台如何接收和处理微信V3支付通知,包括通知规则、通知报文结构以及提供了一个示例代码,展示了如何根据通知规则返回适当的HTTP状态码和应答信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

微信支付API升级到V3版本后,提供了更安全,更方便的调用。对于很多新人,不知道如何下手, 计划写几篇文章,给新手一一解惑。 代码示例,后端为JAVA, 前端为uniApp。

疑问:JAVA后台如何回复微信V3支付的通知

微信支付的总流程

看上图,步骤15 用户支付成功后,商户可接收到微信支付支付结果通知支付结果通知API。

通知规则

用户支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理该消息,并返回应答。

对后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。(通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m)

通知报文

支付结果通知是以POST 方法访问商户设置的通知url,通知的数据以JSON 格式通过请求主体(BODY)传输。通知的数据包括了加密的支付结果详情。

回复的内容

商户根据自身的业务逻辑,安装指定格式回复给微信支付系统。

接收成功:HTTP应答状态码需返回200或204,无需返回应答报文。
接收失败:HTTP应答状态码需返回5XX或4XX,同时需返回应答报文,格式如下:

参数名变量类型必填描述
返回状态码codestring[1,32]错误码,SUCCESS为清算机构接收成功,其他错误码为失败。示例值:FAIL
返回信息messagestring[1,64]返回信息,如非空,为错误原因。示例值:失败

参考代码

@RestController
public class WxPayController {
    @Resource
    private WxPayService wxPayService;
  
    /**
     * 微信支付平台回调
     * @param request
     * @param response
     * @throws Exception
     */
    @PostMapping("/wxpay/notifyWxPay")
    public Map<String, String>  notifyWxPay(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //初始化map,给微信响应用
        Map<String, String> retMap = new HashMap<>(2);

        Result ret =  wxPayService.procWxPayNotify(request,response);
        if (ret.isSuccess()) {
            retMap.put("code", "SUCCESS");
            retMap.put("message", "成功");

            response.setStatus(HttpStatus.OK.value());
        }else  {
            retMap.put("code", ret.getCode());
            retMap.put("message", ret.getMsg());

            response.setStatus(Integer.parseInt(ret.getCode()));
        }
        return  retMap;
    }
}    

实际上就是给微信平台回复了一个MAP对象。

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码递夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值