美文网首页
踩坑系列1 微信公众号项目

踩坑系列1 微信公众号项目

作者: 莫小归 | 来源:发表于2019-03-01 12:33 被阅读0次

    项目技术点:

    • xml/json解析,场景为消息接收和公众号菜单创建
    • 通过发送get/post请求调用微信公众平台接口
    • 消息加密,微信公众号可使用AES加密被动回复给用户的消息
    • OAuth2.0 微信网页授权
    • WeUI 微信前端CSS框架
    • JS-SDK 微信网页JavaScript功能包
    • 微信客服
    • 模板消息
    • 微信支付

    一.微信服务器消息验证

    1.场景
    • 微信公众号服务器需要与微信服务器通讯
    • 微信通过在公众号配置中写入token(公钥A),作为验证微信服务器的工具
    • 使用非对称加密,类似于Https原理
    2.服务器验证流程
    • 公众号服务器接收到网络消息
    • 从消息中提取signature、timestamp、nonce、echoStr字段
    • 加入填在公众号配置的token,对timestamp、nonce、token进行字典排序,得到list
    • 取list的哈希值,与signature比较
    • 若两者相等,确定消息来自微信服务器
    • 返回echoStr供微信服务器认证token
    3.收获
    • 实际接触服务器通信确认,加深对Https的理解

    二.获取AccessToken的线程造成内存泄漏

    1.场景
    • 调用微信接口需要AccessToken
    • AccessToken两小时失效,每天可请求次数有限,需开发者自行定时请求和存放
    • 需要对AccessToken加并发锁防止并发刷新
    2.问题
    • 在Tomcat中单独开启线程定时获取AccessToken并刷新存储
    • 关闭Tomcat时报Memory Leak错误
    • 检查日志发现获取AccessToken的线程在Tomcat停止后并未结束
    3.原因和解决办法
    • 执行 $JAVA_HOME/bin/jstack 查看在运行的线程号
    • 定位到jdk/bin目录执行 $ jstack 线程id 查看线程情况,确定是获取AccessToken的线程不是守护线程,在Tomcat关闭后没有自动结束
    • 当前运行tomcat的jvm里还有非deamon的线程没有结束执行,例如被阻塞,或者还在执行任务。这个现象就是tomcat 端口都已经关闭了,但是java进程还在。tomcat的停止只是结束了自己的线程,关闭了自己的资源。但是应用开启的非deamon线程,这个 tomcat是无能为力的
    • 将获取AccessToken的线程设置为守护线程,问题解决
    4.收获
    • 理解Tomcat和JVM在线程管理上的细节
    • 实际应用了守护线程

    三. OAuth2.0授权回调后重定向丢失Request

    1.场景
    2.问题
    • 在用户通过引导链接确认网页授权时,request域存有参数
    • 当用户访问引导链接完成授权后回调回来时,request域内的参数丢失
    3.原因和解决办法
    • 用户在授权后回调回来时,进行的是重定向操作,相当于开启了新会话,原request丢失
    • 将参数保留在链接里的state中,回调后以get方式获取

    四.使用微信支付接口

    1.支付接口调用
    • 采取JSAPI的支付场景
      1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程
      2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示
      3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功
    • 业务流程
      https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4
      1)调用统一下单生成预付单信息
      2)用户点击支付,发出支付申请
      3)用户确认支付,输入密码验证
      4)微信处理支付,发送支付信息给商户平台和用户
    2.注意事项
    • 使用微信提供的签名校验工具校验签名
    • 使用ios手机可以获得错误提示信息,使用安卓的就只有挨个问题排查了

    相关文章

      网友评论

          本文标题:踩坑系列1 微信公众号项目

          本文链接:https://www.haomeiwen.com/subject/qquruqtx.html