【微信开发】微信公众号开发思路

gengboxb 792 0

1、申请测试号https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

获取免费的appID和appsecret

2、node验证服务器地址的有效性

router.get('/', function(req, res, next) {
  //1.获取微信服务器Get请求的参数 signature、timestamp、nonce、echostr
  var signature = req.query.signature,//微信加密签名
  timestamp = req.query.timestamp,//时间戳
      nonce = req.query.nonce,//随机数
  echostr = req.query.echostr;//随机字符串
  

//2.将token、timestamp、nonce三个参数进行字典序排序
var array = ['helloegzh',timestamp,nonce];
array.sort();

//3.将三个参数字符串拼接成一个字符串进行sha1加密
var tempStr = array.join('');
const hashCode = crypto.createHash('sha1'); //创建加密类型 
var resultCode = hashCode.update(tempStr,'utf8').digest('hex'); //对传入的字符串进行加密


//4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if(resultCode === signature){
  res.send(echostr);
}else{
  res.send('mismatch');
}
});

3、使用花生壳内网穿透(80端口)

4、填写url(http://xxx.xxx)和token(helloegzh)提示配置成功

5、node编写get请求获取access_token

// config.appId是测试号的appis,config.appSecret是测试号的appsecret 
var tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appId=' + config.appId + '&secret=' + config.appSecret;

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存

6、JS-SDK接入

7、测试号绑定JS接口安全域名(不带http://)xxx.xxx

8、node编写get请求通过配置获得的access_token获取ticket

// token是通过配置获得的access_token
var tiketUrl = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' + token + '&type=jsapi';

9、ticket、随机字符串、随机时间戳、服务器地址算法签名生成

验证的签名算法:
1. 参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分)(http://xxx.xxx/sdk)
2. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,
3. 使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。
4. 对signature 作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

function getTimesTamp() {
    return parseInt(new Date().getTime() / 1000) + '';
}
function getNonceStr() {
    return Math.random().toString(36).substr(2, 15);
}
var timestamp = getTimesTamp(); // 随机时间
var noncestr = getNonceStr(); // 随机字符串
var str = 'jsapi_ticket=' + result.ticket + '&noncestr='+ noncestr+'&timestamp=' + timestamp + '&url=' + url;     
var signature = crypto.createHash('sha1').update(str).digest('hex'); // crypto加密算法

10、微信 JS 接口签名校验工具

http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

发表评论 取消回复
表情 图片 链接 代码

分享