小程式訂閱訊息公測已經有些日子,今天以世界上最好的語言(PHP)為例,說一下如何發送訂閱訊息,
1、訂閱訊息
其實如果用過模板訊息的話,改用訂閱訊息挺簡單的,看一下官方檔案稍加摸索就能使用,
但是對于那些第一次用的萌新來說,可能會遇到各種各樣的坑,所以我會具體的說一下實作的程序,有經驗的可以直接翻到文章底部查看 Demo,
雖然如此,但是更詳細的引數描述還是需要去看官方檔案,傳送門:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
2、準備作業
首先是要獲取template_id,也就是模板 ID,
這個在小程式后臺的公共模板庫找到適用的模板選用,之后到我的模板中復制系統分配的模板 ID即可,如果沒找到合適的,就需要自己申請模板,3 - 7 天審核期,
?
然后就是小程式的 AppId 和 AppSecret,獲取方式在小程式后臺的開發功能中找到開發設定,保存 ID 和秘鑰,
?
這里需要注意的是AppSecret只有在第一次生成的時候會顯示,之后不再明文顯示,這個需要開發者自己保存好,如果泄露或者忘記密匙重置即可,
至于 openid 的獲取這里就不做具體說明了,
3、授權接收
發送前需要接受者授權接收該類訂閱訊息,否則訂閱訊息是無法下發,代碼很簡單,呼叫官方的訂閱介面:
wx.requestSubscribeMessage({
tmplIds: ['template_id'], // 此處可填寫多個模板 ID,但低版本微信不兼容只能授權一個
success (res) {
console.log('已授權接收訂閱訊息')
}
})
拉起的授權框是這樣的,但是截止發文之前,開發者工具是無法呼叫介面,只能在真機上運行,無奈,
?
4、下發訂閱訊息
下發訊息呼叫subscribeMessage.send ,分為云呼叫和 https 呼叫,云呼叫比較簡單,免去了 access_token 的獲取:
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: 'OPENID',
page: 'index',
data: {
name3: {
value: '我是玖柒后'
},
thing4: {
value: 'Hello World!'
},
phrase1: {
value: "發送成功!"
},
date5: {
value: "發送成功!"
},
thing2: {
value: "1024 身體健康!"
}
},
templateId: 'TEMPLATE_ID'
})
console.log(result)
return result
} catch (err) {
console.log(err)
return err
}
}
然后在服務器端發起請求,請求地址:
https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=token
在這之前先獲取小程式全域唯一后臺介面呼叫憑據(access_token),這就用到了之前保存的 AppId 和 AppSecret,
// 小程式 appID 和 appSecret 獲取 token
function getAccessToken($appid, $appsecret)
{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
$html = file_get_contents($url);
$output = json_decode($html, true);
$access_token = $output['access_token'];
return $access_token;
}
雖然看起來稍微有點復雜,但其實也只要向服務器發送一個請求就可以了,獲取和呼叫都由服務器處理,收到的訊息和模板訊息差不多,
PHP 訂閱訊息完整的 API 模板關注公眾號,后臺回復「訂閱訊息」獲取,
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/178601.html
標籤:JavaScript
上一篇:JS 陣列,物件常用方法 集合
