简单实用的微信公众号开发流程
![](/skin/images/news-belong-1.png)
![](/skin/images/news-belong-2.png)
![](/skin/images/news-belong-3.png)
一、开发准备
1、注册微信公众号
2、注册开发者账号(微信开放平台)
3、在开发者账号内绑定自己的微信公众号
4、申请测试公众号
二、在微信公众号平台获取基本参数(保存在配置文件里)
token
test_token
appid
appsecret
mch_id //支付
test_appid
test_appsecret
server_notify
key
三、服务器在获取基本参数
1、验证服务器(80 443端口,接受GET请求,验证签名)
2、获取ACESS_TOKEN(用独立服务刷新),可以保存在文件里,也可以保存在redis里,建议独立进程去刷新,有失败重试和报警
3、配置JSSDK,调用微信JSSDK接口时需要用到
4、获取 openid(oauth2.0),获取微信用户信息绑定自己的数据库用户时需要用到
四、微信开发
1、微信菜单 把JSON对象传给微信服务器,建议做成单独的功能,不要和其他功能
2、微信支付
1)注入JSSDK config(其实不用注入也可以成功)
2)注入成功之后要验证 Agent是否支持微信支付
3)客户端输入信息完毕之后,点击支付后
4)服务器进行输入校验后,保存订单和用户信息,然后通过统一下单接口生成订单, 并发送给客户端
5)不要使用JSSDK网页上的微信支付接口,使用微信支付详情页面示例的微信支付接口进行支付
6)支付成功后,用wx.closeWindow()接口关闭页面
7)微信会给服务器一个回调,然后服务器更改订单状态,并通过客服消息接口给客户发个信息反馈(注意重复验证)
2、微信客服消息
1)接受回调, 验证签名和随机字符串是否正确
2)正确之后发布客服消息
3、微信事件通知及被动消息回复
1)在开发者配置里,把服务器回调网址配置好
2)当微信接到用户特定动作时时,会给服务器发送事件通知(POST),然后开发者直接回复 xml 或者 '' 即可
五、注意要点
1、微信的SessionID会一直变化, 所以不能用Session去存openid,可以采用的是cookies localStorage存储
2、微信支付的支付页面,强匹配网址(//neonumbra.com 和//neonumbra.com/)都不一样,有一点网址不一样都不行
3、微信支付的支付 sdk 旧的和新的在微信支付页面没有标明,(JSSDK说明文档上的支付API是旧的),千万不要用旧的了, 用新的即可
4、微信API上充斥着各种风格的变量名(noncestr nonce_str nonceStr 以及 timestamp timeStamp)千万要小心
5、微信开发, 本质是web移动端开发,只是有时候需要调用JSSDK接口,有时候需要与微信服务器通信让微信服务器发送指令给用户,开发过微信支付之后,基本上就没什么难点了...
6、微信有php示例代码,开发的时候可以参考一下,语言都是通用的