💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
[TOC] ``` composer require alibabacloud/client ``` v1.5.29 ## **步骤:** 1. 设置全局客户端 ~~~php AlibabaCloud::accessKeyClient() ~~~ 2. 创建对应 API 的 Request 。 ``` $request=AlibabaCloud::rpc() //or $request=AlibabaCloud::roa() ``` 3. 设置选项/参数并执行请求 ``` //rpc时 $result =$request ->product('Dysmsapi') // ->scheme('https') // https | http ->version('2017-05-25') ->action('SendSms') ->method('POST') ->host('dysmsapi.aliyuncs.com') ->options([ 'query' => [ 'RegionId' => "cn-hangzhou", 'PhoneNumbers' => $config['test_mobile'], 'SignName' => $config['signName'], 'TemplateCode' => $config['templateCode'], 'TemplateParam' => $code, ], ]) ->request(); ``` 4. 打印 API 返回结果。 ``` print_r($result->toArray()); ``` 5. 客户端报错 ~~~php catch (ClientException $exception) { echo $exception->getMessage(). PHP_EOL; } ~~~ 6. 服务端报错 ~~~php catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode(). PHP_EOL; echo $exception->getRequestId(). PHP_EOL; echo $exception->getErrorMessage(). PHP_EOL; } ~~~ ## **示例:** ~~~ <?php // 应用公共文件 use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; /** * 验证码(阿里云短信) */ function smsVerify($mobile, $code, $tempId) { AlibabaCloud::accessKeyClient(config('app.aliyunsms.access_key_id'), config('app.aliyunsms.access_key_secret')) ->regionId('cn-hangzhou') //replace regionId as you need(这个地方是发短信的节点,默认即可,或者换成你想要的) ->asGlobalClient(); $data = []; try { $result = AlibabaCloud::rpcRequest() ->product('Dysmsapi') //->scheme('https') //https | http(如果域名是https,这里记得开启) ->version('2017-05-25') ->action('SendSms') ->method('POST') ->options([ 'query' => [ 'PhoneNumbers' => $mobile, 'SignName' => config('app.aliyunsms.sign_name'), 'TemplateCode' => $tempId, 'TemplateParam' => json_encode(['code'=>$code]), ], ]) ->request(); $res = $result->toArray(); if($res['Code'] == 'OK'){ $data['status'] = 1; $data['info'] = $res['Message']; }else{ $data['status'] = 0; $data['info'] = $res['Message']; } return $data; } catch (ClientException $e) { $data['status'] = 0; $data['info'] = $e->getErrorMessage(); return $data; } catch (ServerException $e) { $data['status'] = 0; $data['info'] = $e->getErrorMessage(); return $data; } } ~~~ 复制以上代码,配置换成自己的即可使用,当然,配置也可以放到数据库里。 3.在需要的地方调用这个方法即可: 我这里是ajax调用的,所以返回值是json格式。 ~~~ $code = rand_string(4,1);//这里是随机生成4位数字,这个方法是我自己写的哦,要注意! $res = smsVerify($mobile, $code, 'SMS_113461246'); if($res['status'] == 1){ Session::set($mobile.'code',$code); ajaxReturn(1,"验证码已发送"); }else{ ajaxReturn(0,"验证码发送失败,请联系客服"); } ~~~ 这样就好了,验证码发送的功能就完成了! ## **旧版含有`Dysmsap`类时的示例** ~~~php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Dysmsapi\Dysmsapi; // 设置全局客户端 AlibabaCloud::accessKeyClient('<your-access-key-id>', '<your-access-key-secret>') ->regionId('cn-hangzhou') ->asDefaultClient(); try { // 访问产品 APIs $request = Dysmsapi::v20170525()->addShortUrl(); // 设置选项/参数并执行请求 $result = $request ->withResourceOwnerAccount("your_value") // 该参数 ResourceOwnerAccount 值为假设值,请您根据实际情况进行填写 ->withResourceOwnerId(1) // 该参数 ResourceOwnerId 值为假设值,请您根据实际情况进行填写 ->withSourceUrl("your_value") // 该参数 SourceUrl 值为假设值,请您根据实际情况进行填写 ->withShortUrlName("your_value") // 该参数 ShortUrlName 值为假设值,请您根据实际情况进行填写 ->client('client1') // 指定发送客户端,否则使用全局客户端 ->debug(true) // 开启调试会输出详细信息 ->connectTimeout(0.01) // 连接超时会抛出异常 ->timeout(0.01) // 超时会抛出异常 ->request(); // 执行请求 // 打印 API 返回结果 print_r($result->toArray()); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; } ~~~ ``` <?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Dysmsapi\Dysmsapi; // Download:https://github.com/aliyun/openapi-sdk-php // Usage:https://github.com/aliyun/openapi-sdk-php AlibabaCloud::accessKeyClient('<your-access-key-id>', '<your-access-key-secret>') // use STS Token // AlibabaCloud::stsClient('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>') ->regionId('cn-hangzhou') ->asDefaultClient(); try { $request = Dysmsapi::v20170525()->sendSms(); $result = $request ->debug(true) // Enable the debug will output detailed information ->connectTimeout(1) // Throw an exception when Connection timeout ->timeout(1) // Throw an exception when timeout ->request(); print_r($result->toArray()); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; } ```