SMSService.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace crmeb\services;
  3. use crmeb\services\Alisms;
  4. use think\Exception;
  5. use think\facade\Db;
  6. /**
  7. * 短信服务
  8. * Class SMSService
  9. * @package crmeb\services
  10. */
  11. class SMSService
  12. {
  13. //验证码
  14. const VERIFICATION_CODE = 'SMS_223945076';
  15. /**
  16. * get: 发送短信验证码
  17. * path: sendSmsCode
  18. * method: sendSmsCode
  19. * param: phone - {string} 手机号
  20. */
  21. public static function send($phone, array $param ,$template="VERIFICATION_CODE")
  22. {
  23. $code = $param['code'];
  24. try {
  25. $sms = new Alisms(sys_config('alisms_ak'), sys_config('alisms_sk'));
  26. $sms->setAction('SendSms')->setOptions([
  27. 'PhoneNumbers' => $phone,
  28. 'SignName' => sys_config('alisms_sign'),
  29. 'TemplateCode' => sys_config('TemplateCode',''),
  30. 'TemplateParam' => '{"code":"'.$code.'"}',
  31. ])->execute();
  32. return ['status' => 200, 'msg' => '短信发送成功'];
  33. } catch (Exception $exception) {
  34. return ['status' => 400, 'msg' => '发送失败'];
  35. }
  36. }
  37. /**
  38. * get: 发送短信验证码
  39. * path: sendSmsCode
  40. * method: sendSmsCode
  41. * param: phone - {string} 手机号
  42. */
  43. public static function off_send($phone, array $param ,$template="")
  44. {
  45. $TemplateCode = $template;
  46. try {
  47. $sms = new Alisms(sys_config('alisms_ak'), sys_config('alisms_sk'));
  48. $sms->setAction('SendSms')->setOptions([
  49. 'PhoneNumbers' => $phone,
  50. 'SignName' => sys_config('alisms_sign'),
  51. 'TemplateCode' => $TemplateCode,
  52. 'TemplateParam' => json_encode($param),
  53. ])->execute();
  54. return ['status' => 200, 'msg' => '短信发送成功'];
  55. } catch (Exception $exception) {
  56. return ['status' => 400, 'msg' => '发送失败'];
  57. }
  58. }
  59. //第三方短信平台
  60. private static function post($data, $target){
  61. $url_info = parse_url($target);
  62. $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
  63. $httpheader .= "Host:" . $url_info['host'] . "\r\n";
  64. $httpheader .= "Content-Type:application/x-www-form-urlencoded\r\n";
  65. $httpheader .= "Content-Length:" . strlen($data) . "\r\n";
  66. $httpheader .= "Connection:close\r\n\r\n";
  67. //$httpheader .= "Connection:Keep-Alive\r\n\r\n";
  68. $httpheader .= $data;
  69. $fd = fsockopen($url_info['host'], 80);
  70. fwrite($fd, $httpheader);
  71. $gets = "";
  72. while(!feof($fd)) {
  73. $gets .= fread($fd, 128);
  74. }
  75. fclose($fd);
  76. if($gets != ''){
  77. $start = strpos($gets, '<?xml');
  78. if($start > 0) {
  79. $gets = substr($gets, $start);
  80. }
  81. }
  82. return $gets;
  83. }
  84. }