最近有机会,尝试了一次微信开发,中间遇到很多比较容易踩得坑,记录一下。
主要功能是
微信网页认证
转盘抽奖
微信公共号发红包给当前登录用户
分享给好友和分享到朋友圈
涉及到的资源
微信公众平台: https://mp.weixin.qq.com
微信商户平台: https://pay.weixin.qq.com/
微信API:http://mp.weixin.qq.com/wiki/7/aaa137b55...
微信开发者论坛: http://qydev.weixin.qq.com/qa/index.php?...
过程记录
微信网页认证
条件:
服务号
通过微信认证
接口文档:http://mp.weixin.qq.com/wiki/17/c0f37d57...
过程是获取用户授权的code,通过code获取access_code,然后通过access_code获取用户信息。
其中第一个坑
第一步获取用户授权的code,redirect_uri
经常会报错redirect_uri参数错误
,可能的原因是:
公众平台后台设置授权回调域名
回调页面有端口,授权也需端口
redirect_uri urlencode
绑定已备案域名,主要域名必须是二级或二级以上域名
如果以上问题都注意到后,还是有问题,便可以等几个小时,很可能是微信接口抽风了,我就是用着用着这个接口挂了,等了好几个小时自己好了。
第二个坑
有时候报错”不能访问链接“,原因是微信后台设置的回调域名不对,有时候自己切换host后,域名不对,所以修改回调域名就好了。
第三个坑
access_token
会过期,用的时候建议每次都通过refresh_token
去重新获取access_token
第四个坑
用户授权后回跳的页面的时候,控制台报错
`Resource interpreted as Document but transferred with MIME type application/octet-stream: "https://open.weixin.qq.com/connect/oauth2/..`
解决办法是,回调页面的url设置为http://xxx.com
,而不是xxx.com
第五个坑
授权回调页面,url会带有?code=xxx
,不能直接分享这个url,会导致后面的用户授权不了。因为这个问题纠结了很久。
解决方式是,在node端解析code,然后写入cookie,通过url redirect
到没有code的页面。另一种方式是,通过微信api,定制分享内容和分享的链接。
公众号微信发红包给用户
条件:
通过微信认证
通过微信支付认证
接口地址:https://pay.weixin.qq.com/wiki/doc/api/t...
第一个坑
就是有时候会报错签名错误
,可能原因及解决办法是:
生成签名的密匙过期,重新去后台设置一下即可。
加密的字符串需要按照ASCII排序
如果还是没解决,可以去掉中文试试
还是不正确,可以通过签名工具,把参数都输入后看输出的和自己的哪一步不对。
最后,post请求传过去的body应该是xml格式,且xml格式需要严格按照xml语法,顺序最好和文档的一样。
第二个坑
证书的使用。
官方下载会下载到三个证书,node用.p12后缀的,使用方式是在请求头设置 agent,然后设置密码。具体见文末的代码链接。
第三个坑
红包的描述和祝福语之类的设置中文会出现红包发送不出去的情况,解决方式是对中文进行unicode编码。
分享给好友和分享到朋友圈
第一步,在微信后台设置js接口安全域名
第二步,引入js文件
第三步,通过config接口注入验证配置
坑: signature签名获取方式是先获取 jsapi_ticket,通过access_token获取jsapi_ticket时总是报错,同一个未过期的access_token获取用户信息是可以的,获取jsapi_ticket就不行。
第四部,配置onMenuShareTimeline方法。可以自定义分享内容和链接。
最后,推荐html5的一些组件库
frozenUI: http://frozenui.github.io
很出色的h5制作网站:http://h5.baidu.com/
源代码仓库链接:https://github.com/freestyle21/orange-pl...
原创文章,欢迎转载。转载请注明:转载自Fs21 ' s Home,谢谢!
原文链接地址:微信开发的一些总结