小程序下发模板消息统一通过微信“服务通知”发送,如下图
1. 获取 access_token
access_token 是全局唯一接口调用凭据,开发者调用各接口时都需使用 access_token,需妥善保存。
2. 添加模板消息
跟公众号一样,需要现在小程序后台添加模板消息,然后获取到对应的模板消息ID。
3. 发送模板消息
根据模板消息ID对应的模板消息关键字,在后端构造消息内容,在用户提交表单或者支付的时候,获取到form_id(表单提交场景下,为 submit 事件带上的 formId),后端将消息发送出去。参数如下:
PHP示例代码
$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . accessToken;
//这里一定要按照微信给的格式
$data = array(
"touser" => xxxxxxxxx,
"template_id" => xxxxxxxxx,
"page" => xxxxxxxxx,
"form_id" => xxxxxxxxx,
"data" => array(
"keyword1" => array(
"value" => '真好',
),
"keyword2" => array(
"value" => '天气真好',
),
"keyword3" => array(
"value" => '点击一下试试',
),
),
"emphasis_keyword" => "keyword1.DATA",//需要进行加大的消息
);
$res = postCurl($url, $data, 'json');//将data数组转换为json数据
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;
}