现在百度出来的大都是1.5的版本,而阿里云短信API出到了2.0了
以下是最新教程,绝对成功,不成功。。。我再改一遍!
环境要求
最低要求 PHP 5.6
安装 SDK 核心库 OpenAPI ,如果已在系统上全局安装 Composer,请直接在项目目录中运行以下内容来安装 Alibaba Cloud SDK for PHP 作为依赖项:
复制
composer require alibabacloud/darabonba-openapi
⚠️注意:执行 composer 安装 SDK 的 PHP 版本要小于或等于实际运行时的 PHP 版本。 例如,在 PHP7.2 环境下安装 SDK 后生成 vendor 目录,只能在 PHP7.2 以上版本使用,如果拷贝到 PHP5.6 环境下使用,会出现依赖版本不兼容问题。
一些用户可能由于网络问题无法安装,可以通过以下命令使用阿里云 Composer 全量镜像。
复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装方式:
composer require alibabacloud/dysmsapi-20170525
好了,接下来就是照抄,ctrl+C用起来
1 <?php 2 /** 3 * Author: super 4 * Date: 2021/6/19 5 */ 6 7 namespace app\base\logic; 8 9 use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi; 10 11 use Darabonba\OpenApi\Models\Config; 12 use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest; 13 14 class AliyunSMS 15 { 16 const KEY = 'your_key'; 17 const SECRET = 'your_secret'; 18 const SIGN = 'your_sign'; 19 20 /** 21 * 使用AK&SK初始化账号Client 22 * @param mixed $accessKeyId 23 * @param mixed $accessKeySecret 24 * @return Dysmsapi Client 25 */ 26 public static function createClient($accessKeyId = null, $accessKeySecret = null) 27 { 28 $config = new Config([ 29 "accessKeyId" => $accessKeyId ?? AliyunSMS::KEY, 30 "accessKeySecret" => $accessKeySecret ?? AliyunSMS::SECRET 31 ]); 32 // 访问的域名 33 $config->endpoint = "dysmsapi.aliyuncs.com"; 34 return new Dysmsapi($config); 35 } 36 37 /** 38 * 短信验证码 39 * @param int $phone 手机号码 40 * @param int $code 验证码 41 * @return array 42 */ 43 public static function verify(int $phone, int $code) 44 { 45 $client = self::createClient(AliyunSMS::KEY, AliyunSMS::SECRET); 46 $sendSmsRequest = new SendSmsRequest([ 47 "phoneNumbers" => $phone, 48 "signName" => AliyunSMS::SIGN, 49 "templateCode" => "SMS_21796xxxx", 50 "templateParam" => json_encode([ 51 'code' => $code 52 ]) 53 ]); 54 $result = $client->sendSms($sendSmsRequest); 55 if ($result->body->message == 'OK' && $result->body->code == 'OK') { 56 return ['status' => 1]; 57 } 58 if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') { 59 return ['status' => 0, 'msg' => '手机号码格式不正确']; 60 } 61 return ['status' => 0, 'msg' => '短信发送失败,网络繁忙']; 62 } 63 64 /** 65 * @param string[] $args 66 * @return void 67 */ 68 public static function main($args) 69 { 70 $client = self::createClient("accessKeyId", "accessKeySecret"); 71 $sendSmsRequest = new SendSmsRequest([ 72 "phoneNumbers" => "1503871****", 73 "signName" => "阿里大于测试专用", 74 "templateCode" => "SMS_215180185", 75 "templateParam" => "{\"code\":\"1111\",\"code1\":\"1111\",\"code3\":\"1111\"}" 76 ]); 77 // 复制代码运行请自行打印 API 的返回值 78 $client->sendSms($sendSmsRequest); 79 } 80 } 81 $phone = ''; 82 $code = rand(100000, 999999); 83 $result = AliyunSMS::verify($phone, $code); 84 if ($result['status'] == 1) { 85 Cache::set($this->userID . '_register_' . $phone, ['code' => $code, 'time' => time()], 86400); 86 success('发送成功'); 87 } 88 error($result['msg']);
在测试过程中,或许会出现isp.RAM_PERMISSION_DENY,没有访问权限,自己去阿里云设置一下就行了,流程跟我走——》》》》