sms.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. /**
  3. * 手机短信类
  4. *
  5. *
  6. *
  7. * @package library* www.33hao.com好商城V3为你提供售后服务 以便你更好的了解
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. class Sms
  11. {
  12. const register_code = 1; //todo 只有h5_hb.php文件,调用了此
  13. const tpl_reg_user_bonus = '756830'; //亲爱的用户,您已获得{1}元新人首单红包,请登陆APP查收!退订回复N
  14. const tpl_reg_inviter = '219559'; //亲爱的会员,{1}成为您的{2}度粉丝,您获得{3}元全抵红包。退订回复N
  15. const tpl_reg_invitee = '219558'; //亲爱的会员,您的好友{1}成为{2}的{3}度粉丝,您获得{4}元雨露均沾红包。退订回复N
  16. const tpl_order_complete_all = '219557'; //亲爱的会员,{1}下单成功,引发红包风暴,{2}元全抵红包砸中了你。快去查看红包余额!退订回复N
  17. const tpl_order_complete_inviter = '219560';//亲爱的会员,您的{1}度粉丝{2}下单成功,您获得{3}元全抵红包。登陆APP可查看红包余额!退订回复N
  18. const tpl_order_complete_invitee = '219553';//亲爱的会员,您的好友{1}成为{2}的{3}度粉丝,您获得{4}元雨露均沾红包。退订回复N
  19. const tpl_call_user_back = '219183'; //Hey,我是{1},我正在赚红包,你也有得赚,赶快登陆App查看你的红包余额,赢免费大牌美妆~退订回复N
  20. const tpl_new_goods = '221574'; //【模板ID:221574【熊猫美妆】{1}福利大放送,{2}元红包已到账!{3}上新,传送门:{4},退订回复N
  21. /*
  22. * 发送手机短信
  23. * @param unknown $mobile 手机号
  24. * @param unknown $content 短信内容
  25. */
  26. public function send($mobile, $content)
  27. {
  28. return $this->mysend_yuntx($mobile, $content);
  29. // $mobile_host_type = C('mobile_host_type');
  30. // if ($mobile_host_type == 1) {
  31. // return $this->mysend_smsbao($mobile, $content);
  32. // } elseif ($mobile_host_type == 2) {
  33. // return $this->mysend_yunpian($mobile, $content);
  34. // } elseif ($mobile_host_type == 3) {
  35. // return $this->mysend_yuntx($mobile, $content);
  36. // } elseif ($mobile_host_type == 4) {
  37. // return $this->send_yunpian($mobile, $content);
  38. // }
  39. }
  40. private function send_msg($mobile, $datas, $type)
  41. {
  42. Log::record("SMS send:{$mobile} " . json_encode($datas) . " {$type}", Log::DEBUG);
  43. $folder = 'yuntx';
  44. $plugin = str_replace('\\', '', str_replace('/', '', str_replace('.', '', $folder)));
  45. if (!empty($plugin)) {
  46. define('PLUGIN_ROOT', BASE_DATA_PATH . DS . 'api/smsapi');
  47. require_once(PLUGIN_ROOT . DS . $plugin . DS . 'CCPRestSDK.php');
  48. require_once(PLUGIN_ROOT . DS . $plugin . DS . 'SendSMS.php');
  49. $datas_param = [];
  50. foreach($datas as $key=>$val)
  51. {
  52. $datas_param[] = $val;
  53. }
  54. return sendSMS($mobile, $datas_param, $type);
  55. } else {
  56. return -1;
  57. }
  58. }
  59. /*
  60. * yuntx 云通信
  61. 您于{$send_time}绑定手机号,验证码是:{$verify_code}。【{$site_name}】
  62. 0 提交成功
  63. 30:密码错误
  64. 40:账号不存在
  65. 41:余额不足
  66. 42:帐号过期
  67. 43:IP地址限制
  68. 50:内容含有敏感词
  69. 51:手机号码不正确
  70. http://api.smsbao.com/sms?u=USERNAME&p=PASSWORD&m=PHONE&c=CONTENT
  71. */
  72. private function mysend_yuntx($mobile, $content)
  73. {
  74. $type = $this->getYuntxTpl($content['type']);
  75. if(empty($type)) {
  76. return -1;
  77. }
  78. Log::record("type : {$type}",Log::DEBUG);
  79. return $this->send_msg($mobile, $content['datas'], $type);
  80. }
  81. private function getYuntxTpl($type)
  82. {
  83. static $sms_tpls = [
  84. 'register' => '756830',
  85. 'resetpass' => '63477',
  86. 'evidence' => '879537',
  87. 'balance_warning' => '879588'
  88. // self::getbonus_code => '63479',
  89. // self::getbind_code => '59006',
  90. // self::newcomer_code => '92893',
  91. // self::newcomer_bonus_code => '146196',
  92. // self::order_sended => '355420', //【熊猫美妆】尊敬的会员,您的订单已发货,{1}运单号为{2},详细订单信息请登陆APP查看。
  93. // self::order_received => '355421', //【熊猫美妆】您已确认收货,订单奖励红包已到账。评价商品还能领更多红包噢~
  94. // self::getfcode_code => '166281',
  95. // self::after_comment => '355423', //【熊猫美妆】感谢您对商品的评价,{1}元红包已到账!您的意见对我们至关重要~
  96. ];
  97. if($type == sms_helper::register) {
  98. return $sms_tpls['register'];
  99. }elseif ($type == sms_helper::evidence){
  100. return $sms_tpls['evidence'];
  101. }elseif ($type == sms_helper::balance_warning){
  102. return $sms_tpls['balance_warning'];
  103. }
  104. else {
  105. return false;
  106. }
  107. }
  108. public function send_oper($mobile,$type,$params = null)
  109. {
  110. if($params == null) {
  111. return $this->send_msg($mobile, array('time'=>'5'), $type);
  112. } else {
  113. return $this->send_msg($mobile, $params, $type);
  114. }
  115. }
  116. /*
  117. 您于{$send_time}绑定手机号,验证码是:{$verify_code}。【{$site_name}】
  118. 0 提交成功
  119. 30:密码错误
  120. 40:账号不存在
  121. 41:余额不足
  122. 42:帐号过期
  123. 43:IP地址限制
  124. 50:内容含有敏感词
  125. 51:手机号码不正确
  126. http://api.smsbao.com/sms?u=USERNAME&p=PASSWORD&m=PHONE&c=CONTENT
  127. */
  128. // private function mysend_smsbao($mobile, $content)
  129. // {
  130. // $user_id = urlencode(C('mobile_username')); // 这里填写用户名
  131. // $pass = urlencode(C('mobile_pwd')); // 这里填登陆密码
  132. // if (!$mobile || !$content || !$user_id || !$pass) return false;
  133. // if (is_array($mobile)) $mobile = implode(",", $mobile);
  134. // $mobile = urlencode($mobile);
  135. // //$content=$content."【我的网站】";
  136. // $content = urlencode($content);
  137. // $pass = md5($pass);//MD5加密
  138. // $url = "http://api.smsbao.com/sms?u=" . $user_id . "&p=" . $pass . "&m=" . $mobile . "&c=" . $content . "";
  139. // $res = file_get_contents($url);
  140. // //return $res;
  141. // $ok = $res == "0";
  142. // if ($ok) {
  143. // return true;
  144. // }
  145. // return false;
  146. //
  147. // }
  148. /**
  149. * http://www.yunpian.com/
  150. * 发送手机短信
  151. * @param unknown $mobile 手机号
  152. * @param unknown $content 短信内容
  153. * 0 OK 调用成功,该值为null 无需处理
  154. * 1 请求参数缺失 补充必须传入的参数 开发者
  155. * 2 请求参数格式错误 按提示修改参数值的格式 开发者
  156. * 3 账户余额不足 账户需要充值,请充值后重试 开发者
  157. * 4 关键词屏蔽 关键词屏蔽,修改关键词后重试 开发者
  158. * 5 未找到对应id的模板 模板id不存在或者已经删除 开发者
  159. * 6 添加模板失败 模板有一定的规范,按失败提示修改 开发者
  160. * 7 模板不可用 审核状态的模板和审核未通过的模板不可用 开发者
  161. * 8 同一手机号30秒内重复提交相同的内容 请检查是否同一手机号在30秒内重复提交相同的内容 开发者
  162. * 9 同一手机号5分钟内重复提交相同的内容超过3次 为避免重复发送骚扰用户,同一手机号5分钟内相同内容最多允许发3次 开发者
  163. * 10 手机号黑名单过滤 手机号在黑名单列表中(你可以把不想发送的手机号添加到黑名单列表) 开发者
  164. * 11 接口不支持GET方式调用 接口不支持GET方式调用,请按提示或者文档说明的方法调用,一般为POST 开发者
  165. * 12 接口不支持POST方式调用 接口不支持POST方式调用,请按提示或者文档说明的方法调用,一般为GET 开发者
  166. * 13 营销短信暂停发送 由于运营商管制,营销短信暂时不能发送 开发者
  167. * 14 解码失败 请确认内容编码是否设置正确 开发者
  168. * 15 签名不匹配 短信签名与预设的固定签名不匹配 开发者
  169. * 16 签名格式不正确 短信内容不能包含多个签名【 】符号 开发者
  170. * 17 24小时内同一手机号发送次数超过限制 请检查程序是否有异常或者系统是否被恶意攻击 开发者
  171. * -1 非法的apikey apikey不正确或没有授权 开发者
  172. * -2 API没有权限 用户没有对应的API权限 开发者
  173. * -3 IP没有权限 访问IP不在白名单之内,可在后台"账户设置->IP白名单设置"里添加该IP 开发者
  174. * -4 访问次数超限 调整访问频率或者申请更高的调用量 开发者
  175. * -5 访问频率超限 短期内访问过于频繁,请降低访问频率 开发者
  176. * -50 未知异常 系统出现未知的异常情况 技术支持
  177. * -51 系统繁忙 系统繁忙,请稍后重试 技术支持
  178. * -52 充值失败 充值时系统出错 技术支持
  179. * -53 提交短信失败 提交短信时系统出错 技术支持
  180. * -54 记录已存在 常见于插入键值已存在的记录 技术支持
  181. * -55 记录不存在 没有找到预期中的数据 技术支持
  182. * -57 用户开通过固定签名功能,但签名未设置 联系客服或技术支持设置固定签名 技术支持
  183. * @return bool|string
  184. */
  185. // private function mysend_yunpian($mobile, $content)
  186. // {
  187. // $yunpian = 'yunpian';
  188. // $plugin = str_replace('\\', '', str_replace('/', '', str_replace('.', '', $yunpian)));
  189. // if (!empty($plugin)) {
  190. // define('PLUGIN_ROOT', BASE_DATA_PATH . DS . 'api/smsapi');
  191. // require_once(PLUGIN_ROOT . DS . $plugin . DS . 'Send.php');
  192. // return send_sms($content, $mobile);
  193. // } else {
  194. // return false;
  195. // }
  196. // }
  197. // private function send_yunpian($mobile, $content)
  198. // {
  199. // $code = $content['code'];
  200. // //$time = $content['time'];
  201. // $type = intval($content['type']);
  202. //
  203. // static $templates = array(self::register_code => '1382929', self::resetpass_code => '1386969', self::getbonus_code => '1386979', self::getbind_code => '1382929');
  204. // if (!array_key_exists($type, $templates)) return -1;
  205. //
  206. // return $this->tpl_send_sms($mobile, $code, $templates[$type]);
  207. // }
  208. // private function tpl_send_sms($mobile, $tpl_value, $tpl_id)
  209. // {
  210. // $yunpian = 'yunpian';
  211. // $plugin = str_replace('\\', '', str_replace('/', '', str_replace('.', '', $yunpian)));
  212. // Log::record("SMS yunpian send:{$mobile} {$tpl_value} {$tpl_id}", Log::DEBUG);
  213. //
  214. // if (!empty($plugin)) {
  215. // $plugin_root = BASE_DATA_PATH . DS . 'api/smsapi';
  216. // require_once($plugin_root . DS . $plugin . DS . 'Send.php');
  217. //
  218. // return tpl_send_sms($tpl_id, $tpl_value, $mobile);
  219. // } else {
  220. //
  221. // return false;
  222. // }
  223. // }
  224. }