123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * 手机短信类
- */
- namespace sendmsg;
- use AlibabaCloud\Client\AlibabaCloud;
- use Qcloud\Sms\SmsSingleSender;
- class Sms
- {
- /*
- * 发送手机短信
- * @param unknown $mobile 手机号
- * @param unknown $smslog_param 短信参数
- */
- public function send($mobile, $smslog_param)
- {
- if(config('ds_config.smscf_type')=='wj'){
- $content=$smslog_param['message'];
- return $this->mysend_sms($mobile, $content);
- }elseif(config('ds_config.smscf_type')=='ali'){
- return $this->ali_send($mobile, $smslog_param);
- }elseif(config('ds_config.smscf_type')=='ten'){
- return $this->ten_send($mobile, $smslog_param);
- }else{
- return ds_callback(false,lang('param_error'));
- }
- }
- /*
- 您于{$send_time}绑定手机号,验证码是:{$verify_code}。【{$site_name}】
- -1 没有该用户账户
- -2 接口密钥不正确 [查看密钥]不是账户登陆密码
- -21 MD5接口密钥加密不正确
- -3 短信数量不足
- -11 该用户被禁用
- -14 短信内容出现非法字符
- -4 手机号格式不正确
- -41 手机号码为空
- -42 短信内容为空
- -51 短信签名格式不正确接口签名格式为:【签名内容】
- -6 IP限制
- 大于0 短信发送数量
- http://utf8.api.smschinese.cn/?Uid=本站用户名&Key=接口安全秘钥&smsMob=手机号码&smsText=验证码:8888
- */
- public function mysend_sms($mobile, $content)
- {
- $user_id = urlencode(config('ds_config.smscf_wj_username')); // 这里填写用户名
- $key = urlencode(config('ds_config.smscf_wj_key')); // 这里填接口安全密钥
- if (!$mobile || !$content || !$user_id || !$key)
- return false;
- if (is_array($mobile)) {
- $mobile = implode(",", $mobile);
- }
- $mobile=urlencode($mobile);
- $content=urlencode($content);
- $url = "http://utf8.api.smschinese.cn/?Uid=" . $user_id . "&Key=" . $key . "&smsMob=" . $mobile . "&smsText=" . $content;
- if (function_exists('file_get_contents')) {
- $res = file_get_contents($url);
- }
- else {
- $ch = curl_init();
- $timeout = 5;
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- $res = curl_exec($ch);
- curl_close($ch);
- }
- //短信发送后返回值 说明
- $message = '';
- switch ($res){
- case "-1":
- $message = '没有该用户账号';
- break;
- case "-2":
- $message = '接口密钥不正确 [查看密钥]不是账户登陆密码';
- break;
- case "-21":
- $message = 'MD5接口密钥加密不正确';
- break;
- case "-3":
- $message = '短信数量不足';
- break;
- case "-11":
- $message = '该用户被禁用';
- break;
- case "-14":
- $message = '短信内容出现非法字符';
- break;
- case "-4":
- $message = '手机号格式不正确';
- break;
- case "-41":
- $message = '手机号码为空';
- break;
- case "-42":
- $message = '短信内容为空';
- break;
- case "-51":
- $message = '短信签名格式不正确接口签名格式为:【签名内容】';
- break;
- case "-6":
- $message = 'IP限制';
- break;
- }
- if($res>0){
- return ds_callback(true);
- }else{
- return ds_callback(false,$message);
- }
- }
-
- public function ali_send($mobile, $smslog_param) {
- if(!$smslog_param['ali_template_code'] || !config('ds_config.smscf_ali_id') || !config('ds_config.smscf_ali_secret') || !config('ds_config.smscf_sign')){
- return ds_callback(false,'请绑定模板code');
- }
- AlibabaCloud::accessKeyClient(config('ds_config.smscf_ali_id'), config('ds_config.smscf_ali_secret'))
- ->regionId('cn-hangzhou')
- ->asDefaultClient();
- try {
- $result = AlibabaCloud::rpc()
- ->product('Dysmsapi')
- // ->scheme('https') // https | http
- ->version('2017-05-25')
- ->action('SendSms')
- ->method('POST')
- ->host('dysmsapi.aliyuncs.com')
- ->options([
- 'query' => [
- 'RegionId' => "cn-hangzhou",
- 'PhoneNumbers' => $mobile,
- 'SignName' => config('ds_config.smscf_sign'),
- 'TemplateCode' => $smslog_param['ali_template_code'],
- 'TemplateParam' => json_encode($smslog_param['ali_template_param']),
- ],
- ])
- ->request();
- } catch (\Exception $e) {
- return ds_callback(false,$e->getMessage());
- }
- $result=$result->toArray();
-
- if($result['Code']!='OK'){
- return ds_callback(false,$result['Message']);
- }else{
- return ds_callback(true);
- }
- }
- /**
- * 腾讯云接口
- * @param $mobile
- * @param $smslog_param
- * @return \multitype
- */
- public function ten_send($mobile, $smslog_param) {
- if(!$smslog_param['ten_template_code'] || !config('ds_config.smscf_ten_id') || !config('ds_config.smscf_ten_secret') || !config('ds_config.smscf_sign')){
- return ds_callback(false,'请绑定模板code');
- }
- // 短信应用 SDK AppID
- $appid = config('ds_config.smscf_ten_id'); // SDK AppID 以1400开头
- // 短信应用 SDK AppKey
- $appkey = config('ds_config.smscf_ten_secret');
- // 需要发送短信的手机号码
- $phoneNumbers = $mobile;
- // 短信模板 ID,需要在短信控制台中申请
- $templateId = $smslog_param['ten_template_code']; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
- $smsSign = config('ds_config.smscf_sign'); // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请
- try {
- $sender = new SmsSingleSender($appid, $appkey);
- $params = $smslog_param['ten_template_param'];//生成随机数
- $result = $sender->sendWithParam("86", $phoneNumbers, $templateId, $params, $smsSign, "", "");
- $rsp = json_decode($result);
- } catch(\Exception $e) {
- return ds_callback(false,$e->getMessage());
- }
- if($rsp->errmsg!='OK'){
- return ds_callback(false,$rsp->errmsg);
- }else{
- return ds_callback(true);
- }
- }
- }
|