第一步 创建模板


其中keyword与小程序一一对应

第二步 提交订单时带上formId

var formId = e.detail.formId;
order.set('formId', formId);
order.save()

相应的页面文件

<form report-submit="true" bindsubmit="confirmOrder">
  <button class="submit" form-type="submit"  type="primary">提交订单</button>
</form>

后端对接下发消息

// 模板消息
router.post('/deliver', function(req, res, next) {
  // 接收orderId参数
  var orderId = req.body.orderId;
  // 通过orderId查询该订单信息
  var query = new DB.Query('Order');
  query.include('user');
  query.include('address');
  query.get(orderId).then(order => {
    order.set('status', 2);
    order.save().then(o => {
      console.log(o)
    }, err => {
      console.log(err)
    });
    // 引入request库,用于网络请求交互
    const request = require('request');
    var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + process.env.WEIXIN_APPID + "&secret=" + process.env.WEIXIN_PAY_SECRET;
    // 第一步,请求access_token
    request(url, function(err, response, body) {
      // 微信返回结果
      var body = JSON.parse(body);
      // 取出access_token,用于向微信请求下发模板消息的凭证
      var access_token = body.access_token;
      // 用户openId
      var openid = order.get('user').get('authData').lc_weapp.openid;
      // 模板ID,由小程序后台生成后复制所得
      var template_id = 'ywrubQbvKuw--itAeNHvEPBRqA53yJy2kAXNsAJ5fiw';
      var form_id = order.get('formId');
      // 第二步,请求发送模板消息
      request({
        url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + access_token,
        method: "POST",
        json: true,
        body: {
          touser: openid,
          template_id: template_id,
          form_id: form_id,
          data: {
            "keyword1": {
              "value": '快递公司',
              "color": "#173177"
            },
            "keyword2": {
              "value": '快递单号',
              "color": "#173177"
            },
            "keyword3": {
              "value": order.get('address').get('detail'),
              "color": "#173177"
            }
          }
        }
      }, function(err, response, body) {
        res.send(body);
        console.log(body);
      });
    });
  });
});

第一步,通过orderId查询该订单信息

Order表自身存有user信息(即openId),formId,所以需要把Order取出

第二步,请求access_token

access_token就是与微信交互的凭证,有效期2小时,由于一天有请求次数的限制,可以存在数据库里以复用,在2小时期间可多数使用。

第三步,请求发送模板消息

参数一共必填 的是4个,touser,template_id,form_id,data。分别对应小程序用户的openid,创建的模板ID,form表单id,以及模板正文内容。


本文转载:CSDN博客