小程序發送公衆号模闆消息+PHP後台
發表時(shí)間:2020-10-19
發布人(rén):融晨科技
浏覽次數:102
1、準備工作
微信公衆号:AppId和(hé / huò)APPSecret(必須認證)
微信小程序:AppId和(hé / huò)APPSecret(必須認證)
微信開放者平台(小程序和(hé / huò)公衆号必須綁定同一個(gè)開放者平台,必須認證)
2、獲取微信公衆号的(de)access_token(7200秒有效)
接口調用請求說(shuō)明
https請求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
參數說(shuō)明
參數是(shì)否必須說(shuō)明grant_type是(shì)獲取access_token填寫client_credentialappid是(shì)第三方用戶唯一憑證secret是(shì)第三方用戶唯一憑證密鑰,即appsecret返回說(shuō)明
正常情況下,微信會返回下述JSON數據包給公衆号:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
參數說(shuō)明
參數說(shuō)明access_token獲取到(dào)的(de)憑證expires_in憑證有效時(shí)間,單位:秒錯誤時(shí)微信會返回錯誤碼等信息,JSON數據包示例如下(該示例爲(wéi / wèi)AppID無效錯誤):
{"errcode":40013,"errmsg":"invalid appid"}
3、獲取微信公衆号的(de)openID
1)header跳轉授權
"https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appid}&redirect_uri={$callback}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
用戶同意授權,獲取code
在(zài)确保微信公衆賬号擁有授權作用域(scope參數)的(de)權限的(de)前提下(服務号獲得高級接口後,默認擁有scope參數中的(de)snsapi_base和(hé / huò)snsapi_userinfo),引導關注者打開如下頁面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“該鏈接無法訪問”,請檢查參數是(shì)否填寫錯誤,是(shì)否擁有scope參數對應的(de)授權作用域權限。
尤其注意:由于(yú)授權操作安全等級較高,所以(yǐ)在(zài)發起授權請求時(shí),微信會對授權鏈接做正則強匹配校驗,如果鏈接的(de)參數順序不(bù)對,授權頁面将無法正常訪問
參考鏈接(請在(zài)微信客戶端中打開此鏈接體驗):
scope爲(wéi / wèi)snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
scope爲(wéi / wèi)snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
尤其注意:跳轉回調redirect_uri,應當使用https鏈接來(lái)确保授權code的(de)安全性。
參數說(shuō)明
參數是(shì)否必須說(shuō)明appid是(shì)公衆号的(de)唯一标識redirect_uri是(shì)授權後重定向的(de)回調鏈接地(dì / de)址, 請使用 urlEncode 對鏈接進行處理response_type是(shì)返回類型,請填寫codescope是(shì)應用授權作用域,snsapi_base (不(bù)彈出(chū)授權頁面,直接跳轉,隻能獲取用戶openid),snsapi_userinfo (彈出(chū)授權頁面,可通過openid拿到(dào)昵稱、性别、所在(zài)地(dì / de)。并且, 即使在(zài)未關注的(de)情況下,隻要(yào / yāo)用戶授權,也(yě)能獲取其信息 )state否重定向後會帶上(shàng)state參數,開發者可以(yǐ)填寫a-zA-Z0-9的(de)參數值,最多128字節#wechat_redirect是(shì)無論直接打開還是(shì)做頁面302重定向時(shí)候,必須帶此參數下圖爲(wéi / wèi)scope等于(yú)snsapi_userinfo時(shí)的(de)授權頁面:
用戶同意授權後
如果用戶同意授權,頁面将跳轉至 redirect_uri/?code=CODE&state=STATE。
code說(shuō)明 : code作爲(wéi / wèi)換取access_token的(de)票據,每次用戶授權帶上(shàng)的(de)code将不(bù)一樣,code隻能使用一次,5分鍾未被使用自動過期。
首先請注意,這(zhè)裏通過code換取的(de)是(shì)一個(gè)特殊的(de)網頁授權access_token,與基礎支持中的(de)access_token(該access_token用于(yú)調用其他(tā)接口)不(bù)同。公衆号可通過下述接口來(lái)獲取網頁授權access_token。如果網頁授權的(de)作用域爲(wéi / wèi)snsapi_base,則本步驟中獲取到(dào)網頁授權access_token的(de)同時(shí),也(yě)獲取到(dào)了(le/liǎo)openid,snsapi_base式的(de)網頁授權流程即到(dào)此爲(wéi / wèi)止。
4、發送模闆消息
接口調用請求說(shuō)明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
POST數據說(shuō)明
POST數據示例如下:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"miniprogram":{
"appid":"xiaochengxuappid12345",
"pagepath":"index?foo=bar"
},
"data":{
"first": {
"value":"恭喜你購買成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2": {
"value":"39.8元",
"color":"#173177"
},
"keyword3": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"歡迎再次購買!",
"color":"#173177"
}
}
}
參數說(shuō)明
參數是(shì)否必填說(shuō)明touser是(shì)接收者openidtemplate_id是(shì)模闆IDurl否模闆跳轉鏈接(海外帳号沒有跳轉能力)miniprogram否跳小程序所需數據,不(bù)需跳小程序可不(bù)用傳該數據appid是(shì)所需跳轉到(dào)的(de)小程序appid(該小程序appid必須與發模闆消息的(de)公衆号是(shì)綁定關聯關系,暫不(bù)支持小遊戲)pagepath否所需跳轉到(dào)小程序的(de)具體頁面路徑,支持帶參數,(示例index?foo=bar),要(yào / yāo)求該小程序已發布,暫不(bù)支持小遊戲data是(shì)模闆數據color否模闆内容字體顔色,不(bù)填默認爲(wéi / wèi)黑色注意:openID爲(wéi / wèi)公衆号的(de)openID