微信回调函数notify_url

    /**
     * 微信支付 回调函数
     */
    public void notifyUrl( ) throws Exception {
        HttpServletRequest request = getRequest( );
        //读取参数
        BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream( )));
        String line;
        StringBuilder sb = new StringBuilder( );
        while ((line = br.readLine( )) != null) {
            sb.append(line);
        }
        if (StringUtils.isBlank(sb)) {
            return;
        }
        //支付结果通知的xml格式数据
        String notifyData = sb.toString( );
        MyWxPayConfig myWxPayConfig = new MyWxPayConfig( );
        WXPay wxpay = new WXPay(myWxPayConfig);

        Map< String, String > notifyMap = WXPayUtil.xmlToMap(notifyData);
        System.out.println(notifyMap);

        //验证签名是否正确
        if (wxpay.isPayResultNotifySignatureValid(notifyMap)) {
            //支付成功
            if ("SUCCESS".equals(notifyMap.get("result_code"))) {
                //商户订单号
                String out_trade_no = notifyMap.get("out_trade_no");
                //.... = notifyMap.get("out_trade_no");
                //你个人需要写的业务
            } else {
                //log.info("微信支付回调函数:支付失败");
            }
        } else {
            //log.info("微信支付回调函数:微信签名错误");
        }
    }

    回调信息如下
transaction_id=42000005632020040754578182**, 
nonce_str=7MEeQWdrpnx7Hdy83mmPRLzJiECkWzGa, 
bank_type=OTHERS, 
openid=oarS8wMCd9Fmg0rpLj-nbaD0KM**, 
sign=29E5972C0AA6122D0FF04C528376D5**, 
fee_type=CNY, 
mch_id=15633498**, 
cash_fee=1, 
out_trade_no=12473630949624913**, 
appid=wx40775a9fd17bfb**, 
total_fee=1, 
trade_type=NATIVE, 
result_code=SUCCESS, 
time_end=20200407111844, 
is_subscribe=Y, 
return_code=SUCCESS
    

 

posted @ 2020-04-07 13:18  lanwf  阅读(4364)  评论(0编辑  收藏  举报