关于准备事情,再看看微信官方关于“微信支付”的先容,官方地址 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1。这个是文档的准备,大概可以理解到微信支付有哪些模式,然后大概是若何一个东东。
然后重点看看如下几个,实际上须要准备的东西,赤色花掉的部分(PayConfigUtil类里面),须要根据自己的实际情形填写:
个中APP_ID和APP_SECRET可以在"大众平台找着,MCH_ID和API_KEY则在商户平台找到,特殊是API_KEY要在商户平台设置好,对付“微信扫码支付模式二”(支付与回调)实际只会用到APP_ID、MCH_ID和API_KEY,其他的都不用。
二、程序实现
这里利用spring mvc做一个购买商品,微信扫码支付的演示。先项目代码截图,
以下摘取重点环节的代码解释下:
1、首先是接入微信接口,获取微信支付二维码。
以上代码会按照微信支付的协议,天生类似这样格式的URL:weixin://wxpay/bizpayurl?pr=pIxXXXX
2、根据以上方法所产生的URL天生二维码,这里采取我采取的是google的core.jar包来天生二维码
上面代码中涉及到几个工具类:PayConfigUtil、PayCommonUtil、HttpUtil和XMLUtil,个中PayConfigUtil放的便是上面提到一些配置及路径,PayCommonUtil涉及到了获取当前事宜、产生随机字符串、获取参数署名和拼接xml几个方法,代码如下:
HttpUtil类如下:
XMLUtil4jdom类如下:
2、支付回调
支付完成后,微信会把干系支付结果和用户信息发送到我们上面指定的那个回调地址,我们须要吸收处理,并返回应答。对后台通深交互时,如果微信收到商户的应答不是成功或超时,微信认为关照失落败,微信会通过一定的策略定期重新发起关照,尽可能提高关照的成功率,但微信不担保关照终极能成功。 (关照频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)
关于支付回调接口,我们首先要对付支付结果关照的内容进行署名验证,然后根据支付结果进行相应的处理流程即可。
支付回调须要在微信"大众年夜众号的微信支付里面设置回调地址:
3、支付后网页自动跳转
web页面弹出二维码后,就开启轮询,讯问系统后台支付有微信平台的成功支付返回了,如果有,则跳转到支付成功的页面。
三、运行效果
项目导入eclipse后,揭橥到tomcat中运行,或者通过jetty运行,跑起来后,访问:
点击微信支付:
这个时候在手机上用微信扫码:
支付成功后:
然后web网页会跳转到购买成功的页面,这里须要把稳,微信支付回调接口,最好支配在公网的做事器上,这样能被回调,我本地利用改hosts的方法来让支付回调,不堪利。
四、把稳点
本例子为了演示,以是一些业务逻辑特殊大略,例如:订单号的生产,这里只是大略的用当前韶光long数字来表示:
实际开拓的时候须要考虑并且情形下的订单号的唯一性。
还有,回调接口,考虑很大略:
实际开拓,要把支付成功DB保存下来,以及回调信息log下来等等
代码下载:http://www.demodashi.com/demo/10268.html注:本文著作权归作者,由demo大师揭橥,谢绝转载,转载须要作者授权