endpoint = isset($options['endpoint']) ? $options['endpoint'] : "dysmsapi.aliyuncs.com"; if (!isset($config['accessKeyId']) || empty($config['accessKeyId'])) { $this->errors = '参数缺失:accessKeyId必须要设置'; return false; } if (!isset($config['accessKeySecret']) || empty($config['accessKeySecret'])) { $this->errors = '参数缺失:accessKeySecret必须要设置'; return false; } if (!isset($config['sign']) || empty($config['sign'])) { $this->errors = '参数缺失:短信签名sign必须要设置'; return false; } $this->accessKeyId = $config['accessKeyId']; $this->accessKeySecret = $config['accessKeySecret']; $this->sign = $config['sign']; } /** * 使用AK&SK初始化账号Client * @return OpenApiClient Client */ public static function createClient(){ $config = new Config([]); $config->accessKeyId = this->$accessKeyId; $config->accessKeySecret = this->$accessKeySecret; $config->endpoint = this->$endpoint; return new OpenApiClient($config); } /** * API 相关 * @return Params OpenApi.Params */ public static function createApiInfo(){ $params = new Params([ // 接口名称 "action" => "SendSms", // 接口版本 "version" => "2017-05-25", // 接口协议 "protocol" => "HTTPS", // 接口 HTTP 方法 "method" => "POST", "authType" => "AK", "style" => "RPC", // 接口 PATH "pathname" => "/", // 接口请求体内容格式 "reqBodyType" => "json", // 接口响应体内容格式 "bodyType" => "json" ]); return $params; } /** * @content 数组(模板中带变量时)或文本 * @return void */ public static function send($phone,$tmpl,$content=[]){ // fixme 必填: 短信接收号码 if (empty($phone)) { $msg = '电话号码phone必须要填写'; $code = 0; $data = []; return ['Code'=>$code,'Message'=>$msg,'data'=>$data]; } if (empty($tmpl)) { $msg = '短信模板编码必须填写'; $code = 0; $data = []; return ['Code'=>$code,'Message'=>$msg,'data'=>$data]; } if (empty($content)) { $msg = '短信内容或变量值必须填写'; $code = 0; $data = []; return ['Code'=>$code,'Message'=>$msg,'data'=>$data]; } $client = self::createClient(); $params = self::createApiInfo(); // query params $queries = []; $queries["PhoneNumbers"] = $phone; $queries["SignName"] = this->$sign; $queries["TemplateCode"] = $tmpl; $param = is_array($content) ? json_encode($content, JSON_UNESCAPED_UNICODE) : $content; $queries["TemplateParam"] = $param; // runtime options $runtime = new RuntimeOptions([]); $request = new OpenApiRequest([ "query" => OpenApiUtilClient::query($queries) ]); // 复制代码运行请自行打印 API 的返回值 // 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。 $res = $client->callApi($params, $request, $runtime); var_dump($res);die(); } }