微信扫码支付,如何判断用户是否成功扫码支付
发布网友
发布时间: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>