美文网首页
微信公众号开发实战

微信公众号开发实战

作者: 松松土_0b13 | 来源:发表于2019-06-27 14:08 被阅读0次

申请账号

去微信公众号官网搜索,按着步骤来,得到appID、appsecret,至于token是自己填写的。

剩下的就是接口配置(接受腾讯服务器发送过来的消息)、JS接口安全域名、模板消息

接口配置

需要填写一个公网ip的服务器地址,加上接口地址。如:

http://www.xxx.com/v1/public/interface

腾讯的回调地址必须是80端口,返回的参数就是在公众号里面配置的token,可以直接返回,也可以排序验证以后返回

常用工具

  • 花生壳或者ngrok
./ngrok http 192.168.0.71:7008 
  • 微信开发工具内网穿透或者浏览器内网穿透
  • ssh + tunnel + nginx

客户端用ssh运行下面命令就可以tunnel上服务器

ssh -vnNT -R 服务器端口:localhost:本地端口 服务器用户名@服务器IP地址

服务端在nginx配置下面的信息

upstream tunnel {
  server 127.0.0.1:端口;
}

server {
  listen 80;
  server_name dev.ninghao.net;
  
  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    
    proxy_pass http://tunnel;
  }
}

JS接口安全域名

在该域名下,js可以调用微信api

模板消息

服务端给客户手机微信发消息,必须有相应的模板;模板可以用他人的,也可以自己建,不过时间要审核完成才能用

获取access_token

token失效时间是7200秒,一般的操作提前刷新token,公众平台后台会保证在5分钟内,新老access_token都可用

  • redis的token失效时间设为7100秒
  • 系统启动并且每个7000秒运行一次定时器
  • 定时器调用微信接口获取token有效期,并更新redis中的token有效期
module.exports = {
  schedule: {
    interval: '7000s', // 小于2小时
    immediate: true,
    type: 'worker',
  },
  async task(ctx) {
    const { appid, secret } = ctx.app.config.wechat; 
    //调用获取接口
    const res = await ctx.curl('https://api.weixin.qq.com/cgi-bin/token', {
      data: { appid, secret ,grant_type: 'client_credential' },
      dataType: 'json',
    });
    console.log(res.data)
    if (res.data.errcode) {
      //调用接口出错
    }
    else {
      await ctx.app.redis.set('e_starter_wechat_token', res.data.access_token, 'EX', 7100);  //EX是秒
    }
  },
};

微信JS-SDK

jsapi_ticket是公众号用于调用微信JS接口的临时票据

//调用access_token获取接口
    const resJson = await ctx.curl('https://api.weixin.qq.com/cgi-bin/ticket/getticket', {
      data: { access_token: res.data.access_token,type: 'jsapi' },
      dataType: 'json',
    });
    if (resJson.data.errcode) {
      //调用接口出错
      return;
    }else {
      await ctx.app.redis.set('e_starter_wechat_ticket', resJson.data.ticket, 'EX', 7100);  //EX是秒
    }

同获取token的方法,公用一个定时器,token获取完了之后,获取ticket;微信端签名算法,细节可以去官网查看,出于安全考虑,开发者必须在“服务器端”实现签名的逻辑;微信用户只有关注了微信公众号才能调用微信接口;不管成功或者失败,ready中的代码都会执行。

appId: jsonData.appId, // 必填,公众号的唯一标识
timestamp: jsonData.timestamp, // 必填,生成签名的时间戳
nonceStr: jsonData.noncestr, // 必填,生成签名的随机串
signature: jsonData.signature,// 必填,签名,见附录1

微信网页授权

获取用户信息,可以知道用户是否关注了公众号,是否有权限使用微信接口等等。

  • 先在微信公众号配置可以网页授权
  • 回调页面有静默授权和用户确认授权,一般用静默授权获取openid来查询用户信息,并且用户关注微信公众号时要维护openid的信息

相关文章

  • 微信开发

    微信开发 公众号开发 微信WEB开发 JSSDK 小程序开发 公众号开发 公众号 订阅号 服务号 企业号 公众号开...

  • 微信公众号开发 (4) 网页授权

    一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 微信公众号开发 (3)...

  • 微信公众号开发实战

    申请账号 去微信公众号官网搜索,按着步骤来,得到appID、appsecret,至于token是自己填写的。 剩下...

  • 微信公众号开发:微信服务号和订阅号的区别!

    微信开发又称微信公众平台开发、或微信公众号开发,分为微信服务号、微信订阅号、以及微信企业号,其中服务号和订阅号是企...

  • 信公众平台功能接口开发实战高清视频教程

    微信公众平台功能接口开发实战高清视频教程,从最简单的微信公众号注册、开启审核对接开发接口到接口的相关常用功能的开发...

  • 微信(企业微信/公众号)开发实战

    整个九月闲了一个月,然后10月就开始忙的晕头转向,在连续加班2个星期的情况下,总算把微信公众号后台开发完成了。现在...

  • PHP微信公众号支付开发总结

    微信公众号开发是很常见的开发,其中微信支付占有很大的比重。微信公众号分为服务号和订阅号,服务号支持微信支付。 前期...

  • 基于JavaEE——微信网页(二)微信开发

    微信开发测试公众号(沙盒号) 微信API帮助文档 微信接口在线调试 首先申请微信开发的测试公众号,登陆后会看到微信...

  • 1 - 简介

    微信公众号开发 又称微信公众号二次开发。可以将公众账号由一个媒体型营销工具转化成提供服务的产品。 微信公众号开发的...

  • 微信公众号开发 (3) 菜单处理

    一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 本文将实现 根据App...

网友评论

      本文标题:微信公众号开发实战

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