1. 程式人生 > >微信小程式傳送模板訊息

微信小程式傳送模板訊息

 小程式下發模板訊息統一通過微信“服務通知”傳送,如下圖

 

1. 獲取 access_token access_token 是全域性唯一介面呼叫憑據,開發者呼叫各介面時都需使用 access_token,需妥善儲存。

2. 新增模板訊息 跟公眾號一樣,需要現在小程式後臺新增模板訊息,然後獲取到對應的模板訊息ID。

3. 傳送模板訊息 根據模板訊息ID對應的模板訊息關鍵字,在後端構造訊息內容,在使用者提交表單或者支付的時候,獲取到form_id(表單提交場景下,為 submit 事件帶上的 formId),後端將訊息傳送出去。引數如下:

 PHP示例程式碼

$formid = $redis->hget('id',$id); //取formid
$requert = json_decode($formid,true);
foreach ($requert as $k => $v) {
    $time = date('Y-m-d H:i:s', $v['time']);
    //是否過期
    if ($time < $date) {
        unset($requert[$k]);
    }
}
if (!empty($requert)) {
    $keys = array_keys($requert);
    $arr = $keys[0];
    $formids = $requert[$arr]['formid'];
    $openids = $openid[$i];
    $key1 = '天氣真好';//主題
    $key2 = '天氣相當好';//描述
    $key3 = '點選點選點選';//備註
    $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . getAsskey();
    //這裡一定要按照微信給的格式
    $data = array(
        "touser" => $openids,
        "template_id" => 'sdnskndwoidhnueiwhdnwionkajn',
        "page" => 'sajd/isjdi/shnf?usdn=cioasdm',
        "form_id" => $formids,
        "data" => array(
            "keyword1" => array(
                "value" => $key1,
            ),
            "keyword2" => array(
                "value" => $key2,
            ),
            "keyword3" => array(
                "value" => $key3,
            ),
        ),
        "emphasis_keyword" => "keyword1.DATA",//需要進行加大的訊息
    );
    $res = postCurl($url, $data, 'json');//將data陣列轉換為json資料
    //清除用過的formid
    unset($requert[$arr]);
    $redis->hset( 'id', $id, json_encode($requert));
}
function postCurl($url,$data,$type)
{
   $curl_init=curl_init();
   curl_setopt($curl_init,CURLOPT_POST,1);
   curl_setopt($curl_init,CURLOPT_SSL_VERIFYPEER,false);
   curl_setopt($curl_init,CURLOPT_SSL_VERIFYHOST,false);
  if($type == 'json'){
        $data = json_encode($data);//對陣列進行json編碼
    }
    curl_setopt($curl_init,CURLOPT_URL,$url);

    if(!empty($data)){
        curl_setopt($curl_init,CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($curl_init,CURLOPT_RETURNTRANSFER,1);
    $res = curl_exec($curl_init);
    if(curl_errno($curl_init)){
        echo 'Error+'.curl_error($curl_init);
    }
    return $res;
}
function getAsskey()
{
    $access = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret=";
    $oauth2 = getJson($access);
    $access_token = $oauth2['access_token'];
    return $access_token;
}

 function getJson($url){
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    return json_decode($output, true);
}