小程序微信支付回调

//异步请求回应微信支付是否成功
@Transactional
public String weixinNotify(String resultStr) {
    log.info("=========weixinPaynotify   start====");
    String resXml = "";
    String return_code=null;
    String result_code=null;
    try {
        //字节流
        Map<String, String> resultMap = XMLUtil.doXMLParse(resultStr);
        log.info("resultMap:" + JSON.toJSONString(resultMap));
        String transaction_id = resultMap.get("transaction_id"); //微信交易流水号
        result_code = resultMap.get("result_code");
        String out_trade_no = resultMap.get("out_trade_no");
        return_code = resultMap.get("return_code");
        log.info("===========================微信异步回调 来了========================"+out_trade_no);
        // 签名验证(在网上复制而来,不知其用处故先注释)
        //GenericValue userLogin = delegator.findOne("UserLogin", UtilMisc.toMap("userLoginId", "admin"), false);

        //支付成功  修改订单状态和子订单状态  添加充电结束时间
        if ("SUCCESS".equals(return_code)&&"SUCCESS".equals(result_code)) {

            log.info("小程序订单列表支付回调接收到了out_trade_no=========="+out_trade_no);

            //获取主订单

            WxRechargeOrderExample wxRechargeOrderExample = new WxRechargeOrderExample();
            wxRechargeOrderExample.createCriteria().andOrderNumberEqualTo(out_trade_no);
            WxRechargeOrder wxRechargeOrder = wxRechargeOrderMapper.selectByExample(wxRechargeOrderExample).get(0);
            wxRechargeOrder.setStatus(1);
            wxRechargeOrder.setUpdateDate(new Date());
            int i = wxRechargeOrderMapper.updateByPrimaryKey(wxRechargeOrder);
            if( 1 == i){
                //修改用户账户
                WxMember wxMember = wxMemberMapper.selectByPrimaryKey(wxRechargeOrder.getMemberId());

                BigDecimal addFudou = wxRechargeOrder.getFudou();
                wxMember.setFudou(wxMember.getFudou().add(addFudou));
                wxMember.setAmount(wxMember.getAmount().add(wxRechargeOrder.getAmount()));
                wxMember.setUpdateDate(new Date());
                wxMemberMapper.updateByPrimaryKey(wxMember);
                resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
                        + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
            }

        }else{
            resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>"
                    + "<return_msg><![CDATA[报文为空]]></return_msg>" + "</xml> ";
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JDOMException e) {
        e.printStackTrace();
    } catch (Exception e){
        e.printStackTrace();
        throw new RuntimeException("微信异步回调失败!");
    }
    return resXml;
    //return return_code;
}

 

备注:有的直接返回SUCCESS就可以,有的要返回xml,具体按项目

转载于:https://my.oschina.net/u/3559695/blog/3089943

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值