难以置信(java调用三方接口传输报文)java调用三方接口有返回,但是提示超时,JAVA专题一(第三方接口整合——微信接入),java 微信接口,
上一篇分享了支付宝的接入,有需要的朋友可看我的上一篇 《JAVA专题一(第三方接口整合——支付宝接入)》,今天接着分享微信支付的实现。
说实话微信支付比支付宝支付埋的坑多了去了,而且微信的文档也没有支付宝的文档丰富全面,很多东西你在微信的开发者平台很难找到(这里必须再吐槽一下微信,在支付这一块做的太tm垃圾了,几乎都没有任何技术支持,甚至打客服电话都没有人接,要表扬阿里,各方面的支持很到位,帮我省了很多时间),只能去网上着资源,因此我这里也就做一个简单的demo演示,说一下具体的接入顺序以供各位参考,有什么问题可以私聊我。接下来开始干货:
我喜欢有规划的做事,写程序也一样,首先就是我们在写这个接口之前,一定要了解清楚微信支付的接入流程是什么样的,这样你按照流程来开发,也非常好定位问题出现在哪。下面是微信支付的业务流程:
看着很复杂,其实我们开发的时候只需要把它分成几个步骤就可以了,非常简单
(1)客户端发起一个支付请求到服务端(Java后台),请求参数则为订单信息。
(2)服务端接收到客户端的下单请求,将订单信息封装后提交到微信后台(这一步非常重要的一点就是他的加签过程,微信的demo里面会提供一些工具类),后台接收微信的返回的订单信息其中包括一个prepay_id,这个参数不能为空,如果为空客户端无法调用微信app,这里一定要注意,如果你的客户端一直无法调起微信付款,一定要检查这个值是否已经生成。
(3)服务端将微信返回的数据返回给客户端,这样客户端接收到参数之后就可以调起微信支付了。这里有一点需要注意的就是你对你的数据需要进行处理,微信返回的数据转换成json的格式,不然客户端很有可能会一直报-1,我在这里踩过坑。
(4)客户端支付成功之后会调用之前在微信后台配置的回调接口,这个接口是你自己定义的通过http的形式访问你的后台,在这里面你需要通过result_code判断用户是否支付成功,如果成功会返回success,然后你就可以进行你的业务操作了。
接下来上代码:
1、整合开发环境(maven或jar包都可以):
2、工具类:
3、服务号相关配置
4、统一下单代码:
5、微信异步回调代码:
有很多需要注意的地方,我在代码里面也写了很多的注释了,大家可以仔细的看一下。这里提几个需要注意的地方:
在客户端如果无法调用微信的时候,需要排查几个地方
1、签名是否正确,这个验证主要就是看微信返回给你的prepay_id是否有值,如果没有值则需要重新签名,获取API_KEY,这里特别要注意的一点就是一定要确保你的应用已经签约了微信支付的app支付等功能,否则兄弟你就得被坑死,这是一个巨大坑(没错,我踩过,mmp)。
2、如果prepay_id有值则表示签名正确,这个时候你就要看你返回给客户端的数据是不是正确的格式了,反正一般用json数据返回。
OK,今天就写到这里了,可能还有一些小细节没有写到位,比如在微信平台申请应用,如何配置应用等,这些大家可以去官网看,这里的东西还是很全的,总之微信支付要比支付宝支付要坑多了,甚至demo你都很难找到。如果大家有在接入的时候有什么问题,欢迎随时和我讨论,要是需要源码也可以关注我,我会每周不定时发布一些干货分享给大家。
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据