微信⼩程序开发消息推送配置这⼀块⽹上都是PHP居多,由于⽤egg.js写了⼀套验证⽅法。
第⼀步:填写服务器配置
登录微信⼩程序官⽹后,在⼩程序官⽹的“设置-消息服务器”页⾯,管理员扫码启⽤消息服务,填写服务器地址(URL)、Token 和EncodingAESKey。
URL是开发者⽤来接收微信消息和事件的接⼝URL。 Token可由开发者可以任意填写,⽤作⽣成签名(该Token会和接⼝URL中包含的Token进⾏⽐对,从⽽验证安全性)。 EncodingAESKey由开发者⼿动填写或随机⽣成,将⽤作消息体加解密密钥。
同时,开发者可选择消息加解密⽅式:明⽂模式、兼容模式和安全模式。可以选择消息数据格式:XML格式或JSON格式。加密⽅式的默认状态是明⽂格式,⽽数据格式的默认状态是XML格式。
模式的选择与服务器配置在提交后都会⽴即⽣效,请开发者谨慎填写及选择。
第⼆部:验证消息来⾃微信服务端
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所⽰:
参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串
开发者通过检验signature对请求进⾏校验(下⾯有校验⽅式)。若确认此次GET请求来⾃微信服务器,请原样返回echostr参数内容,则接⼊⽣效,成为开发者成功,否则接⼊失败。加密/校验流程如下: 1、将token、timestamp、nonce三个参数进⾏字典序排序 2、将三个参数字符串拼接成⼀个字符串进⾏sha1加密 3、开发者获得加密后的字符串可与signature对⽐,标识该请求来源于微信
要注意的是签名验证通过之后,要返回的echostr字段是字符串,⽽不是对象。如果返回写的是 ctx.body = { echostr }就会显⽰token验证失败。
第三步:依据接⼝⽂档实现业务逻辑
验证URL有效性成功后即接⼊⽣效,成为开发者。⾄此⽤户向⼩程序客服发送消息、或者进⼊会话等情况时,开发者填写的服务器配置URL 将得到微信服务器推送过来的消息和事件,开发者可以依据⾃⾝业务逻辑进⾏响应。
此时的路径和你填写的URL⼀致,但是验证的时候是get请求,此时发送消息是post请求。
标签:URL,微信,程序开发,开发者,服务器,填写,推送,消息 From: https://www.cnblogs.com/zzsdream/p/17419328.html