微信支付流程介绍

2020-08-04  本文已影响0人  任笙_8b8c
此次流程预览:

详解:
<a class="sui-btn btn-danger btn-xlarge" href="javascript:void(0)" @click="add()">提交订单</a>
//获取登录人的名称
        String username = tokenDecode.getUserInfo().get("username");
这里的code_url是微信返回的页面展示路径
let qrcode = new QRCode(document.getElementById("qrcode"), {
    width : 240,
    height : 240
});
/* 二维码*/
qrcode.makeCode([[${code_url}]]);
前端:
let client = Stomp.client('ws://192.168.200.128:15674/ws');
let on_connect = function(x) {
    /* 监听交换机和队列*/
    id = client.subscribe("/exchange/paynotify", function(d) {
        /*接收队列中的消息*/
        alert(d.body);
        let orderId = [[${orderId}]]
        if(d.body==orderId){
            location.href="/api/wxpay/toPaySuccess?payMoney="+[[${payMoney}]]
        }
    });
};
let on_error =  function() {
    console.log('error');
};
/*
mq的账号和密码
* */
client.connect('guest', 'guest', on_connect, on_error, '/');


微信自动回调的接口:
 @RequestMapping("/notify")
    public void notifyLogic(HttpServletRequest request , HttpServletResponse response){
        System.out.println("成功");
        try {
            //输出流转换为字符串 微信给我们返回的
            String xml = ConvertUtils.convertToString(request.getInputStream());
            System.out.println(xml);


            //基于微信发送的通知内容,完成后续的业务逻辑处理
            //这个工具类是微信提供给我们的 读取xml文件的
            Map<String, String> map = WXPayUtil.xmlToMap(xml);

            if ("SUCCESS".equals(map.get("result_code"))) {

                //查询订单
                Map result = wxPayService.queryOrder(map.get("out_trade_no"));
                System.out.println("查询订单结果:" + result);
                if ("SUCCESS".equals(result.get("result_code"))){
                    //将订单的消息发送到mq'
                    Map message = new HashMap();
                    message.put("orderId",result.get("out_trade_no"));
                    message.put("transactionId",result.get("transaction_id"));

                    //消息的发送
                    rabbitTemplate.convertAndSend("", RabbitMQConfig.ORDER_PAY, JSON.toJSONString(message));

                    //完成双向通信
                    rabbitTemplate.convertAndSend("paynotify", "",result.get("transaction_id"));


                }else {
                    //输出错误原因
                    System.out.println(map.get("err_code_des"));
                }
            }else {
                //输出错误原因
                System.out.println(map.get("err_code_des"));
            }

            //给微信一个结果通知
            response.setContentType("text/xml");
            String data="<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
            response.getWriter().write(data);

上一篇下一篇

猜你喜欢

热点阅读