【纯干货】微信支付接入攻略—JAVA代码分享

【声明】本文作者是Gekec网站开发总监Arne Chen。Arne在实际接入微信支付时遇到诸多问题并且逐一解决的过程中总结了不少实战经验。文中引用代码是从Gekec网站真实程序中节选,为了让各位程序员童鞋参考,未做任何修改。为了表达对原作者的尊重,转发本文请保留此声明。

前段时间做公司网站,架构是java servlet + javascript + html,要做支付,首选的是支付宝,支付宝的接入倒还算顺利,官方的demo以及说明都很完善,比较顺利的就接入了。

革客网站做了浏览器适配,无论是PC还是各种分辨率的移动设备,都可以有很好的体验。因此,大多数人会选择直接使用移动设备来访问。网页分享到微信后,直接点击会用微信浏览器打开,可以直接购买商品,但是微信浏览器打开的网页在支付的时候无法转到支付宝,这样在移动端的支付就变的很困难了。所以必须做微信支付。

花费300大洋认证革客的服务号,半个多月的审核,信心满满的打算迅速的像支付宝一样搞定微信支付,没想到遭遇了一次一次的失败,几乎是走一步撞一次墙,郁闷不已。求助万能的度娘,寻觅了N多前辈们的文章,拿过来自己测试,仍然没有解决问题。

官方支付也文档至少看了不下10次,每一次都会发现里面有一个轻描淡写的细节,但是绝对值得你深究的地方,会让你很受伤,所以,首先建议各位童鞋还是好好的将那个文档看几遍,争取先有个大概的认知。

排除参数大小写问题,排除测试帐号问题、目录问题,一遍又一遍的核对,上传到服务器测试,弄的乱七八糟都没解决,过程很凄惨。所幸经过一星期的彷徨与挣扎,最终搞定,现在写出来给仍在坑里茫然的童鞋们借鉴一下。

微信支付是V3的版本,之前V2的没有弄过,忽略掉。

  1. 微信公众平台,服务号,微信支付申请认证,虽说前三步审核通过了,可以做开发,但是发现增加测试帐号和测试目录增加后,公众平台的网站居然显示不出来,再增加又提示已经存在,估计是网站的BUG,不知道别的童鞋们有没有遇到这个问题。

  2. 收到邮件后可以进行测试开发,代码准备,待微信发邮件告知审核最终通过的结果

  3. 全部六项审核后,那个财付通的初始密钥一定要更改,否则绝对会提示签名失败。在这里我是遇到了最大的坑,修改密钥的时候,一直是提示修改失败,也不说是什么原因,无数次打电话给财付通、微信开发那边咨询,一直没有解决,最后还是要求重置一下密钥,才搞定,让人吐血的是,发回的密钥居然是我第一次修改的密钥,也就是说其实第一次修改密钥就已经成功了。

  4. JSAPI接入成功后,又做了个NATIVE支付,有了前面的经验,NATIVE支付一次性成功,终于从坑里跳出来了。

    不多说了,先把代码图贴出来,供大家参考一下。

(一)服务器端支付前servlet代码:

代码中间有个reqHandler. createSign签名方法代码:

(二)前端javascript代码:

支付的代码必须在微信浏览器内才有效,而且,必须是微信5.0或以上的版本,这个官方都有说明,所以必须先根据浏览器的UA判断是否使用的微信浏览器。

productorder/weixin_get_open_id的方法,就是从服务器端获取的预支付ID以及其他参数的方法。

(三)服务器端接收微信服务器回调:

(四)退款服务器后端方法:

退款需要发送证书,证书缺失或者读取错误,都会导致签名失败。

代码中间的GetWxOrderno.forRefund方法:

(五)另附上qrcode支付的方法,网站的流程是:

  • 订单确认

  • PC端点击微信支付,弹出二维码

  • 然后手机端打开微信扫码,支付完成。

    (1)Qrcode支付服务器端代码

上面的方法回给客户端返回code_url,这个很重要,就是你生成二维码的内容。

(2)qocode支付前端html代码:

前端页面需要引用qrcode.js,把服务器端返回的code_url然后生成二维码,微信扫码后在浏览器中打开。

其他的方法例如回调,页面转向等,童鞋们根据自己的实际情况来做。另外犹豫篇幅有限,里面关于MD5加密、以及reqHandler等方法没有贴出来,这个方法就是用的V2版本JAVA示例的,可以直接copy过来用,省心省事。

最后,祝愿各位童鞋们早日出坑。如果觉得这些经验对你有用,请到我开发的网站www.gekec.com看看。欢迎大家给我提意见,非常希望跟大家交流、分享开发心得。



