微信小程序推送公眾號模板消息描述: 因小程序是被動觸發(fā)推送消息,所以要做成推送到該用戶的微信公眾號上 代碼推送模板消息則是通過用戶的openId來進(jìn)行推送,但是小程序和微信公眾號的openId不同,所以只能另找辦法。 在微信的官網(wǎng)上查詢到,綁定在同一個微信開放者平臺上,則會生成一個unionId,這個unionId在小程序端和在微信公眾號端都是一樣的,所以我們拿這個來實現(xiàn)向微信公眾號推送模板消息的功能。 前期準(zhǔn)備: 微信公眾號:AppId和APPSecret(必須認(rèn)證) 微信小程序:AppId和APPSecret(必須認(rèn)證) 微信開放者平臺(小程序和公眾號必須綁定同一個開放者平臺,必須認(rèn)證) 認(rèn)證方法找微信文檔或度娘即可 獲取微信公眾號的所有用戶信息: 1、通過微信公眾號的AppId和AppSecret(當(dāng)前ip地址必須在微信公眾號的白名單內(nèi)) 獲取微信公眾號的access_token(7200秒有效) 地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 返回結(jié)果: {
"access_token": "ACCESS_TOKEN",
"expires_in": 7200}(其中的APPID和APPSECRET換成自己微信公眾號的appId和APPSecret) 2、通過剛才獲取到的access_token去獲取所有用戶的openId 地址:https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID 返回結(jié)果: {"count": 2,"data": {
"openid": [
"OPENID1",
"OPENID2"
]},"next_openid": "NEXT_OPENID","total": 2}(NEXT_OPENID為超出10000個取10001繼續(xù)請求,這個會在每次請求后返回的json字符串中有) 3、將所有的openId全部放在一個新的數(shù)組中,然后for循環(huán),循環(huán)次數(shù)為openId的數(shù)組的長度,循環(huán)請求每個用戶的基本信息 地址:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 返回結(jié)果: {
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "廣州",
"province": "廣東",
"country": "中國",
"headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL",
"remark": "",
"groupid": 0,
"tagid_list": [
128,
2
],
"subscribe_scene": "ADD_SCENE_QR_CODE",
"qr_scene": 98765,
"qr_scene_str": ""
}(其中的unionid綁定了開放者平臺才會有的) 4、將所有的用戶信息存儲在自己的數(shù)據(jù)庫中 獲取小程序用戶信息: 1、小程序端通過調(diào)用wx.login()會獲取到一個用戶登錄憑證code(有效期五分鐘) 2、將code傳給后臺,后臺通過appId、APPSecret和code能夠獲取到這個用戶的微信基本信息 地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 返回結(jié)果: {
"sex": 1,
"photoUrl": "https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eofr4W1SptUJ9M1PUiaqA4XBZiapCN98sPYOjNDXZSrUp1JcicibeLiaHZ56qlQnibQEUSFGLnEatu1TyiaA/132",
"openId": "oDl465JGG54ezszjG3K2spJV1TNM",
"uniodId": "otjNb03MD_IipC8XRdL68GOKLVgs"}(其中的unionid綁定了開放者平臺才會有的,如果綁定后還是沒有unionId,則這個小程序用戶沒有關(guān)注相同主體的公眾號) 3、將用戶信息保存在自己的數(shù)據(jù)里 微信公眾號推送: 1、本地數(shù)據(jù)庫中存放著小程序用戶表和微信公眾號的表,下面就是向某一個小程序用戶推送微信公眾號信息 2、在小程序用戶表中任意取一個用戶A信息,用戶A的openId和unionId,通過unionId到公眾號表里去檢索對應(yīng)的A用戶微信公眾號的openId 3、在微信公眾號上選擇一個模板消息,編輯完要發(fā)送的的內(nèi)容后,再請求發(fā)送模板消息的接口 地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN 請求參數(shù): {
"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"
}
}}
以上,為向微信小程序推送微信公眾號的模板消息步驟。 *注:關(guān)于微信公眾號不能推送的,或者推送報錯的,推送的miniprogram下的appid對應(yīng)的小程序必須是已審核并發(fā)布的才可以推送。
|
||||||||||||||||||||||||||||||||
| >> 相關(guān)文章 | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||