wxSubscribe

立即使用

subscribe

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

wxSubscribe 封装了微信一次性订阅sdk,为了不跟wx模块冲突本模块没有单独添加微信sdk,和wx模块使用相同的sdk,so本模块需要配合wx模块使用。监听不到用户是否点了授权还是取消,需要监听resume事件 然后调用服务端发送服务通知,看成功与否便知道用户是否点了授权还是取消。

微信一次性订阅文档地址:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500434436_aWfqW

subscribe

微信一次性订阅授权

subscribe({appId:’appidxx’,templateId:”templateidxx”,scene:999,reserved:”helloworld”,},function(ret,err))

params

appId

  • 类型:字符串
  • 描述:应用唯一标识,在微信开放平台提交应用审核通过后获得。

templateId

  • 类型:字符串
  • 描述:订阅消息模板ID,在微信开放平台提交应用审核通过后获得。

scene

  • 类型:数值型(0-1)
  • 描述:重定向后会带上scene参数,开发者可以填0-10000 的整形值,用来标识订阅场值。

reserved

  • 类型:字符串
  • 描述:用于保持请求和回调的状态,授权请后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验,开发者可以填写a-zA-Z0-9的参数值,最多128字节,要求做urlencode。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: 0 //数字类型;
  3. //错误码:
  4. //-1(未知错误),
  5. //0(成功)
  6. }

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本