微信小程序模板消息填坑记录

作者: 无穷369 | 来源:发表于2018-08-27 16:30 被阅读83次
    mp-notice.png

    最近项目上用到了微信小程序的模板消息功能,但是在接入的过程当中遇到了个 form_id 的坑,微信文档里并没有详细的描述这一块儿的内容,所以在这里做一下记录,希望看到这篇文章的开发者们不要踩坑。

    这个是发送模板消息的接口,一个 POST 请求

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

    需要给他传递4个必填参数,其中 form_id参数较为特殊,需要通过微信小程序端表单提交组件来获取这个 form_id 如果是支付后发送模板消息的话,那就用支付后得到的 prepay_id 就可以了。

    我这里的做法是将一个按钮改成了表单提交的方式,同时也绑定了自己的点击事件业务逻辑。这样就可以做到静默获取 form_id ,省去了一些交互步骤。

    <form bindsubmit="submitInfo" report-submit='true' >
         <button class='start_button' bindtap='start' form-type="submit">立即开始</button>
    </form>
    

    注意 report-submit要设置成 true才可以获取到form_id

    这样就可以在 js 里的 submitInfo 方法中通过 e.detail.formId 获取, 然后传递到服务端保存到数据库。

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

    注意 formId 有效期是 7 天,而且每次获取的 formId 只可以用于发送【一次】模板消息。另外,模拟器是获取不到 formId 的,模拟器获取会报错 the formId is a mock one 只有在真机中才可以获取到。而且,安卓和IOS获取到的 formId 长度有差异。安卓类似这样 1535357741912 IOS类似这样 b44a8191a2254759d51552f11bc27100

    PHP端发送模板消息最好用我下面这样的方式提交POST请求

      //$url  是请求地址
      //$data  是json字符串
      //发送模版消息
      private function httpRequest($url, $data = null)
      {
          $curl = curl_init();
          curl_setopt($curl, CURLOPT_URL, $url);
          curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
          curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    
          if (!empty ($data)) {
              curl_setopt($curl, CURLOPT_POST, 1);
              curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
          }
          curl_setopt($curl, CURLOPT_HTTPHEADER, array(
              'Content-Type: application/json; charset=utf-8',
              'Content-Length: ' . strlen($data)
          ));
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
          $output = curl_exec($curl);
          curl_close($curl);
          return $output;
      }
    

    开发过程中还遇到了某些情况取不到formId的问题,在微信开放社区提问后得到解决。帖子地址

    https://developers.weixin.qq.com/community/develop/doc/00004c7a7d05b8f98747df72b56000

    相关文章

      网友评论

        本文标题:微信小程序模板消息填坑记录

        本文链接:https://www.haomeiwen.com/subject/egoziftx.html