微信公众号开发的经验与坑

公司要开发微信支付, 于是我就开始看微信开放平台的API文档, 发现微信, 历尽两周开发, 把网页前后端都开发完毕了, 遇到过大大小小的坑, 记录一下

开发准备

  • 注册微信公众号(服务号)
  • 开通微信支付功能
  • 注册开发者账号(微信开放平台)
  • 在开发者账号内绑定自己的微信公众号
  • 申请测试公众号

在微信公众号平台获取基本参数

  • token
  • test_token
  • appid
  • appsecret
  • mch_id
  • test_appid
  • test_appsecret
  • server_notify
  • key

服务器在获取基本参数

  • 验证服务器 (80 443端口, 接受GET请求, 验证 签名)
  • 获取ACESS_TOKEN(用独立服务刷新)
  • 配置JSSDK
  • 获取 openid(oauth2.0)

微信开发

  • 微信支付
    • 注入JSSDK config 其实不用注入也可以成功
    • 注入成功之后要验证 Agent是否支持微信支付
    • 客户端输入信息完毕之后, 点击支付后
    • 服务器进行输入校验后, 保存订单和用户信息, 然后通过 统一下单接口 生成订单, 并发送给客户端
    • 不要使用JSSDK网页上的微信支付接口, 使用 微信支付详情页面示例的微信支付接口进行支付
    • 支付成功后, 用wx.closeWindow()接口关闭页面
    • 微信会给服务器一个回调, 然后服务器更改订单状态, 并通过客服消息接口给客户发个信息反馈(注意重复验证)
  • 微信客服消息
    • 接受回调, 验证签名和随机字符串是否正确
    • 正确之后发布客服消息
  • 微信事件通知及被动消息回复
    • 在开发者配置里, 把服务器回调网址配置好
    • 当微信接到用户特定动作时时, 会给服务器发送事件通知(POST), 然后开发者直接回复 xml 或者 '' 即可

吐槽注意要点

  • 微信的SessionID会一直变化, 所以不能用Session去存openid, 我采用的是cookies存储
  • 微信支付的支付页面, 强匹配网址(http://www.abc.com 和 http://www.abc.com/)都不一样, 有一点网址不一样都不行
  • 微信支付的支付 sdk 旧的和新的在微信支付页面没有标明,(JSSDK说明文档上的支付API是旧的), 千万不要用旧的了, 用新的即可
  • 微信API上充斥着各种风格的变量名(noncestr nonce_str nonceStr 以及 timestamp timeStamp)千万要小心

开发时间

  • 采用nodejs开发, 微信支付的各种坑踩完 7个工作日
  • 后端CRUD 1个工作日
  • 客服消息 不到1个小时
  • 微信事件通知及被动消息回复 不到1个小时

PS: 欢迎大家继续吐槽微信开发

你可能感兴趣的:(微信公众号开发的经验与坑)