#### 1. 應(yīng)用場(chǎng)景 ---- 用戶在小程序商城購(gòu)買(mǎi)下單之后,商家如何能及時(shí)收到新訂單提醒,進(jìn)行發(fā)貨處理呢? 用戶在小程序中申請(qǐng)入駐商家后,平臺(tái)管理員如何能及時(shí)收到入駐申請(qǐng)通知,進(jìn)行及時(shí)審核處理呢? 常用的通知方式: 短信提醒、郵箱通知、公眾號(hào)模板消息,本文介紹如何在小程序中使用公眾號(hào)的模板消息發(fā)送消息通知 查看公眾號(hào)模板消息文檔得出: 只要拿到用戶在公眾號(hào)下的 openid 就可以向用戶發(fā)送模板消息通知,所以我們只需要想辦法獲取到用戶在該公眾號(hào)的 openid 即可,總結(jié): 通過(guò)公眾號(hào)的網(wǎng)頁(yè)授權(quán)拿到用戶的 openid,當(dāng)用戶下單后給商家發(fā)送模板消息 #### 2. 準(zhǔn)備材料 ---- 已認(rèn)證的服務(wù)號(hào)、appid 和 開(kāi)發(fā)者密鑰、配置網(wǎng)頁(yè)授權(quán)域名、IP 白名單、已關(guān)注服務(wù)號(hào) 申請(qǐng)服務(wù)號(hào)是需要企業(yè)資質(zhì)的,對(duì)于個(gè)人開(kāi)發(fā)者一般是沒(méi)有的,微信為了方便開(kāi)發(fā)者調(diào)試,開(kāi)放了測(cè)試號(hào)供個(gè)人開(kāi)發(fā)者使用 公眾號(hào)測(cè)試號(hào)登錄地址: [https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login) 小程序用個(gè)人的、還是認(rèn)證的都可以,可使用 **個(gè)人小程序 + 測(cè)試號(hào)** 調(diào)試在小程序中給平臺(tái)管理員發(fā)送新訂單提醒消息通知 #### 3. 功能實(shí)現(xiàn) --- ThinkPHP v6.0.9 + EasyWechat 4.x 在小程序項(xiàng)目中,一般 api 應(yīng)用作為 小程序接口(本文示例中默認(rèn)是 index 應(yīng)用), admin 應(yīng)用作為后臺(tái)管理系統(tǒng) 在控制器的構(gòu)造方法獲取公眾號(hào)操作對(duì)象,訂閱號(hào)沒(méi)有網(wǎng)頁(yè)授權(quán)的接口權(quán)限,但是可以使用公眾號(hào)測(cè)試號(hào)進(jìn)行調(diào)試 ![](https://img.itqaq.com/art/content/29c51ac10f1d29d036b28c04628f753d.png) 我們可以生成一個(gè)二維碼,用來(lái)做授權(quán)使用,掃碼二維碼跳轉(zhuǎn)到網(wǎng)頁(yè)授權(quán)方法入口, 我用的是下面的擴(kuò)展包生成的二維碼 ``` composer require endroid/qr-code ``` ![](https://img.itqaq.com/art/content/e5027db0934173d46e3d41f0cecbc2b1.png) 調(diào)起公眾號(hào)網(wǎng)頁(yè)授權(quán)有以下兩種授權(quán)方式 snsapi_base: 靜默授權(quán),無(wú)需用戶同意,只能獲取到用戶openid snsapi_userinfo: 高級(jí)授權(quán),需要用戶同意,可以獲取到用戶openid、昵稱、頭像等信息 ![](https://img.itqaq.com/art/content/5505f7fb7c7cd518e225e2c276224d00.png) 在網(wǎng)頁(yè)授權(quán)回調(diào)地址中可以獲取到用戶的opened、昵稱、頭像等信息 根據(jù) openid 查詢用戶,數(shù)據(jù)庫(kù)中沒(méi)有該用戶則寫(xiě)入數(shù)據(jù)庫(kù),該用戶已存在則可以更新用戶信息或者不進(jìn)行操作 ![](https://img.itqaq.com/art/content/06af976e284b338b4f45ec4ea74e4d4b.png) 登錄公眾號(hào)測(cè)試號(hào),新增一個(gè)用于測(cè)試的模板消息 ![](https://img.itqaq.com/art/content/53de87d420f9495d35aee28b009db039.png) 當(dāng)有新訂單時(shí),執(zhí)行以下方法,查詢已授權(quán)的用戶,給這些用戶發(fā)送模板消息 ![](https://img.itqaq.com/art/content/e5a8354850a1d41b7e282483461dc79e.png) 授權(quán)用戶微信中會(huì)收到一條消息通知,如下圖所示 ![](https://img.itqaq.com/art/content/8995388e7d73d87d6f1cc424d0180081.png) #### 4. 本文示例代碼 --- 授權(quán)用戶表 ```sql CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `openid` varchar(50) DEFAULT NULL, `nickname` varchar(120) DEFAULT NULL, `avatar` varchar(255) DEFAULT NULL COMMENT '頭像', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='授權(quán)用戶表'; ``` 百度網(wǎng)盤(pán): [https://pan.baidu.com/s/1tTQrZae0aIlohWQx22vHJA ](https://pan.baidu.com/s/1tTQrZae0aIlohWQx22vHJA ), 提取碼: `hgd2`