weChatpay完整版java
注意要点: 1,Topay里面的参数要填好:appid,appsecret,mch_id,partnerkey,spbill_create_ip 2,openid 需要微信授权获取到 3,每次支付orderNo要不同 openid参考实例: 1,授权链接地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxba3445566677&redirect_uri=http://www.acc.com/weixin/pay/paydispatcher&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect 2,转向处理地址:通过第一个链接微信会把code传过来,之前参数获取就行 @RequestMapping(value = "/paydispatcher", method = { RequestMethod.GET }) public void payDispatcher(HttpServletRequest request, HttpServletResponse response) throws Exception { String code = request.getParameter("code"); String msg=""; if(code==null||code.equals("")){ msg="获取微信Code失败!"; request.setAttribute("msg" ,msg); request.getRequestDispatcher("/jsp/login.jsp").forward(request,response); }else{ WeixinUtil util = new WeixinUtil(); UserAccessToken token = (UserAccessToken) request.getSession().getAttribute("UserAccessToken"); if(null==token){ token = util.getAccessToken3(Constants.APPID, Constants.SECRET,code); request.getSession().setAttribute("UserAccessToken",token); } request.setAttribute("openid", token.getOpenid()); request.setAttribute("accessToken", token.getAccessToken()); request.setAttribute("refreshToken", token.getRefreshToken()); request.setAttribute("expiresIn", token.getExpiresIn()); request.getRequestDispatcher("/pay/index.jsp").forward(request,response); } } // 获取用户openid accesstoken public static UserAccessToken getAccessToken3(String appid , String appsecret,String code) { UserAccessToken accessToken = null; String requestUrl = Constants.GET_OPENID_ACCESSTOKEN_URL.replace("APPID" , appid).replace("APPSECRET" , appsecret).replace("CODE" , code); String json = httpRequest(requestUrl , "GET" , null); JSONObject jsonObject = JSONObject.fromObject(json); // 如果请求成功 if (null != jsonObject) { try { accessToken = new UserAccessToken(); accessToken.setAccessToken(jsonObject.getString("access_token")); accessToken.setRefreshToken(jsonObject.getString("refresh_token")); accessToken.setExpiresIn(jsonObject.getInt("expires_in")); accessToken.setOpenid(jsonObject.getString("openid")); accessToken.setScope(jsonObject.getString("scope")); } catch (Exception e) { accessToken = null; // 获取token失败 System.out.println("获取token失败 errcode:{} errmsg:{}"); } } return accessToken; }
- 1
- xingguang12122019-07-30挺好用的,可以用
- 粉丝: 11
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- libmudflap-devel-4.8.5-44.el7.x64-86.rpm.tar.gz
- libmudflap-static-4.8.5-44.el7.x64-86.rpm.tar.gz
- libmusicbrainz-2.1.5-17.el7.x64-86.rpm.tar.gz
- libmusicbrainz-devel-2.1.5-17.el7.x64-86.rpm.tar.gz
- libmusicbrainz5-5.0.1-9.el7.x64-86.rpm.tar.gz
- libmusicbrainz5-devel-5.0.1-9.el7.x64-86.rpm.tar.gz
- 2.2kW直流无刷电机控制器全套资料,多重保护系统,适应多种电压与电流调节需求,2.2kW直流无刷电机控制器(量产) 含源码 原理图 pcb 接线、软件、io分配等说明文件 系统电压24-90V 最大
- 西门子PLC伺服大型多轴控制系统:Modbus通讯、气缸与机械手协同作业,完整触摸屏程序与机械结构图,西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等
- 西门子PID压力燃油系统变频器G120 Modbus RTU通讯详解:PLC 1200与变频器联动控制,含触摸屏操作及参数配置指南,西门子PID压力燃油系统变频器G120modbus rtu通讯原创
- STM32F107单片机驱动Dp83848以太网芯片配置指南:轻松上手程序代码示例,STM32F107单片机驱动Dp83848以太网芯片程序 项目开发用到了Dp83848这一个以太网芯片,本人发现其配
- 西门子PLC新手入门项目程序-含触摸屏编程案例与成熟稳定应用实践,西门子PLC新手项目程序(含触摸屏程序) 此定长切纸程序已经实际设备上批量应用,程序成熟可靠,借鉴价值高,程序简单、有注释、非常
- libmwaw-0.3.5-1.el7.x64-86.rpm.tar.gz
- libmwaw-devel-0.3.5-1.el7.x64-86.rpm.tar.gz
- 灰狼优化算法GWO优化LSSVM参数c和g实战例子:Windows系统下的参数调优,简单粗暴,上手易行,灰狼优化算法GWO优化LSSVM最小二乘支持向量机惩罚参数c和核函数参数g,有例子,易上手,简单
- libmwaw-doc-0.3.5-1.el7.x64-86.rpm.tar.gz
- libmwaw-tools-0.3.5-1.el7.x64-86.rpm.tar.gz