RoutineTemplateService.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace service;
  12. use app\wap\model\routine\RoutineServer;
  13. use think\Db;
  14. use basic\AuthBasic;
  15. /**
  16. * 公众号订阅消息
  17. * Class RoutineTemplate
  18. * @package app\routine\model\routine
  19. */
  20. class RoutineTemplateService extends AuthBasic
  21. {
  22. //订单支付成功
  23. const ORDER_PAY_SUCCESS = '6271';
  24. //订单发货提醒(快递)
  25. const ORDER_POSTAGE_SUCCESS = '3637';
  26. //直播开播提醒
  27. const LIVE_BROADCAST = '16172';
  28. //拼单进度提醒
  29. const PINK_ORDER_REMIND = '5275';
  30. //拼团成功通知
  31. const ORDER_USER_GROUPS_SUCCESS = '3098';
  32. //拼团失败通知
  33. const ORDER_USER_GROUPS_LOSE = '4534';
  34. //开团成功通知
  35. const ORDER_USER_PINGT_SUCCESS = '4533';
  36. //账户资金变动提醒
  37. const USER_BALANCE_CHANGE = '4148';
  38. //退款进度通知
  39. const ORDER_REFUND_STATUS = '1451';
  40. //收货提醒通知
  41. const ORDER_TAKE_SUCCESS = '3510';
  42. //活动报名成功通知
  43. const ORDER_USER_SIGN_UP_SUCCESS = '13684';
  44. //审核结果通知
  45. const EXAMINE_RESULT = '5545';
  46. //检查模版
  47. const TEMPLATE_CHECK = 1;
  48. /**
  49. * 根据模板编号获取模板ID
  50. * @param string $tempKey
  51. * @return mixed|string
  52. */
  53. public static function setTemplateId($tempKey = '')
  54. {
  55. if ($tempKey == '') return '';
  56. return Db::name('RoutineTemplate')->where('tempkey', $tempKey)->where('status', 1)->value('tempid');
  57. }
  58. /**
  59. * 从公共模板库中选用模板,到私有模板库中
  60. */
  61. public static function addTemplate($tid, $kidList = [], $sceneDesc = '')
  62. {
  63. $accessToken = RoutineServer::get_access_token();
  64. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token=" . $accessToken;
  65. $data['access_token'] = $accessToken;
  66. $data['tid'] = $tid;
  67. $data['kidList'] = $kidList;
  68. $data['sceneDesc'] = $sceneDesc;
  69. if (self::TEMPLATE_CHECK != 1) return false;
  70. return json_decode(parent::curlPost($url, json_encode($data)), true);
  71. }
  72. /**
  73. * 获取公众号所属类目,可用于查询类目下的公共模板
  74. */
  75. public static function getCategory()
  76. {
  77. $accessToken = RoutineServer::get_access_token();
  78. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token=" . $accessToken;
  79. if (self::TEMPLATE_CHECK != 1) return false;
  80. return json_decode(parent::curlGet($url), true);
  81. }
  82. /**
  83. * 获取公共模板下的关键词列表
  84. */
  85. public static function getPubTemplateKeyWordsById($tid)
  86. {
  87. $accessToken = RoutineServer::get_access_token();
  88. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords?access_token=" . $accessToken;
  89. $data['access_token'] = $accessToken;
  90. $data['tid'] = $tid;
  91. if (self::TEMPLATE_CHECK != 1) return false;
  92. return json_decode(parent::curlGet($url, json_encode($data)), true);
  93. }
  94. /**
  95. * 获取类目下的公共模板,可从中选用模板使用
  96. */
  97. public static function getPubTemplateTitleList($ids, $start = 0, $limit = 10)
  98. {
  99. $accessToken = RoutineServer::get_access_token();
  100. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatetitles?access_token=" . $accessToken;
  101. $data['access_token'] = $accessToken;
  102. $data['ids'] = $ids;
  103. $data['start'] = $start;
  104. $data['limit'] = $limit;
  105. if (self::TEMPLATE_CHECK != 1) return false;
  106. return json_decode(parent::curlGet($url, json_encode($data)), true);
  107. }
  108. /**
  109. * 获取私有的模板列表
  110. * @param int $offset
  111. * @param int $count
  112. * @return mixed
  113. */
  114. public static function getTemplateList()
  115. {
  116. $accessToken = RoutineServer::get_access_token();
  117. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token=" . $accessToken;
  118. if (self::TEMPLATE_CHECK != 1) return false;
  119. return json_decode(parent::curlGet($url), true);
  120. }
  121. /**
  122. * 删除公众号中的某个订阅消息
  123. * @param string $templateId
  124. * @return bool|mixed
  125. */
  126. public static function delTemplate($priTmplId = '')
  127. {
  128. if ($priTmplId == '') return false;
  129. $accessToken = RoutineServer::get_access_token();
  130. $url = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate?access_token=" . $accessToken;
  131. $data['access_token'] = $accessToken;
  132. $data['priTmplId'] = $priTmplId;
  133. if (self::TEMPLATE_CHECK != 1) return false;
  134. return json_decode(AuthBasic::curlPost($url, json_encode($data)), true);
  135. }
  136. /**
  137. * 发送订阅消息
  138. * @param string $openId 接收者(用户)的 openid
  139. * @param string $templateId 所需下发的模板消息的id
  140. * @param string $link 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
  141. * @param array $dataKey 模板内容,不填则下发空模板
  142. * @return bool|mixed
  143. */
  144. public static function sendTemplate($openId = '', $templateId = '', $link = '', $dataKey = array())
  145. {
  146. if ($openId == '' || $templateId == '') return false;
  147. $accessToken = RoutineServer::get_access_token();
  148. $url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token=" . $accessToken;
  149. $data['touser'] = $openId;//接收者(用户)的 openid
  150. $data['template_id'] = $templateId; //所需下发的模板消息的id
  151. $data['page'] = $link; //点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
  152. $data['data'] = $dataKey; //模板内容,不填则下发空模板
  153. if (self::TEMPLATE_CHECK != 1) return false;
  154. return json_decode(parent::curlPost($url, json_encode($data)), true);
  155. }
  156. }