這篇文章主要介紹了關於小程式和PHP 發送模板訊息通知,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
首先,模板訊息介面需寫在後台伺服器上。【追加!目前小程式 模板訊息只能 本人觸發 並發給本人。】
2018.4.9修改 :1次提交表單可下發1條,多次提交下發條數獨立,相互不影響;
1次支付可下發3條,多次支付下發條數獨立,互相不影響。
小程式端
根據模板資訊,出到後台相應的值,還有formid或者prepay_id,通知人的openid。
.wxml檔案
之前忘記加上來了,因為必須是formid或者prepay_id。所以得有一個按鈕去觸發取得。如果大家有不用手動觸發的方法,還請不吝賜教!!!!這個問題想了很久!!
<form bindsubmit="tiXian" report-submit='true'> <button class='btn' form-type="submit" disabled="{{lock}}">提現</button> </form>
.js檔案
/** * 觸發提醒 */ remindMessage: function (formid){ var that = this wx.request({ method: 'POST', url: 'https://www.**********************_message.php',//後台介面 data: { o_id: that.data.allthing.openid, u_name: that.data.allthing.userInfo.nickName, money: that.data.money, formid: formid }, header: { 'content-type': 'application/x-www-form-urlencoded' }, success: function (res) { console.log(res.data) }, }) }
後台介面
*****.php
<?phpinclude_once('/o**********************c/function.php');include_once('/o*************************on/config.php');$ms = new Mysqls();$o_id = intval($_POST['o_id']);$u_name = addslashes($_POST['u_name']);$money = floatval($_POST['money']);$formid = addslashes($_POST['formid']);$dated = date("Y-m-d H:i:s");$to_place = "錢包";$remark = "餘額約 0-5 個工作日返回您的儲值賬戶,請等待餘額到賬通知";$template_id = "zAW*******************4DY"; //模板id$access_token=M::Get('q******_'.$appid);//需要使用token。放在緩衝中!!if(!$access_token){ $url_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret; $json_access_token = sendCmd($url_access_token,array()); //access_token加緩衝 $arr_access_token = json_decode($json_access_token,true); $access_token = $arr_access_token['access_token']; M::Set('qub*************_'.$appid,$access_token,3600);}if(!$o_id || !$u_name || !$money || !$formid){$arr = array('ret'=>0,'msg'=>'參數錯誤!');echo json_encode($arr);die();}if(!empty($access_token)) {$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token; //此處變數插入字串不能使用{}!!! $data = '{ "touser":"'.$o_id.'", "template_id":"'.$template_id.'", "form_id":"'.$formid.'", "data": { "keyword1": { "value":"'.$u_name.'" }, "keyword2": { "value":"'.$money.'" }, "keyword3": { "value":"'.$to_place.'" } , "keyword4": { "value":"'.$dated.'" } , "keyword5": { "value":"'.$remark.'" } }}'; $result = sendCmd($url,$data);$arr = array('ret'=>1,'msg'=>'success','data'=>array('result'=>$result),);} else {$arr = array('ret'=>0,'msg'=>'ACCESS TOKEN為空白!');}echo json_encode($arr);/** * 發起請求 * @param string $url 請求地址 * @param string $data 請求資料包 * @return string 請求返回資料 */function sendCmd($url,$data){ $curl = curl_init(); // 啟動一個CURL會話 curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢測 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 從認證中檢查SSL密碼編譯演算法是否存在 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解決資料包大不能提交 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的資料包 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死循 curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回 $tmpInfo = curl_exec($curl); // 執行操作 if (curl_errno($curl)) { echo 'Errno'.curl_error($curl); } curl_close($curl); // 關鍵CURL會話 return $tmpInfo; // 返回資料 }?>