微信公众号开发

一、开发准备

1、公众号设置-功能设置
2、基本配置

二、接入流程

1.在微信公众平台的 开发 -> 基本配置 那填写服务器信息;
2.点击启用后,微信会发 Get 请求到填写的服务器,检查服务器是否有效;
3.服务器验证通过后,公众号每次接收到新消息,都会发 POST 请求到服务器,然后我们就可以在服务器里进行各种处理。

三、关键代码

‘use strict’

const logger = use(‘App/Services/Logger’)
const crypto = use(‘crypto’)
const axios = use(‘axios’)
const randomString = use(‘randomstring’)

const appId = ‘wxd901da01d13166a9’
const appsecret = ‘9b2c552de9f5a46b292dfae241a91f8d’
const url = ‘http://walter666.cn/demo’

class WeixinController {
async demo({ request, view }) {
const echostr = request.input(‘echostr’)
if (echostr && this.valid(request)) {
return echostr
} else {
const access_token = await this.getData(https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appsecret})

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
const jsapi_ticket = await this.getData(https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=${access_token['data']['access_token']})

  const nonceStr = this.getNonceStr()
  const timestamp = this.getTimeStamp()

  const str = `jsapi_ticket=${jsapi_ticket['data']['ticket']}&noncestr=${nonceStr}&timestamp=${timestamp}&url=${url}`
  const signature = this.genSha1(str)

  return view.render('weixin', { appId, timestamp, nonceStr, signature })
}

}

getData(url) {
return axios.get(url)
.then(result => result)
}

getNonceStr() {
return randomString.generate(16)
}

getTimeStamp() {
const t = Date.parse(new Date()).toString()
return t.substring(0, t.length - 3)
}

valid(request) {
const token = ‘weixin’
const nonce = request.input(‘nonce’)
const timestamp = request.input(‘timestamp’)
const signature = request.input(‘signature’)
const mySignature = this.genSha1([token, nonce, timestamp].sort().join(’’))
logger.info(signature, mySignature)
return signature == mySignature
}

genSha1(str) {
return crypto.createHash(‘sha1’).update(str).digest(‘hex’)
}
}

module.exports = WeixinController

微信官网参考地址:
access_tocken
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
jsapi_ticket
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值