首先说明推送消息的条件
支付
当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)
提交表单
当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)
下面说明如何发生模版消息
1.用code换取openid
2.获取 access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 公众号的唯一标识 |
secret | 是 | 公众号的appsecret |
code | 是 | 填写第一步获取的code参数 |
grant_type | 是 | 填写为authorization_code |
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
HTTP请求方式:
GET
参数说明 :
参数 | 必填 | 说明 |
---|---|---|
grant_type | 是 | 获取 access_token 填写 client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
$opendId =
"oTCMT0VwenSbyNDlbTxccBR4mErM";
// template_id 是 所需下发的模板消息的id
$template_id =
"5NV_S4ksH9Q5ek6W-7dsRg8j96UvtoG2Z9B7mtek8hY";
// page 否 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
$page =
" pages/index/index";
// form_id 是 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
// $form_id = mparam('form_id/s');
$form_id =
'f94f7f605baf096cf037909d6fa2a2ff';
// data 是 模板内容,不填则下发空模板
$data = [
"keyword1"=>[
"value"=> date(
"Y-m-d").
"制定计划",
"color"=>
"#4a4a4a"
],
"keyword2"=>[
"value"=>
"时间快到了",
"color"=>
"#9b9b9b"
],
"keyword3"=>[
"value"=>
"准备行动",
"color"=>
"#9b9b9b"
]
];
// color 否 模板内容字体的颜色,不填默认黑色
$color =
"#3f3f3f";
// emphasis_keyword 否 模板需要放大的关键词,不填则默认无放大
$emphasis_keyword =
"
keyword1.DATA"
;
$content = json_encode([
'touser'=>$opendId,
'template_id'=>$template_id,
'page'=>$page,
'form_id'=>$form_id,
'data'=>$data,
'color'=>$color,
'emphasis_keyword'=>$emphasis_keyword
]);
$access_token = getAccessToken();
$url =
"https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={$access_token}";
$result = json_decode(https_request($url, $content));