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);

}

时间: 2024-10-12 22:58:01

JAVA微信支付多次回调方法解决方案的相关文章

JAVA微信支付~

1,简单说明 现在好多项目上都需要用到微信支付接口,官方文档上也是简单的描述了下,技术不高深的真的难以理解(我自己看官方文档就看不懂),还是需要自己收集,总结,网上看了好多 有些照着弄最后还是没法成功.接下来我分享下自己的微信支付.这个微信支付的微信公众号或者小程序,都是需要微信认证的,不然无法申请微信支付,这个就不说了,既然到了这一步,相信所有的前提都已经准备好了.直接上代码吧~ 2,java微信支付 一,首先了解下各个参数的意义 https://pay.weixin.qq.com/wiki/

Java+微信支付(下预购单+回调+退款+查询账单)

前言: 现在的APP的离不开微信支付, 现在项目里接入微信支付 , 微信支付的官方文档是:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1 . 也很明了,这里是我的示例. 作为客户端, 需要接入的功能大概四个: 1  下预购单, 这里生成签名去请求微信, 返回预购单交易号. 再拼接客户端需要的对象,让客户端发起支付. 2  回调接口, 当APP完成支付, 微信会调用商户的回调接口, 告诉回调结果. 3  退款, 发起的支

支付宝支付与微信支付服务端回调notify_url数据的区别

这两天优化了一下支付宝支付和微信支付订单回调的问题,之前我们的订单都是用手动回调给服务器,现在改成支付宝和微信原生的异步回调,结果并没有像我们想象的那么简单,支付宝是很顺利的解决回调,用一般的方式接收即可,但是微信接收时用普通的接收方式是不行的必须用另一种方式,如下且看: 支付宝和微信的回调地址 notifyUrl = RequestUrl.BASE_URL+"order/order_payment"+"?order_code="+orderCode; 服务器端是P

Java微信支付(公众号,扫码)

很高兴与大家分享微信支付(公众号,扫码),针对Java语言和公众号支付,扫码,只是简单对台后进行封装,主要帮我们在微信支付那些事,生成请求XML及签名.解析XML.退款(请求需要双向证书),现在还新增扫码支付模式一模式二及网页测试等.在使用的过程你需要做事情是修改公众号ID.商户号.商户API密钥以及服务号授权URL配置等就可以测试.可以让你在微信支付中少走弯路. 里面有文档,代码,测试deom,jar包等. 下载地址:http://download.csdn.net/detail/u01114

java微信支付--------公众号内H5调起支付

谨以此做记录,方便下次实现,不适合新手拷贝,如有指教,欢迎留言讨论! 新手请参考博文:https://blog.csdn.net/javaYouCome/article/details/79473743,致谢该博主! 微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 记录几个容易出问题的点: 1.参与签名的参数名大小写保持与官方文档一致, 2.在商户平台配置支付目录,类似配置js安全接口域名 3.调用统一下单接口获取prepay

java微信支付异步回调接收参数

response.setHeader( "Content-type", "text/html;charset=UTF-8" );      out = response.getWriter();      InputStream in = request.getInputStream();      BufferedReader br = new BufferedReader( new InputStreamReader( in, "UTF-8"

iOS 微信支付点击左上角返回解决方案

在网了搜了一些解决方案,感觉并不是那么严谨,于是自己动手搞了一下,直接说思路 iOS调起第三方支付和安卓还不一样,安卓是把第三方的支付SDK直接镶嵌在自己的App中,而iOS由于沙盒机制,各个应用之间相互独立,应用之间的调用只有通过系统留下的唯一入口scheme, 所以iOS调起第三方支付是在两个App之间相互切换的.以下从两个角度解析iOS吊起第三方支付 1.支付之前点击取消或者左上返回 (1)点击支付是App显示进入非活跃状态,再进入后台 -[AppDelegate applicationW

iOS应用之微信支付集成-直接前端集成

所有信息的生成都在前端完成,包括对订单进行sign签名以及MD5签名加密(此方法相对来说有些复杂,没有官方给的方法简单).注:官方给的是v3&v4支付流程,签名和加密都是在服务器端进行,由于没有对接过,所以就暂时没有办法分享. 1. 准备工作 工程所需的微信支付SDK,如下图: 微信支付所需的相关用户信息(由用户申请) //微信支付商户号 #define MCH_ID @"YOUR_MCH_ID" //开户邮件中的(公众账号APPID或者应用APPID) #define WX_

微信支付之扫码支付相关代码(Java)

最近开发网站过程,需要引入支付过程,第三方支付中最火的莫过于支付宝支付和微信支付,下边借助微信支付官网上的文档,写一下接入微信支付之扫码支付的流程 相对支付宝支付而言,微信支付的开发文档写的相当的low,demo写的一点都不简洁,下边写一下微信扫码支付的过程,这一过程中,需要注意的所涉及的实际业务是怎样的,根据实际情况结合业务进行引入,在进入正式开发之前,要申请微信支付的相关内容按照官网的操作进行即可,审核成功后,会得到appId,商户号,商户平台登录账号和密码 登录微信支付官网 https:/