app跳转微信支付不风控 (app如何跳转微信支付)

最近项目组手机APP对接微信支付的功能,前期网站已经接入,以为这个对接是轻而易举的事情。

但是项目卡在了手机端拉起支付的环节,签名怎么也验证不通过。

于是乎百度,一查存在很多反映签名不过的文章,帖子。

因为签名是RSA加密,因此错一个字符都不行,一个字符不同生成的秘钥有天壤之别。

倒腾了几天,*载下**过N多demo,到今天终于搞定。

主要的原因还是对加密原理、加密证书不理解,另外微信官方的例子,确实也没有做到开箱即用,API,SDK齐全了,还差个copy来就能跑的例子吗。

微信官方的后台例子,用的gradle一直*载下**不下来包。

时间就消耗在了*载下**,编译各种例子,包括第三方的例子,甚至怀疑到了APP端,连手机上的微信都删除重装了(有的帖子说微信缓存问题)。最终绕了一大圈,还是回到了微信官方的例子。

也是最终搜到这篇文章后,才解决问题。

https://developers.weixin.qq.com/community/develop/article/doc/000ce8d3ee8b70d868ed6185b5b013

其中最坑的就是:

app如何跳转微信支付,app接入微信支付的流程

验签工具最后还得再加一个回车!

app如何跳转微信支付,app接入微信支付的流程

从官方的文档说明哪能看出来?

app如何跳转微信支付,app接入微信支付的流程

这里到是能看出来,必须有回车。

写死一些数据,按上面帖子的方法,在验签工具中生成签名,发给手机端开发,验证通过后,后台再开始开发。

后台开发也遇到一个问题,关于秘钥。

一直以为pem文件中,begin,end中那一段就是秘钥,甚至把这些支付直接拷贝出来,用RSA

加密算法加密就行。

后来一直验签不通过,回到微信官方例子的时候,纳闷为啥会有PrivateKey这个类,直接一个秘钥String不好吗?

分析了一下sign过程,原来秘钥begin,end中间那段不直接是秘钥,是base64编码后的格式。

顺便查询了一下pem文件的格式,了解了怎么读取pem中的私钥。

最终还是这段代码解决了问题:

app如何跳转微信支付,app接入微信支付的流程

从这里也可以看到4个回车换行。

把微信github中*载下**的demo,这部分移植到自己的工程中,解决各种jar包pom引用,编译后,剩下的工作就是代码生成的签名跟验签工具“一毛一样!”就可以了。

还是经验不足啊!踩坑也是程序员经验增长必经之路。