当前位置: 首页 > news >正文

ThinkPhP5整合微信小程序订阅消息实用代码

前端DEMO

wxml

1

2

3

<viewclas="index"style="background: white">

<buttonbindtap="clickss">触发一下</button>

</view>

wxjs

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

clickss:function(){

const templateId ='RZM7nZoN5P2sA1m6aeiPMmZ-90U1_8PFmjrv_Nf5bhk';// 订阅消息模版id

wx.requestSubscribeMessage({

tmplIds: [templateId],

success(res) {

if(res[templateId] =='accept') {

//用户同意了订阅,允许订阅消息

wx.showToast({

title:'订阅成功'

})

}else{

//用户拒绝了订阅,禁用订阅消息

wx.showToast({

title:'订阅失败'

})

}

},

fail(res) {

console.log('ooooooooooooooo', res)

},

complete(res) {

console.log(res)

}

})

},

后端推送代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

namespaceapp\api\controller;

useapp\common\controller\Api;

usefast\Http;

usethink\Cache;

classSubtoMsgextendsApi

{

protected$noNeedLogin= ['*'];

protected$noNeedRight= ['*'];

/**

* @return mixed

* 获取access_token

* 时效3600秒

*/

publicfunctiongetaccess_tonken()

{

if(Cache::has('token')) {

returnCache::get('token');

}else{

$appid='';

$appsecret='';

$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

//api接口

$content= Http::get($url);

if($content) {

$content= json_decode($content, true);

}

if(!empty($content['access_token'])) {

session('access_token',$content['access_token']);

Cache::set('token',$content['access_token'], 3600);

return$content['access_token'];

}

}

}

/**

* @param $openid 目标用户openid

* @param $send 发送数据串

*/

publicfunctionsend($send)

{

/* $send格式demo

$openid = 'o9vhc5BxMc1pTNCzD1IWVuy4JUP0';//目标用户的openid

$templateId = 'laOhzjVJ5J9Tz97JOM4FNlMud2bkwV-g5DPuTYsWUyA';

$data = array(

'phrase1' => array('value' => '刘洋'),

'time2' => array('value' => date('Y-m-d H:i:s', time())),

'thing3' => array('value' => "老王很棒的哟", 'color' => '#333333'),

);

$send = array(

"touser" => $openid,

"template_id" => $templateId,

"data" => $data,

);*/

$access_token= self::getaccess_tonken();

$url="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".$access_token;

$ret= Http::post($url, urldecode(json_encode($send)));

$this->success('', json_decode($ret));

/*

* 发送成功

* {

"code": 1,

"msg": "",

"time": "1619316449",

"data": {

"errcode": 0,

"errmsg": "ok",

"msgid": 1840866241775747074

}

}*/

/*

* 失败的情况

* {

"code": 1,

"msg": "",

"time": "1619316019",

"data": {

"errcode": 43101,

"errmsg": "user refuse to accept the msg rid: 6084cd33-3bd5fcdb-4ed3439f"

}

}*/

}

//用于测试

publicfunctionsend_text()

{

$openid='o9vhc5BxMc1pTNCzD1IWVuy4JUP0';//目标用户的openid

// $templateId="";//订阅消息的模板id

$templateId='laOhzjVJ5J9Tz97JOM4FNlMud2bkwV-g5DPuTYsWUyA';

// $templateId = get_addon_config('dymsg')['noticetemplateid'];

$data=array(

'phrase1'=>array('value'=>'刘洋'),

'time2'=>array('value'=>date('Y-m-d H:i:s', time())),

'thing3'=>array('value'=>"老刘很棒的哟",'color'=>'#333333'),

);

$access_token= self::getaccess_tonken();

$url="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".$access_token;

$send=array(

"touser"=>$openid,

"template_id"=>$templateId,

"data"=>$data,

);

$ret= Http::post($url, urldecode(json_encode($send)));

$this->success('', json_decode($ret));

/*

* 发送成功

* {

"code": 1,

"msg": "",

"time": "1619316449",

"data": {

"errcode": 0,

"errmsg": "ok",

"msgid": 1840866241775747074

}

}*/

/*

* 失败的情况

* {

"code": 1,

"msg": "",

"time": "1619316019",

"data": {

"errcode": 43101,

"errmsg": "user refuse to accept the msg rid: 6084cd33-3bd5fcdb-4ed3439f"

}

}*/

}

}

到此这篇关于ThinkPhP5整合微信小程序订阅消息实用代码的文章就介绍到这了

http://www.jsqmd.com/news/688302/

相关文章:

  • 长沙黄金回收 TOP6 推荐 - 福正美黄金回收
  • Hyperf对接对账
  • 如何永久保存你的微信聊天记录?WeChatMsg开源工具终极指南
  • 不吹不黑,这款AI驱动的开源Wiki,解决了我们团队90%的文档痛点
  • 别再被PyTorch的F.cosine_similarity搞晕了!一个dim参数详解,附两两相似度计算实战
  • 终极指南:ViPER4Windows修复工具在Windows 10/11的完美解决方案
  • 【FDA认证级容器性能白皮书】:基于27.0.3+Linux 6.8内核的DICOM微服务吞吐量压测极限突破报告
  • 永磁同步电机滑模控制技术解析与应用实践
  • 如何免费在线制作专业PPT:PPTist开源工具完全指南
  • 别再用卖家例程了!手把手教你从零配置STM32F103驱动ST7789V2 TFT屏(附DMA加速技巧)
  • 2026年第一季度高端耳机精选:兼顾音质与体验,这5款值得留意 - 见闻解构
  • Java的java.util.HexFormat格式兼容性与旧版代码迁移在系统演进中
  • 北京九鼎众合餐饮管理:专业的北京盒饭配送选哪家 - LYL仔仔
  • 终极指南:如何用Jellyfin Kodi插件打造无缝家庭媒体中心
  • GetQzonehistory完整教程:3步永久备份你的QQ空间青春记忆
  • uniapp结合ucharts:实现Y轴刻度与标签的深度自定义实践
  • Hyperf对接风控
  • Vivado工程从‘红叉’到‘绿勾’:一次搞定XADC与DDR3核冲突的实战记录
  • 从‘恶作剧’到‘供应链攻击’:手把手教你用Node.js沙盒和ESLint插件检测Evil.js这类依赖包
  • 终极指南:3步让你的Windows电脑免费接收iPhone AirPlay 2投屏
  • 抖音无水印下载终极指南:3步搞定高清视频批量下载
  • ESXi 8.0 网络丢包排查实战全攻略
  • 给LoongArch CPU新手:手把手教你读懂20条指令的Verilog数据通路(附关键信号解析)
  • NEAT算法实战:训练AI玩《刺猬索尼克》
  • Windows驱动开发避坑:手把手教你用WFP实现网站访问限制(附完整代码)
  • Hyperf对接SCADA
  • 2022年MLOps赞助商技术突破与行业贡献解析
  • 如何高效解决跨平台音频格式兼容问题:专业qmc-decoder解密方案
  • 小目标检测效果差?试试Deformable DETR的多尺度注意力机制(原理+代码解读)
  • Zotero引用格式(Xie et al 2021)如何变成可点击的超链接?我的Word宏配置踩坑实录