最近团队在接入微信支付,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. 折腾了我两天的springboot数据源datasource循环依赖问题,都被搞疯掉了

    在做项目重构的时候增加了两个功能 1.多数据源. 2.token的验证从以前的数据库验证,移到了redis端. 1.多数据源使用 druid-spring-boot-starter 套件 其核心代码如 ...

  2. android 消息系统Handler、MessageQueue、Looper源代码学习

    android消息系统 总体框架如图所看到的 在安卓的消息系统中,每一个线程有一个Looper,Looper中有一个MessageQueue,Handler向这个队列中投递Message,Looper ...

  3. 9.10 Binder系统_Java实现_hello服务

    怎么做?2.1 定义接口: 写IHelloService.aidl文件, 上传, 编译, 得到IHelloService.java 里面有Stub : onTransact, 它会分辨收到数据然后调用 ...

  4. SpringBoot错误信息总结(不定时更新)

    1." java.lang.IllegalStateException: @Bean method ShiroConfig.cacheManager called as a bean ref ...

  5. TableView相关属性

    //是否要显示分隔线 tableView.separatorStyle = UITableViewCellSeparatorStyleNone; tableView.separatorStyle = ...

  6. ASI使用

    一.ASI类库集成: .添加源代码文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m ASICacheDelegate.h ASIDataCo ...

  7. 算法 Tricks(六)— if 条件分支的简化

    考虑下面的三分支的定义式: f=⎧⎩⎨⎪⎪a,b,a+b,x>yx<yx=y int f = 0; if (x >= y) f += a; if (x <= y) f += b ...

  8. Sql Server 删除所有表 脚本

    如果由于外键约束删除table失败,则先删除所有约束: --/第1步**********删除所有表的外键约束*************************/ DECLARE c1 cursor f ...

  9. ZOJ 1914 Arctic Network (POJ 2349 UVA 10369) MST

    ZOJhttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1914 POJhttp://poj.org/problem?id=23 ...

  10. redis学习笔记之虚拟内存

    首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的.就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据.尤其是对于redis这 ...