最近团队在接入微信支付,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. (转)xshell无法在vim中复制黏贴

    ssh xshell 连接在vim中无法用 ctrl+insert 复制黏贴 修改.vimrc set mouse=c vi的三种模式:命令模式,插入模式,可视模式.鼠标可以启动于各种模式中: The ...

  2. 洛谷—— P1018 乘积最大

    https://www.luogu.org/problem/show?pid=1018#sub 题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年 ...

  3. xcode 各种项目设置

    1:语言环境设置:项目–>PROJECT–>info–>Locailzation 2 : 手动加入项目依赖 Build Settings–>Search path–>Li ...

  4. spring boot 2.x Path with "WEB-INF" or "META-INF"

    学习spring boot 2.x时,使用jsp作为前端页面.在application.properties配置了jsp所在位置 spring.mvc.view.prefix:/WEB-INF/vie ...

  5. Mac安装brew及其用法

    Mac 安装 brew 及其用法: 安装brew: curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz - ...

  6. FeatureLayer,FeatureDataset,FeatureClass,Feature的区别与联系总结

    duckweeds原文 FeatureLayer,FeatureDataset,FeatureClass,Feature几个概念一点点总结,欢迎指教 刚学AE,其中很多概念都模糊不清.经过一段时间的摸 ...

  7. 机器学习算法笔记1_2:分类和逻辑回归(Classification and Logistic regression)

    形式: 採用sigmoid函数: g(z)=11+e−z 其导数为g′(z)=(1−g(z))g(z) 如果: 即: 若有m个样本,则似然函数形式是: 对数形式: 採用梯度上升法求其最大值 求导: 更 ...

  8. [Swift] Add Scroll View

    import UIKit class AboutViewController : UIViewController @IBOutlet weak var scrollView: UIScrollVie ...

  9. Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  10. js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)

    js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...