微信小程序消息订阅的实现——后端是nodejs的koa框架

在做毕设中,我遇到这么一个使用场景:当顾客购买某个商家的商品后,那这个商家应该要收到通知信息,提示你家商品被购买了,故有了以下代码

// 微信小程序js代码
onSubmit: function() { // 用户点击确认支付
	// 用户应该点击允许,同意提醒信息订阅
    wx.requestSubscribeMessage({
    // 模板id:可以在微信公众平台 -> 功能 -> 订阅信息进行选择
      tmplIds: ['R9HL-i-3vFAzUMxmvcjfGWS8m_mvojr1rlhWZrmlsO0'],
      success: res => {
        console.log(res)
      },
      fail: e => {
        console.log(e)
      }
    })
    wx.request({
      url: url, // 调用后端接口
      method: 'GET',
      success: res => {
      	// 购买成功后调用tipSeller方法
      	this.tipSeller()
      }
    })
  },
tipSeller: function() {
    wx.request({
      url: url + 'home/tip', // 后端接口
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: {
        saledTime: util.formatTime(new Date()), // 商品被购买时间
        goods_name: this.data.goods_name, // 商品名称
        touser: this.data.seller_id // 商家的id,这个id表示要提醒的人,这里主要是为了提醒商家,他家商品被购买了
      },
      success: res => {
        console.log(res)
      },
      fail: e => {
        console.log(e)
      }
    })
  },
// 下面是后端node的代码
home.post('/tip', async (ctx, next) => {
    let formData = ctx.request.body
    const APP_ID = "appid" // 小程序的appid和密钥需要去微信公众平台找
    const APP_SECRET = "app_secret"
    const APP_URL = 'https://api.weixin.qq.com/cgi-bin/token'
    const getTokenUrl = `${APP_URL}?appid=${APP_ID}&secret=${APP_SECRET}&grant_type=client_credential`
    // 获取用户的access_token
    let user_access_token = await new Promise((resolve, reject) => {
        return request(getTokenUrl, (error, response, body) => {
            resolve(JSON.parse(body))
        })
    })
    let sendUrl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + user_access_token.access_token
    let tmpData = {
        "access_token": user_access_token.access_token,
        "touser": formData.touser,
        "template_id": "xxxx", // 信息模板id
        "page": "pages/xxx/xxx", // 指定点击提醒信息跳转到小程序的页面
        "miniprogram_state":"developer",
        "lang":"zh_CN",
        "data": {
            "thing1": {
                "value": "您的商品已被购买"
            },
            "thing3": {
                "value": formData.goods_name
            },
            "time14": {
                "value": formData.saledTime
            },
        },
    }
    // 发送信息模板
    let sendRes = await new Promise((resolve, reject) => {
        return request({
            url: sendUrl,
            method: "POST",
            json: true,
            headers: {
                "content-type": "application/json",
            },
            body: tmpData
        }, (error, response, body) => {
            resolve(body)
        })
    })
    ctx.body = {
        msg: sendRes
    }
})

微信小程序消息订阅的实现——后端是nodejs的koa框架_第1张图片

你可能感兴趣的:(学习笔记,小程序,js,nodejs,前端)