SMSService.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace crmeb\services;
  3. use think\facade\Db;
  4. /**
  5. * 短信服务
  6. * Class SMSService
  7. * @package crmeb\services
  8. */
  9. class SMSService
  10. {
  11. //验证码
  12. const VERIFICATION_CODE = 518076;
  13. //支付成功
  14. const PAY_SUCCESS_CODE = 520268;
  15. //发货提醒
  16. const DELIVER_GOODS_CODE = 520269;
  17. //确认收货提醒
  18. const TAKE_DELIVERY_CODE = 520271;
  19. //管理员下单提醒
  20. const ADMIN_PLACE_ORDER_CODE = 520272;
  21. //管理员退货提醒
  22. const ADMIN_RETURN_GOODS_CODE = 520274;
  23. //管理员支付成功提醒
  24. const ADMIN_PAY_SUCCESS_CODE = 520273;
  25. //管理员确认收货
  26. const ADMIN_TAKE_DELIVERY_CODE = 520422;
  27. /**
  28. * get: 发送短信验证码
  29. * path: sendSmsCode
  30. * method: sendSmsCode
  31. * param: phone - {string} 手机号
  32. */
  33. public static function send($phone, array $param ,$template="VERIFICATION_CODE")
  34. {
  35. $code = $param['code'];
  36. $target = "http://cf.51welink.com/submitdata/Service.asmx/g_Submit";
  37. $company = Sys_config('site_name');
  38. switch ($template)
  39. {
  40. case 'PAY_SUCCESS_CODE':
  41. break;
  42. case 'DELIVER_GOODS_CODE':
  43. break;
  44. case 'TAKE_DELIVERY_CODE':
  45. break;
  46. case 'ADMIN_PLACE_ORDER_CODE':
  47. break;
  48. case 'ADMIN_RETURN_GOODS_CODE':
  49. break;
  50. case 'ADMIN_PAY_SUCCESS_CODE':
  51. break;
  52. case 'ADMIN_TAKE_DELIVERY_CODE':
  53. break;
  54. default:
  55. $content=sprintf('您的注册验证码为:%d 。验证码有效期为%d分钟,请尽快填写!【%s】',$code,5,$company);
  56. }
  57. $post_data = "sname=dlycwl01&spwd=ycwl123456&scorpid=&sprdid=1012818&sdst=".$phone."&smsg=".rawurlencode($content);
  58. $gets = self::post($post_data, $target);
  59. if($gets){
  60. return ['status' => 200, 'msg' => '短信发送成功'];
  61. }else{
  62. return ['status' => 400, 'msg' => '发送失败'];
  63. }
  64. }
  65. //第三方短信平台
  66. private static function post($data, $target){
  67. $url_info = parse_url($target);
  68. $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
  69. $httpheader .= "Host:" . $url_info['host'] . "\r\n";
  70. $httpheader .= "Content-Type:application/x-www-form-urlencoded\r\n";
  71. $httpheader .= "Content-Length:" . strlen($data) . "\r\n";
  72. $httpheader .= "Connection:close\r\n\r\n";
  73. //$httpheader .= "Connection:Keep-Alive\r\n\r\n";
  74. $httpheader .= $data;
  75. $fd = fsockopen($url_info['host'], 80);
  76. fwrite($fd, $httpheader);
  77. $gets = "";
  78. while(!feof($fd)) {
  79. $gets .= fread($fd, 128);
  80. }
  81. fclose($fd);
  82. if($gets != ''){
  83. $start = strpos($gets, '<?xml');
  84. if($start > 0) {
  85. $gets = substr($gets, $start);
  86. }
  87. }
  88. return $gets;
  89. }
  90. }