微信服务通知调用

1、访问微信登录地址,通过扫码登录微信小程序后台

地址信息:https://mp.weixin.qq.com/cgi-bin/loginpage

2、通过小程序后台数据拿到ID与密钥

打开左侧菜单 开发与服务--->>开发管理--->>开发者ID

如果是第一次登录小程序后台没生成过密钥是没有的,需要生成

3、通过密钥与ID访问接口获取access_token(获取接口调用凭证)

接口地址:https://api.weixin.qq.com/cgi-bin/token

4、获取openid
请求地址

返回的 JSON 数据包

4.1获取临时登录凭证
wx.login({
      success: (res) => {
        console.log('wx.login success:', res);
        let code = res.code;
        console.log('Code:', code);
        };
});

5、openid获取成功示例

6、发送订阅消息
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
1、需带上access_token(参考第三步)

2、配置openid与模板参数

touser字段中需要带上openid

template_id使用小程序后台申请的模板id

如果不出意外的话就会出现以下报错:

7、解决模板报错问题

查看微信开放社区得到的答案是用户没有订阅消息

接下来找到问题了,那就着手来解决

Page({
  data: {
    userInfo: null,
  },
  getUserInfo() {
    wx.getUserInfo({
      success: (res) => {
        this.setData({
          userInfo: res.userInfo
        });
      },
      fail: (err) => {
        console.error('getUserInfo fail:', err);
        if (err.errMsg === 'getUserInfo:fail auth deny') {
          wx.showModal({
            title: '授权提示',
            content: '您拒绝了授权,请重新授权以继续使用该功能。',
            success: (res) => {
              if (res.confirm) {
                this.getUserInfo();
              } else if (res.cancel) {
                wx.showToast({
                  title: '授权失败',
                  icon: 'none'
                });
              }
            }
          });
        }
      }
    });
  },
  getOpenid() {
    wx.login({
      success: (res) => {
        console.log('wx.login success:', res);
        let code = res.code;
        console.log('Code:', code);
        const mockResponse = {
          data: {
            openid: 'mock_openid_123456'
          }
        };
        const openid = mockResponse.data.openid;
        wx.setStorageSync('openid', openid);
        this.setData({
          openid: "获取到的openid:" + openid
        });
      },
      fail: (err) => {
        console.error('wx.login fail:', err);
      }
    });
  },
  subscribeMessage() {
    if (this.data.isSubscribed) {
      wx.showToast({
        title: '您已订阅消息',
        icon: 'success'
      });
      return;
    }

    const templateId = '配置小程序后台获取的模板id';

    wx.requestSubscribeMessage({
      tmplIds: [templateId],
      success: (res) => {
        console.log('订阅成功:', res);
        if (res[templateId] === 'accept') {
          wx.showToast({
            title: '订阅成功',
            icon: 'success'
          });
          wx.setStorageSync('isSubscribed', true);
          this.setData({
            isSubscribed: true
          });
        } else if (res[templateId] === 'reject') {
          wx.showToast({
            title: '用户拒绝订阅',
            icon: 'none'
          });
        } else if (res[templateId] === 'ban') {
          wx.showToast({
            title: '因禁用订阅功能无法完成订阅',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('订阅失败:', err);
        wx.showToast({
          title: '订阅失败',
          icon: 'none'
        });
      }
    });
  }
})

以上代码的作用就是先获取用户信息,然后获到wx.login里面的code后再去订阅消息

这时候再去发请求就没有问题了,因为是一次性模板,必须每次都要手动去订阅才行

微信端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值