zoukankan      html  css  js  c++  java
  • JAVA微信支付多次回调方法解决方案

    @WebServlet("/ActionServlet")
    public class PayWxOrderingReqCBS extends HttpServlet {

        public PayWxOrderingReqCBS() {
            super();
        }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
             doPost(request, response);
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
         
            String msg = "success";
            response.setContentType("text/xml");    
            System.out.print("微信支付回调数据开始");        
            String inputLine;
            String notityXml = "";
            String resXml = "";

            try {
                while ((inputLine = request.getReader().readLine()) != null) {
                    notityXml += inputLine;
                }
                request.getReader().close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            System.out.println("接收到的报文:" + notityXml);     
            System.out.println("微信支付回调数据结束");
            System.out.println("告知服务端订单情况");
            String b = Xml2JsonUtil.xml2JSON(notityXml);
            System.out.println("=======================>"+b);
            try {
                JSONObject c = new JSONObject(b);
                String d = c.get("xml").toString();
                JSONObject e = new JSONObject(d);
                String f = e.get("return_code").toString();
                if (f.contains("SUCCESS")) {
                    /** 告知订单状态,修改订单状态 */
                   具体业务               
                    
                }
            } catch (JSONException e) {          
                e.printStackTrace();
            } catch (SwordBaseCheckedException e) {         
                e.printStackTrace();
            }
            resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
                    + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
            BufferedOutputStream out = new BufferedOutputStream(
                    response.getOutputStream());
            out.write(resXml.getBytes());
            out.flush();
            out.close();

            response.getWriter().println(msg);

        }

  • 相关阅读:
    maven 配置国内镜像仓库加速获取jar包的配置方法
    java 开发工具包 jdk 64位 jdk-8u221-windows-x64.exe 迅雷下载
    idea 更新后和新的直接安装前,都需要配置 idea64.exe.vmoptions 后再使用
    OpenCV编程入门目录
    类 — 成员函数的重载、覆盖与隐藏
    STL不同容器的使用方法
    STL容器之间的差异和联系
    STL之顺序容器 deque 动态数组
    Win10下Anaconda3安装CPU版本TensorFlow并使用Pycharm开发
    CNN中已知input_size、kernel_size、padding、stide计算output公式的理解
  • 原文地址:https://www.cnblogs.com/chinaDream2014/p/5916063.html
Copyright © 2011-2022 走看看