微信小程序服务通知

在小程序开发过程中,为了让小程序与用户有一定的交互性;
我们通常会使用 服务通知 来和用户进行交互,
这里记录一下自己使用使用方法,
便于后期自己的使用,和大家的学习。

服务消息的发送主要在服务端进行请求,
当用户本人在微信体系内与页面有交互行为时,
就可以使用模板消息,发送给用户了:
在小程序中,模板消息的发送主要 formIdprepay_id
表单提交场景时,为 submit 事件带上的 formId;
支付场景下,为本次支付的 prepay_id。

请求地址:

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN     // POST 

冯奎博客

一:获取模板 ID

有两个方法可以获取模板 ID:
通过模板消息管理接口获取模板 ID;
在微信公众平台手动配置获取模板 ID。(这里使用)

二:发送凭证 form_id

这里使用表单提交时, submit 事件带上的 formId
页面的 form 组件,属性 report-submittrue 时,
可以声明为需要发送模板消息,
此时点击按钮提交表单可以获取 formId,用于发送模板消息。

<form bindsubmit="submitForm" report-submit='true' >
    <button form-type="submit">提交</button>
</form>

获取

submitForm: function (e) {
    console.log(e.detail.formId);
},

注:e.detail.fromId,就是formid,真机中才会产生,模拟器中为 the formId is a mock one
冯奎博客
重要:

第一点:
    使用 "<form/>" 组件时,获得的 "formId" 只能使用一次(仅七天内有效);
    所以要选择适当的场景进行发送,或是注意对formId

第二点:
    "prepay_id" 只有进行了支付行为才能获得,并且必须支付成功(才可以使用)!
    一个 "prepay_id" 可以使用三次,

三:调用接口下发模板消息(详见 templateMessage.send

详细函数函数

/**
 * [sendTemplateMessage 发送模板消息]
 * @param  string $openid      [用户OPENID]
 * @param  string $form_id     [表单提交场景]
 * @param  array  $data        [消息内容]
 * @param  string $template_id [模板ID]
 * @return [type]              [description]
 */
function sendTemplateMessage($openid, $form_id, $data=[], $page='index', $template_id='设置默认模板ID')
{
    // $data = array('11111','222222','3333333');
    foreach ($data as $k => $v) {
        $keyword['keyword'.($k+1)] = array('value'=>$v);
    }
    // dump($keyword);die;
    $getAccessTokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=小程序appid&secret=小程序secret';
    $rs = json_decode(httpRequest($getAccessTokenUrl));
    if ($rs->access_token) {
        $postUrl = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$rs->access_token;
        $post_data = array(
            'access_token'  => $rs->access_token,
            'touser'        => $openid, // 用户openid
            'template_id'   => $template_id, // 消息模板ID
            'page'          => $page, // 小程序跳转页面
            'form_id'       => $form_id, // 表单提交场景
            'data'          => $keyword, // 模板内容
        );
        $re = httpRequest($postUrl, 'POST', json_encode($post_data));
        return $re;
    }
    return false;
}
httpRequest 为封装的CURL请求

冯奎博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论