微信扫码支付,如何判断用户是否成功扫码支付

发布网友 发布时间:2022-04-20 16:07

我来回答

3个回答

热心网友 时间:2023-06-27 05:32

微信扫码支付 统一下单时传入你的支付回调地址,若用户成功扫码支付后,微信会根据你的回调地址去返回支付结果,你就在你的支付回调接口里面处理支付结果逻辑就可以了

public String notify(HttpServletRequest request) throws Exception {
    String inputLine;
    String notifyXml = "";
    String resXml = "";
    try {
        while ((inputLine = request.getReader().readLine()) != null){
            notifyXml += inputLine;
        }
        request.getReader().close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("接收到的xml:" + notifyXml);
    if(StringUtils.isEmpty(notifyXml)){
        System.out.println("xml为空");
    }
    Map map = WXUtils.xmlToMap(notifyXml);
    String out_trade_no = (String) map.get("out_trade_no");

    QiYeMoneyLog moneyLog = new QiYeMoneyLog();moneyLog.setPayNo(out_trade_no);
    QiYeMoneyLog log = moneyLogDao.selectOne(moneyLog);
    if(log!= null && log.getPayState().equals(1)){//支付成功就不需要继续执行 直接返回成功
        request.getSession().setAttribute("WX_PAY_STATE","PAY_SUCCESS");
        return "<xml>"+"<return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg>"+"</xml> ";
    }

    if(!"SUCCESS".equals(map.get("return_code"))){
        resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[FAIL]]></return_msg>" + "</xml> ";
    }else{
        if(null != log){
            request.getSession().setAttribute("WX_PAY_STATE","PAY_SUCCESS");
            log.setPayState(1);
            //删除支付二维码
            QiNiuUpLode.delete(StringUtil.oldUrl(log.getPayQrUrl()));
            log.setPayQrUrl("");
            //修改支付状态为成功
            moneyLogDao.updateById(log);
            //修改企业账户余额
            UserQiYe qiYe = qiYeDao.selectById(log.getQyId());
            qiYe.setQyMoney(BigDecimalMath.add(qiYe.getQyMoney(),log.getQyLogMoney()));
            qiYeDao.updateById(qiYe);

            System.out.println("公众号支付成功,out_trade_no(订单号)为:" + out_trade_no);
            resXml = "<xml>"+"<return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg>"+"</xml> ";
        }
    }
    return resXml;
}

热心网友 时间:2023-06-27 05:33

你收到钱,扫码就成功,没收到扫码就失败

热心网友 时间:2023-06-27 05:33

假设微信后台回调成功,后台逻辑处理完成,微信扫码页面,写一个异步去查询订单的状态,需要定时器,如:var int=self.setInterval(function(){pay_status()},1000);

<script type="text/javascript">
          function pay_status(){
              var order_id = $("#order_id").val();
              if(order_id != ""){
                  $.ajax({
                      url:'/message/meal/order/findInfoByorderId',
                      dataType:'json',
                      type:'post',
                      data:{'orderId':order_id},
                      success:function(data){
                          if(data == 'SUCCESS' ){
                              window.clearInterval(int); //销毁定时器
                              setTimeout(function(){
                                  //跳转到结果页面,并传递状态
                                  //  window.location.href="/shortMessageMeal/order/hospitalList.html";
                               /*   var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                                  parent.layer.close(index); //再执行关闭*/
                     $(".code-area").attr("style","display: none;");
                                  $(".list-group").attr("style","display: none;");
                     $(".wx-complete").attr("style","");
                              },1000)
                          }
                      },
                      error:function(){
                          alert("error");
                      },
                  });
              }
          }
          //启动定时器
          var int=self.setInterval(function(){pay_status()},1000);
</script>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com