前言
最近几个月一直在开发和微信有关的内容,最近基本上是写的差不多了。是时候总结一下了。
微信支付
这是我在微信平台上开发的第一个功能,也让我体验了一把传说中微信支付文档的狗屎程度。正好赶上了微信支付API改版,开发文档青黄不接,可以说被坑的不浅。
注意事项
- 这个文档是有时效性的!写于2017年12月28日,祈祷它暂时不会过期吧。
- 我开发的是微信公众号内的支付,其他支付方式开发并不相同。
- 只是记录一波中间踩得坑,主力还是要看微信支付开发文档。
配置服务器信息
按照开发文档所说,第一步应该是要配置两个服务器信息。一个是支付目录,另一个是授权域名。看上去很简单是吧,实际上起码我掉了两个坑。
- 请使用超级管理员账号配置,那个开发者人员账号基本就是假的。。。
- 配置支付目录的时候要精确到最后一个
/
号的位置,所以支付调起的地方最好不要太多。
统一下单
- 要求填写的ip地址可以写
192.168.1.1
来规避。 - 因为下单方式是JSAPI,所以openid也是必须值,所以在用户账号信息里面要有用户openid,这个openid可以理解成md5(用户uuid+公众号uuid)不会重复,而且取消重新关注也不会变。
获取openid
获取openid又是一个坑,官方的连接是获取openid,因为我开发的是公众号支付,所以点微信公众平台下面第一个链接就可以了。
然而,实际上这几个链接都是失效的。。。。点进去都是首页。 我在这次开发中注册的时候除了openid还要拿用户详细信息,参考这里就可以了拉取用户信息,
在这个过程中我们会遇到第一个access_token
,这个access_token
和其他要用的access_token不是一回事,八成会搞混的,只能用来拿用户信息。拿用户信息用的token申请的url是
https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ WXConfig.getAppid()
+ "&secret="+ WXConfig.getAppsecret()
+ "&code=" + mycode
+ "&grant_type=authorization_code
而一般接口用的token申请的url是
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid
+"&secret="+appsecret
如果搜索的时候比较详细可能还会发现另外一个jsapi发起支付的文档,但是很负责的说那个已经过期了,虽然当时我不知道,就把新版旧版两种都实现了一遍。
比较明显的区别是,老版jsapi支付要用到jsapi_ticket
这个ticket,这是我遇到的第三个ticket,申请的url是
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi
看到要拿这个的话就可以退出去找新版的文档了。