apicloud apicloud

注册
查看: 846|回复: 7

wxSubscribe(微信一次性订阅)demo分享

主题:
20
帖子:
103
云币:
123

wxSubscribe(微信一次性订阅)demo分享

846 7 | 发表于 2019-8-24 11:45:32 |阅读模式 | |
本帖最后由 神器的小土匪 于 2019-9-1 21:18 编辑

封装了微信一次性订阅sdk,为了不跟wx模块冲突本模块没有单独添加微信sdk,和wx模块使用相同的sdk,so本模块需要配合wx模块使用。监听不到用户是否点了授权还是取消,需要监听resume事件,然后调用服务端发送服务通知,看成功与否便知道用户是否点了授权还是取消。
开发者可以通过一次性订阅消息授权让微信用户授权第三方移动应用或公众号(接入说明),获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号。微信用户每授权一次,开发者可获得一次下发消息的权限,消息将下发至服务通知。

使用之前须从微信开放平台申请开发者账号并创建应用,获取 appid 和 secret。
  1. openId='';
  2.         appId='wxddxxxxx'
  3.         templateId="oGWCD1LiUgqBjsxxxxx"
  4.         scene=1000,
  5.         reserved="helloworld"
  6.         access_token='';
  7.         apiready = function(){
  8.                 api.addEventListener({
  9.                     name:'resume'
  10.                 }, function(ret, err){     
  11.                    setTimeout(function(){if(access_token)postsubscribe();},500);
  12.                 });

  13.                 var wx = api.require('wx');
  14.                 wx.auth({
  15.                     apiKey: 'apikeyxx'
  16.                 }, function(ret, err) {
  17.                     if (ret.status) {
  18.                         wx.getToken({
  19.                                     code: ret.code
  20.                                 }, function(ret, err) {
  21.                                     if (ret.status) {
  22.                                         console.log('getopenid='+JSON.stringify(ret));
  23.                                         openId=ret.openId
  24.                                         toSubscribe();
  25.                                     }
  26.                                 });
  27.                     }
  28.                 });
  29.         }
  30.         
  31.         function toSubscribe(){
  32.                    wxSubscribe = api.require('wxSubscribe');
  33.                 var data={
  34.                         appId:appId,
  35.                         templateId:templateId,
  36.                         scene:scene,
  37.                         reserved:scene,
  38.                 }
  39.                    acc5WX.subscribe(data, function(ret, err){
  40.                 console.log(JSON.stringify(ret));
  41.                 getWXToken(ret);//其实这是后端代码调用的事情了,我只是为了测试方便写在了前端,项目发布时需要把这个功能放在后端写,这也是安全问题
  42.         });
  43.         }
  44.    
  45.         function  getWXToken(ret){
  46.                    api.ajax({
  47.                     url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='+appId+'&secret=xxxxsecretxxxxx',
  48.                     method: 'get',
  49.                     headers: {
  50.                         'Content-Type': 'application/json;charset=utf-8'
  51.                     }
  52.                 }, function(ret2, err) {
  53.                     if (ret) {
  54.                         console.log(JSON.stringify(ret2));
  55.                         access_token=ret2.access_token
  56.                         wxsubmit(ret2.access_token,ret.openid,ret.template_id,ret.scene)
  57.                     }
  58.                 });
  59.         }
  60.         function wxsubmit(){
  61.            api.ajax({
  62.                     url: 'https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token='+access_token,
  63.                     method: 'post',
  64.                     data: {
  65.                         body: {
  66.                               touser: openId,//填接收消息的用户openid
  67.                                           template_id: templateId,
  68.                                           scene: scene,
  69.                                           url:'http://www.xxx.com',//点击消息跳转的链接,需要有ICP备案
  70.                                           title: "xxx欢迎订阅xxx",
  71.                                           data: {
  72.                                             content: {
  73.                                               value: "你要对用户说的话",
  74.                                               color: "#00ff00"//可以是'red'也可以是'#fff000'
  75.                                             }
  76.                                           }
  77.                         }
  78.                     }
  79.                 }, function(ret, err) {
  80.                     if (ret) {
  81.                         console.log('postsubscribe='+JSON.stringify(ret));
  82.                     }
  83.                 });
复制代码



本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

官方版主

UID:791051

主题:
20
帖子:
21667
云币:
6504
发表于 2019-8-25 05:22:15 |
感谢分享,

版主

UID:83211

主题:
153
帖子:
7930
云币:
60774

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

发表于 2019-8-25 09:16:26 来自手机 |
支持

版主

UID:436609

主题:
37
帖子:
1779
云币:
7437

足球狗

发表于 2019-8-25 12:22:26 |
顶一下

主题:
20
帖子:
122
云币:
142
发表于 2019-8-26 01:02:13 |
模块没搜到

主题:
20
帖子:
103
云币:
123
 楼主| 发表于 2019-8-26 16:17:30 来自手机 |
官方还没审核

主题:
20
帖子:
103
云币:
123
 楼主| 发表于 2019-8-26 16:40:43 来自手机 |
等待审核中

主题:
20
帖子:
103
云币:
123
 楼主| 发表于 2019-8-28 09:22:16 |

麻烦帮忙审核一下呗,谢谢了
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表