php實(shí)現(xiàn)QQ小程序發(fā)送模板消息功能
QQ小程序群里有伙伴要發(fā)送模板消息的代碼,所以今天給大家分享QQ小程序模板消息發(fā)布,絕對(duì)一步一步帶著大家走,每個(gè)細(xì)節(jié)都講到。
今天先用php簡(jiǎn)單寫(xiě)一下,有空了再寫(xiě)java的。
首先創(chuàng)建一個(gè)空項(xiàng)目:
因?yàn)镼Q小程序沒(méi)有編譯器,先用微信小程序創(chuàng)建。
然后新建一個(gè)頁(yè)面,直接上html代碼:
<form bindsubmit="form_submit" report-submit="true"> <button formType="submit">這是模板發(fā)送按鈕</button> </form>
然后寫(xiě)js邏輯:
然后上js代碼
form_submit(e) { console.log(e.detail.formId) var that = this wx.showToast({ title: '正在發(fā)送模板消息請(qǐng)求', duration: 5000, icon: 'loading', mask: true }) //推送消息 wx.login({ success: function (res) { console.log("獲得的code"); console.log(res) var code = res.code;//發(fā)送給服務(wù)器的code console.log("獲得用戶信息成功"); if (code) { wx.request({ url: 'https://xxxx/tokentest.php',//服務(wù)器的地址,現(xiàn)在微信小程序只支持https請(qǐng)求,所以調(diào)試的時(shí)候請(qǐng)勾選不校監(jiān)安全域名 data: { code: code, formID: e.detail.formId, }, header: { 'content-type': 'application/json' }, success: function (res) { console.log(res.data); wx.setStorageSync('useropenid', res.data) wx.showToast({ title: '發(fā)送模板消息成功!', }) } }) } else { console.log("獲取用戶登錄態(tài)失敗!"); } }, fail: function (error) { console.log('login failed ' + error); } }) },
這里簡(jiǎn)單說(shuō)一下原理:
微信小程序、QQ小程序想要發(fā)送模板消息給用戶,必須要用戶在小程序前端有提交表單的動(dòng)作出現(xiàn),所以我們?cè)趆tml中寫(xiě)了個(gè)form標(biāo)簽來(lái)完成這一要求,然后在js端接受該表單返回的formid,這個(gè)表單id是有七天時(shí)效的,也就是說(shuō)在7天之內(nèi)可以向用戶發(fā)送模板消息。綜上,發(fā)送模板消息需要兩個(gè)東西:一是用戶的openid(發(fā)給誰(shuí)),二是用戶的formid(有表單提交動(dòng)作)。
我們?cè)趈s中拿到了用戶的formid但是沒(méi)有拿到openid,所以需要請(qǐng)求后臺(tái)去拿用戶的openid。
拿openid需要用用戶提交上去的code,和小程序的appid及appsercet三把鑰匙去請(qǐng)求微信服務(wù)器,返回用戶的openid.
申請(qǐng)一個(gè)模板templateid:
然后是后臺(tái)程序php:
tokentest.php
form_submit(e) { console.log(e.detail.formId) var that = this wx.showToast({ title: '正在發(fā)送模板消息請(qǐng)求', duration: 5000, icon: 'loading', mask: true }) //推送消息 wx.login({ success: function (res) { console.log("獲得的code"); console.log(res) var code = res.code;//發(fā)送給服務(wù)器的code console.log("獲得用戶信息成功"); if (code) { wx.request({ url: 'https://xxxx/tokentest.php',//服務(wù)器的地址,現(xiàn)在微信小程序只支持https請(qǐng)求,所以調(diào)試的時(shí)候請(qǐng)勾選不校監(jiān)安全域名 data: { code: code, formID: e.detail.formId, }, header: { 'content-type': 'application/json' }, success: function (res) { console.log(res.data); wx.setStorageSync('useropenid', res.data) wx.showToast({ title: '發(fā)送模板消息成功!', }) } }) } else { console.log("獲取用戶登錄態(tài)失??!"); } }, fail: function (error) { console.log('login failed ' + error); } }) },
appid和appsercet在小程序后臺(tái)弄:
最后看一下效果吧:
總結(jié)
以上所述是小編給大家介紹的php實(shí)現(xiàn)QQ小程序發(fā)送模板消息功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
使用PHP實(shí)現(xiàn)一個(gè)輕量級(jí)HTML模板引擎
在Web開(kāi)發(fā)中,我們經(jīng)常需要?jiǎng)討B(tài)生成HTML頁(yè)面,為了提高開(kāi)發(fā)效率和代碼可維護(hù)性,使用模板引擎是一個(gè)非常普遍的方案,本文將介紹如何使用PHP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTML模板引擎,滿足變量綁定輸出和if判斷的需求,需要的朋友可以參考下2023-08-08php設(shè)置session值和cookies的學(xué)習(xí)示例
一直沒(méi)弄懂Session,cookies什么的登陸驗(yàn)證到底是怎么回事,昨天分別用HttpURLConnection和HttpClient兩個(gè)類來(lái)實(shí)驗(yàn)了一下,基本弄明白了Session驗(yàn)證登陸的機(jī)制和這兩個(gè)類的區(qū)別?,F(xiàn)在分享給大家2014-03-03php添加數(shù)據(jù)到xml文件的簡(jiǎn)單例子
下面小編就為大家?guī)?lái)一篇php添加數(shù)據(jù)到xml文件的簡(jiǎn)單例子。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09ThinkPHP+EasyUI之ComboTree中的會(huì)計(jì)科目樹(shù)形菜單實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇ThinkPHP+EasyUI之ComboTree中的會(huì)計(jì)科目樹(shù)形菜單實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06給WordPress的編輯后臺(tái)添加提示框的代碼實(shí)例分享
這篇文章主要介紹了給WordPress的編輯后臺(tái)添加提示框的代碼實(shí)例分享,即制作一個(gè)鼠標(biāo)指向后顯示詳細(xì)信息的效果,需要的朋友可以參考下2015-12-12