微信支付开发完成上线已经有两个多月了,如果没有做推广和宣传用户量不会很大。到现在也没有出现很大的支付量。微信支付以前想所有公众号放开了,才有机会写一些总结, 以前微信支付没有向所有公众号放开,所以所有的文档不方便公开发表。从去年还是接入微信支付到现在过程中,发现微信支付的功能越来越完善了,功能也越来越丰富了。在开发初期遇到了好多坑。和微信对接的同学摸索了好久才发现的。开始双方对不同公司不同的接入环境的差异,遇到的问题是无法避免的。有一些特别要注意的方面我在这里这一些总结吧。
1、微信支付结果服务器Ip 是不固定的,一般公司如果需要做白名单,以前接入的支付方式几乎都可以,唯独微信告知全国服务器太多,无法告知支付结果通知的服务器,所以无法做白名单来预付恶意用户和安全,接入服务器和站点需要做特殊处理。
2、微信支付通知地址和接受服务器不能用Https 加密才可以正常访问,由于Https是基于第三方安全证书加密,开始没有注意,支付完成后,支付结果一直无法正常的通知。
3、在账号申请的时候必须确定提交授权支付目录,如:http://qq.com/b/a.html,所以授权目录必须是http://qq.com/b/目录,必须到最低级别的目录,否则其它目录下的页面是没有权限调用微信支付(JSAPI)脚本的。这个要特别注意,一旦提交不可以修改支付目录。以前是不可以修改的,现在已经可以修改了。理论一个公众号只允许有一个支付授权目录哦。以前是这样的,现在就看你本事了。如果有多个产品接入用同一个服务器就悲剧了。不过看你关系了,其实一个服务器是可以申请多个支付授权目录的。
4、用户投诉返回目录申请账号也必须是固定的地址,理论上提交后不可以修改。对方都怎么说,随着系统逐步的成熟应该是可以的。如果接入支付要求必须接入用户投诉和反馈系统。
5、还没正式审核通过前,你所有的支付全都无法正常使用,包括测试。
6、测试必须要用正式账号,没有测试账号。在测试可以临时分配一个测试的授权目录。但是测试人的微信Id必须加白名单,否则是没有权限参与测试的。测试白名单最多只有20个账号。
7、一旦微信审核通过账号,在配置的测试授权目录在微信客户可以测是微信支付。如果一旦发布这个公众号的微信支付。不好意思,所有的微信支付测试地址的授权支付目录全部失效,如果有多个产品的话。这个时候只能用线上地址用于测试了。不过微信告知后续会放开此权限。
8、微信的Natvie支付申请账号的时候已经提交获取产品信息Getpackage回调地址。这个是最坑了,没有测试地址。只能用正式地址测试,没有测试地址可以用。虽然native支付不需要在授权目录页可以拥有微信支付的权限。最坑的时获取产品信息回调地址是正式的,所以测试地址也不能使用,最多只能调出个微信支付的姐妹而已。
9、所有和微信有交互的必须获取微信授权access_token.一般两个小时后会失效,必须重新获取后才可以和微信所有的接口交互。否则会告诉你没有权限。
10、微信的OAuth协议用户信息获取协议最惨了,给的文档是错的,沟通给的信息也是错的。这个也比较麻烦,必须在微信客户端在恶意获取微信信息,还必须去微信服务器中转一下跳转到制定的服务器地址后获取信息。微信的OpenId 是根据用户信息加上服务器信息生产的唯一Id,只要用户关注了微信的服务器,就可以通过用户的OpenId 给用户推送信息。现在微信5.2在做的即使用户没有关注也可以推送支付信息,此功能仅仅是在部分账号的特定功能。
最后一句话,测试环境准备的还是很好,文档准确性和完整性也有待改进的。提供的demo 支持多语言版本也需要改进。不过微信的支付推进的很快,以前好多不能使用的功能现在都可以使用了,发现改进的速度还是非常快的。期待在微信支付有新的飞跃。最后有一点就是微信也有霸王条款,在微信营用内接入微信支付,就不允许接入其它支付方式。这点比支付宝还狠哦。