微信支付_回调函数

@RestController@RequestMapping(“/wxpay”)

public class WXController {

    @PostMapping(“/notify”)

    public String wxnotify(HttpServletRequest request,HttpServletResponse response) {

        String xmlBack = “”;

        try {

            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),“UTF-8”));

            String line = null;

            StringBuilder sb = new StringBuilder();

            while((line = br.readLine()) != null){

                sb.append(line);

            } 

            br.close();

            //sb为微信返回的xml,微信sdk提供转化成map的方法

            String notityXml = sb.toString();           

            System.out.println(“接收到的报文:” + notityXml);

            Map<String, String> map =  WXPayUtil.xmlToMap(notityXml); 

            WXPay wxpay = new WXPay(new PayConfig());

            if (wxpay.isPayResultNotifySignatureValid(map)) {//验证成功                  

                String return_code = map.get(“return_code”);//状态

                String out_trade_no = map.get(“out_trade_no”);//订单号

                String result_code = map.get(“result_code”);

                   //其实这里验证两个code都是success就说明充值成功了。可以处理自己的业务逻辑了。

                if (!“SUCCESS”.equals(return_code) || !“SUCCESS”.equals(result_code)) {

                    System.out.println(“充值失败!”);

                    //支付失败的逻辑

                    xmlBack = “<xml>” + “<return_code><![CDATA[FAIL]]></return_code>” + “<return_msg><![CDATA[报文为空]]></return_msg>” + “</xml> “;

                    return xmlBack;

                }

                xmlBack = “<xml>” + “<return_code><![CDATA[SUCCESS]]></return_code>” + “<return_msg><![CDATA[SUCCESS]]></return_msg>” + “</xml> “;

                return xmlBack;

            } else {

                System.out.println(“<<<<<<<<<<<<<<<<<<<<<微信支付回调通知签名错误”);

                xmlBack = “<xml>” + “<return_code><![CDATA[FAIL]]></return_code>” + “<return_msg><![CDATA[报文为空]]></return_msg>” + “</xml> “;

                return xmlBack;

            }

        } catch (Exception e) {

            System.err.println(e);

            System.out.println(“微信支付回调通知失败”);

            xmlBack = “<xml>” + “<return_code><![CDATA[FAIL]]></return_code>” + “<return_msg><![CDATA[报文为空]]></return_msg>” + “</xml> “;

            return xmlBack;

            }

    }}


版权声明:本文为m0_37346206原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。