微信小程序API接入指引,接入微信小程序消息服務(wù)步驟
接入概述
接入微信小程序消息服務(wù),開發(fā)者需要按照如下步驟完成:
1、填寫服務(wù)器配置
2、驗(yàn)證服務(wù)器地址的有效性
3、依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯
下面詳細(xì)介紹這3個(gè)步驟。
第一步:填寫服務(wù)器配置
登錄微信小程序官網(wǎng)后,在小程序官網(wǎng)的“設(shè)置-消息服務(wù)器”頁面,管理員掃碼啟用消息服務(wù),填寫服務(wù)器地址(URL)、Token 和 EncodingAESKey。
URL是開發(fā)者用來接收微信消息和事件的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進(jìn)行比對,從而驗(yàn)證安全性)。EncodingAESKey由開發(fā)者手動(dòng)填寫或隨機(jī)生成,將用作消息體加解密密鑰。
同時(shí),開發(fā)者可選擇消息加解密方式:明文模式、兼容模式和安全模式。可以選擇消息數(shù)據(jù)格式:XML格式或JSON格式。加密方式的默認(rèn)狀態(tài)是明文格式,而數(shù)據(jù)格式的默認(rèn)狀態(tài)是XML格式。
模式的選擇與服務(wù)器配置在提交后都會立即生效,請開發(fā)者謹(jǐn)慎填寫及選擇。切換加密方式和數(shù)據(jù)格式需要提前配置好相關(guān)代碼,詳情請參考消息加解密說明。
第二步:驗(yàn)證消息的確來自微信服務(wù)器
開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的服務(wù)器地址URL上,GET請求攜帶參數(shù)如下表所示:
參數(shù) | 描述 |
---|---|
signature | 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。 |
timestamp | 時(shí)間戳 |
nonce | 隨機(jī)數(shù) |
echostr | 隨機(jī)字符串 |
開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。加密/校驗(yàn)流程如下:1、將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序;2、將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密;3、開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
檢驗(yàn)signature的PHP示例代碼:
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
PHP示例代碼下載:下載
第三步:依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯
驗(yàn)證URL有效性成功后即接入生效,成為開發(fā)者。至此用戶向小程序客服發(fā)送消息、或者進(jìn)入會話等情況時(shí),開發(fā)者填寫的服務(wù)器配置URL將得到微信服務(wù)器推送過來的消息和事件,開發(fā)者可以依據(jù)自身業(yè)務(wù)邏輯進(jìn)行響應(yīng)。
另請注意,開發(fā)者所填寫的URL必須以 http:// 或 https:// 開頭,分別支持80端口和443端口。
更多微信小程序開發(fā)教程,可以關(guān)注hi小程序。第二部分:如何開通一個(gè)小商店