【纯干货】微信支付接入攻略—JAVA代码分享相关推荐

  1. 关于微信支付参数[签名]字段-Java代码片段

    最近在开发过程中发遇到了对于微信下单的功能,签名不正确特意留下了目前可行的签名方法代码,记录一下对应的代码,学习和备用. import java.util.Iterator; import java. ...

  2. 微信支付APP支付完全攻略

    微信支付接入应用 最近项目中要接入微信支付,所以就去研究了下,发现坑还真不少啊.也就有了这篇博客. 接入前准备 在开始接入微信支付前你的去微信的开发平台上面注册你自己的应用.具体的链接是微信开发平台 ...

  3. 微信支付API V3版本JAVA开发指南

    微信支付版本V3的Demo,在官方上下载下来,压根就是不能直接用的东西,你要想学会用,你就得一层一层的看源码,看文档,要求你事无巨细的做一个接入者. 如果接入API需要让人看源码来理解,我觉得是一件让 ...

  4. 微信支付接入的那点事儿

    本文来自作者 javen 在 GitChat 上分享「微信支付接入的那点事儿」,「阅读原文」查看交流实录 「文末高能」 编辑 | 嘉仔 前言 本次 Chat 中涉及到的图片.统计数据均来自于网络,截图 ...

  5. ReactNative 安卓支付宝微信支付接入

    微信支付接入 首先,在android/src/main/java/* 新建 pay支付文件夹,如下所示: 新建 wechat ,在文件夹里面新建 Const.java, WeChatPay.java ...

  6. 【微信小程序】微信支付接入全流程

    一. 前置条件 接入支付首先得需要有企业资质,并开通企业对公户 注册微信支付并进行对公户打款认证 二. 开始接入 1. 下载微信支付的AP证书 2. 服务端接入微信支付 2.1 引入相关maven配置 ...

  7. 软件设计师c语言做题技巧,干货!软件设计师备考攻略

    原标题:干货!软件设计师备考攻略 软件设计师属于软考中级.可能大家会觉得中级呀,听起来有点难,我一点基础也没有,怎么考中级啊. 大家不用慌,听上去好像很有难度,但如果你备考计划准备的好,其实是可以考过 ...

  8. C#开发微信门户及应用(32)--微信支付接入和API封装使用

    C#开发微信门户及应用(32)--微信支付接入和API封装使用 在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去, ...

  9. 计算机二级办公室应用题目,干货|计算机二级备考攻略

    原标题:干货|计算机二级备考攻略 必备物品 1.复习用书 2.一台装有office办公软件的电脑 (考试使用电脑为Windows7系统.) 3.一本笔记本 怎么做笔记? 操作题: 基础较好的人,先做一 ...

最新文章

  1. 线程基本编程——线程函数大全
  2. oracle财务系统名称,Oracle财务系统总账模块操作手册
  3. 自学考试应该怎样答题才能更高分?
  4. 微信小程序连续签到获得积分
  5. 艾永亮:新能源汽车补贴退潮后,谁在裸奔,各大车企该如何应对
  6. A股将迎来一大波新经济公司:几家欢喜几家愁
  7. 微处理器基本功能及主要性能指标
  8. Java调用热敏票据打印机打印小票
  9. 使用Git向Github上传项目(包含大文件>25mb)
  10. 2018总结,2019展望
  11. MySQL学习(三) 数据类型约束、TCL语言、流程控制
  12. centos下创建虚拟网卡
  13. 【BYM】Android 实现相机快门动画,android音视频何俊林
  14. James Munkres Topology: Sec 18 Exer 12
  15. Total Bummer:关键水滴
  16. MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题
  17. docker推送镜像至阿里私有镜像仓库
  18. 庚顿风电场远程集中监控系统、 庚顿风电集控中心一体化应用系统解决方案
  19. 码分多址cdma通信_码分多址(CDMA)| 计算机网络
  20. 护眼灯值不值得买?显色指数最好的护眼灯推荐

热门文章

  1. MongoDB的创建删除数据库,增删改文档
  2. MATLAB车牌出入库识别(语音播报,库外识别,计时计费)
  3. org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds i
  4. DT时代,手机厂商更在意大数据,京东能满足么?
  5. android浏览器对比评测,Android浏览器对比测试:QQ浏览器大幅领先
  6. CSS 绘制太阳系各个行星运行轨迹
  7. mtr-网络分析工具
  8. 计算机专业内存8g和16g差距大吗,电脑内存8g内存跟16g内存不同多大
  9. c语言中swap函数_C ++中的swap()函数
  10. Lazada开店最全介绍,开店入驻只需三步