最近团队在接入微信支付,APP和JSAPI的接口都需要填写一个notify_url回调地址,但是坑爹的官方文档并没有找到JSAPI模式的java版的demo,所以不得不自己看文档写了一个接受微信异步通知的页面,并做相应的业务处理。直接上代码:


  1. <%@page import="com.shop.thread.WXPayFinishThread"%>
  2. <%@page import="com.shop.util.XmlUtil"%>
  3. <%@page import="net.sf.json.JSONObject"%>
  4. <%@page import="java.io.*"%>
  5. <%
  6. /* *
  7. 功能:微信支付服务器异步通知页面
  8. 作者:李小拐
  9. 日期:2016年6月22日20:20:44
  10. 说明:
  11. 以下代码只是自己的样例代码,非官方,你可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
  12. 该代码仅供学习和研究微信接口使用,只是提供一个参考。
  13. * */
  14. %>
  15. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  16. <%@ page import="java.util.*"%>
  17. <%
  18. //http://101.201.38.47/egx/wxpay_notify_url.jsp
  19. System.out.println("----进入到了该页面---");
  20. BufferedReader reader = request.getReader();
  21. String line = "";
  22. StringBuffer inputString = new StringBuffer();
  23. try{
  24. while ((line = reader.readLine()) != null) {
  25. inputString.append(line);
  26. }
  27. request.getReader().close();
  28. System.out.println("----接收到的报文---"+inputString.toString());
  29. JSONObject json=XmlUtil.XmlToJson(inputString.toString());
  30. //String appid=json.get("appid")+"";
  31. //String mch_id=json.get("mch_id")+"";
  32. if(json.getString("return_code").equals("SUCCESS")){
  33. if(json.getString("result_code").equals("SUCCESS")){
  34. String transaction_id=json.get("transaction_id")+"";//微信支付订单号
  35. String out_trade_no=json.get("out_trade_no")+"";//商户订单号
  36. String openid=json.get("openid")+"";
  37. String trade_type=json.get("trade_type")+"";
  38. //接下来是做自己的业务处理
  39. //开一个线程,更新订单状态
  40. WXPayFinishThread wxp=new WXPayFinishThread(openid,transaction_id,out_trade_no,trade_type);
  41. wxp.start();
  42. }
  43. }
  44. //告诉微信服务器,我收到信息了,不要在调用回调action了
  45. response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
  46. System.out.println("----结束---"+inputString.toString());
  47. }catch(Exception e){
  48. e.printStackTrace();
  49. }
  50. %>

以上代码只处理了SUCCESS的情况,FAIL的情况请自行处理。。。

java做微信支付notify_url异步通知服务端的写法的更多相关文章

  1. Java 后端微信支付demo

    Java 后端微信支付demo 一.导入微信SDK 二.在微信商户平台下载证书放在项目的resources目录下的cert文件夹下(cert文件夹需要自己建) 三.实现微信的WXPayConfig接口 ...

  2. java实现微信支付

    java实现微信支付 package com.hk.wx.pay.service.impl; @Service public class PayServiceImpl implements PaySe ...

  3. Java实现UDP之Echo客户端和服务端

    Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  4. Java实现TCP之Echo客户端和服务端

    Java实现TCP之Echo客户端和服务端 代码内容 采用TCP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  5. MSDN上的异步socket 服务端例子

    MSDN上的异步socket 服务端例子 2006-11-22 17:12:01|  分类: 代码学习 |  标签: |字号大中小 订阅     Imports SystemImports Syste ...

  6. 支付(异步通知notify_url 与 同步通知return_url的区别)

    同步通知和异步通知发送的数据没有本质的区别:同步通知有2个作用:第一是从支付宝的页面上返回自己的网站继续后续操作:第二是携带支付状态的get参数:让自己的网站用于验证: 同步通知后:还需要异步通知主要 ...

  7. 微信支付没有结果通知,notify_url参数的接口没有收到微信支付结果通知

    在微信支付统一下单的时候需要填一个notify_url参数用于处理微信支付结果通知 但是,有时候我们发现我们设置的这个接口收不到微信请求.原因有一下几个,大家一一对照,也欢迎补充. 1. url是否可 ...

  8. java之微信支付通知

    微信支付,是现在大多数平台都需要接入的一个支付方式,没办法,谁让现在的用户都习惯了这种消费方式呢 我今天只说说微信支付通知,我们后台怎么接收通知,并把我们的订单的状态改为已支付, 至于为什么不说支付的 ...

  9. JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI)

    写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了.本以为网上的微信开发教程 ...

随机推荐

  1. Redo 非current损坏

    Redo log 文件损坏或丢失,在启动数据库时在alert日志中会有如下错误: ORA-00313: open failed for members of log group 1 of thread ...

  2. Exsi SSH 服务配置

    vi /etc/ssh/sshd_conf禁止口令验证PasswordAuthentication no禁止root登录PermitRootLogin no ESXi Shell F2--F2--Tr ...

  3. 发布一个stl标准库容器类(vector/list)的安全删除方法

    话不多说,看代码. #include <functional> #ifndef ASSERT #include <cassert> #define ASSERT assert ...

  4. AE开发技术文档--8种数据访问方法

    转自原文 AE开发技术文档--8种数据访问方法 1.shapefile IWorkspaceFactory pWorkspaceFactory; pWorkspaceFactory = new Sha ...

  5. 移动端 h5 开发相关内容总结——JavaScript 篇

    1.改变页面标题的内容 有时候我们开发 h5页面的时候须要动态的去更新title 的名字,这个时候使用 document.title='改动后的名字'; 就行解决我们的问题. 或者使用 //当前fir ...

  6. Java中字节与对象之间的转换

    近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...

  7. [spark]Spark Streaming教程

      (一)官方入门示例 废话不说,先来个示例,有个感性认识再介绍. 这个示例来自spark自带的example,基本步骤如下: (1)使用以下命令输入流消息: $ nc -lk 9999 (2)在一个 ...

  8. stm32优先级

  9. PWA之Web 应用清单

    原文 简书原文:https://www.jianshu.com/p/5c96242188e8 大纲 1.什么是Web 应用清单 2.“清单文件”:Web App Manifest 规范的应用 3.we ...

  10. 【42.38%】【BZOJ 3196】二逼平衡树

    Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1363 Solved: 579 [Submit][Status][Discuss] Descripti ...