微信小程序开发之发送模板消息
1,小程序wxml页面form表单添加 report-submit="true"
<form bindsubmit="sub" report-submit="true">
<button formType="submit">确认发布</button>
</form>
2,小程序js代码 (formId唯一且只有提交表单时产生,只能使用一次)
Page({
// 页面的初始数据
data: {},
sub: function (e) {
console.log(e.detail.formId); // 获取formId,发送至服务器端
}
});
3,php程序代码
// 发送get请求
function curlGet($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
if(curl_errno($curl)){
return 'ERROR ' . curl_error($curl);
}
curl_close($curl);
return $output;
}
// 获取小程序用户access_token
function getToken(){
$appid = '小程序公众平台中的APPID'; // 注意!!!
$appsecret = '小程序公众平台中的APPSECRET'; // 注意!!!
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
$output = curlGet($url);
$result = json_decode($output, true);
return $result['access_token'];
}
// 发送通知
function sendNotice(){
$access_token = getToken();
$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . $access_token;
$post_data = [
'touser' => 'openid', // 用户的 openID,可用过 wx.getUserInfo 获取
'template_id' => 'SNZQnzYFJMwwgRp3Oh2fvI_PHp_SQWqZzpiXLP3pSJI', // 小程序后台申请到的模板编号
'page' => '/pages/index/index', // 点击模板消息后跳转到的页面,可以传递参数
'form_id' => $formid, // 第一步里获取到的 formID
'data' => [
'keyword1' => ['value' => '信息1'],
'keyword2' => ['value' => '信息2'],
'keyword3' => ['value' => '信息3']
],
'emphasis_keyword' => '' // 需要强调的关键字,会加大居中显示
];
$data = json_encode($post_data, true);
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-type:application/json', // header 需要设置为 JSON
'content' => $data,
'timeout' => 60 // 超时时间
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}