小程序發(fā)送模板消息時(shí)需要參數(shù)form_id劝评,該參數(shù)在表單提交場(chǎng)景下因惭,為 submit 事件帶上的 [formId]屈嗤;支付場(chǎng)景下潘拨,為本次支付的 [prepay_id]。
form_id有使用次數(shù)限制并且有時(shí)效性恢共。為了方便管理战秋,我們?cè)谥鞑フ局卸xform_id只能使用一次。所以每次在發(fā)送模板消息之前讨韭,用戶(hù)都需要通過(guò)特定的操作來(lái)獲取form_id 并通過(guò)接口提交給服務(wù)器保存。
主播站中用戶(hù)需要獲取form_id的地方有兩個(gè):
- 報(bào)名參加活動(dòng)癣蟋。當(dāng)用戶(hù)報(bào)名參加活動(dòng)的時(shí)候透硝,需要獲取到form_id并提交至服務(wù)器保存。
- 首頁(yè)“預(yù)約開(kāi)播提醒”疯搅。用戶(hù)點(diǎn)擊預(yù)約開(kāi)播提醒按鈕獲取form_id提交至服務(wù)器保存濒生。
form_id的保存規(guī)則
- 保存form_id至表t_notify,默認(rèn)狀態(tài)為1幔欧,表示form_id 可用罪治。同時(shí)設(shè)置form_id的過(guò)期時(shí)間,默認(rèn)為從保存時(shí)間起增加3天礁蔗。
form_id的使用
每次發(fā)送模板消息時(shí)觉义,需要通過(guò)用戶(hù)的uid獲取到一條可用的form_id.
例: select * from t_notify where status = 1 and '{$time}' <= expire_time limit 1;
發(fā)送成功后需要將這條form_id狀態(tài)置為0,既不可用。
例: update t_notify set status = 1 where id = {$id}
如果發(fā)送模板時(shí)浴井,查找不到用戶(hù)的有可用form_id時(shí)晒骇,則跳過(guò)不做發(fā)送操作。