cool node.js 实现微信公众号模板消息推送功能

1.需求

微信公众号的模板推送功能 当我执行了什么操作以后 需要通知用户 获取

类似这样 这个主要是后端的逻辑

2.实现

①.需要的参数以及配置项

appid secert 主要获取access_token

access_token 是一个令牌


  //获取access_token
  async getAccessTokenByAppId(appId, appSecret) {
    const options = {
      url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`,

      method: 'GET',
    };

    return new Promise((resolve, reject) => {
      request(options, (error, response, body) => {
        if (error) {
          reject(error);
        } else {
          console.log(body);

          resolve(body); // 这里返回的是 JSON 格式的数据,可以直接解析为对象或数组
        }
      });
    });
  }
 //微信推送消息模板
  async pushData(orderRes, studentInfo, status) {
    let seats = '';
    orderRes.seatData.forEach(item => {
      seats += item.seatName + ',';
    });
    // console.log(JSON.parse(orderRes.seatData), orderRes.seatData);
    console.log(orderRes.seatData, 'orderRes.seatData');

    const timestamp = orderRes.showTime; //播放时间
    const formattedShowTime = moment(timestamp).format('YYYY-MM-DD HH:mm:ss');
    const errorFormatShowTime =
      moment(timestamp).format('YYYY年M月D日 HH:mm');
    const Config = await this.businessBaseConfigEntity.findOneBy({
      userId: orderRes.userId,
    });
    if (!Config.wechatAppId || !Config.wechatAppSecret) {
      throw new CoolCommException('导师未配置公众号信息');
    }
    const TokenRes: any = await this.getAccessTokenByAppId(
      Config.wechatAppId,
      Config.wechatAppSecret
    );
    const access_token = JSON.parse(TokenRes).access_token;
    let data1 = {
      thing7: {
        value: orderRes.cinemaName,
      },
      thing1: {
        value: orderRes.movieName,
      },
      thing6: {
        value: orderRes.hallName,
      },
      time3: {
        value: formattedShowTime,
      },
      thing2: {
        value: orderRes.seatData,
      },
    };
    let data2 = {
      thing1: {
        value: orderRes.cinemaName,
      },
      thing2: {
        value: orderRes.movieName,
      },
      thing3: {
        value: orderRes.hallName,
      },
      time4: {
        value: errorFormatShowTime,
      },
      amount6: {
        value: orderRes.originalPrice,
      },
    };

    const requestData = {
      //发送模板消息的数据
      touser: studentInfo.wechatOpenid,
      template_id:
        status == 1
          ? Config.wechatSuccessTemplateId
          : Config.wechatErrorTemplateId,
      // url: 'http://weixin.qq.com/download',
      data: status == 1 ? data1 : data2,
    };
    const options = {
      url: `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`,
      method: 'POST',
      body: requestData,
      json: true,
    };
    return new Promise((resolve, reject) => {
      request(options, (error, response, body) => {
        if (error) {
          reject(error);
        } else {
          console.log(body, '微信推送消息模板');

          resolve(body); // 这里返回的是 JSON 格式的数据,可以直接解析为对象或数组
        }
      });
    });
  }

当然这个模板 首先是要从微信公众号中申请的 并且 必须是服务号的公众号 才可以

逻辑 以及内容就需要通过自己的业务逻辑来说了

3.总结

这个功能好玩 并且 简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值