tp6.0使用阿里大于发送短信
tp6.0安装阿里大于
composer require alibabacloud/client站内调试短信接口
https://api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms
点击发起调用即可发送短信

signName
https://dysms.console.aliyun.com/domestic/text/sign

TemplateCode

接收到验证码

集成到tp6.0
1、config新建api配置文件

return [
// token失效时间,0代表永不失效
'token_expire'=>0,
// 阿里大于
'aliSMS'=>[
//开启阿里大于
'isopen'=> false,
'accessKeyId'=>'',
'accessSecret'=>'',
'regionId'=>'cn-hangzhou',
'product'=>'Dysmsapi',
'version'=>'2017-05-25',
'SignName'=>'',
'TemplateCode'=>'',
// 验证码发送时间间隔(60秒)
'expire'=>60
]
];2、新建类,将阿里大于示例代码放到这个类中
阿里大于实例代码如下

我们自己定义类和方法,把阿里大于代码复制过来

完整代码如下:
<?php
declare (strict_types = 1);
namespace app\controller;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class AliSMSController {
static public function sendCode($phone, $code){
AlibabaCloud::accessKeyClient(config('api.aliSMS.accessKeyId'), config('api.aliSMS.accessSecret'))
->regionId(config('api.aliSMS.regionId'))
->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' => config('api.aliSMS.regionId'),
'PhoneNumbers' => $phone,
'SignName' => config('api.aliSMS.SignName'),
'TemplateCode' => config('api.aliSMS.TemplateCode'),
'TemplateParam' => "{\"code\":$code}",
],
])
->request();
// 返回结果
return $result->toArray();
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
}
}3、模型中定义方法
注意:随你在哪使用,AliSMSController::sendCode($phone, $code)即可发送短信,
// 引入我们定义好的阿里大于发送短信类
use app\controller\AliSMSController;
// 发送验证码
public function sendCode(){
// 获取用户提交手机号码
$phone = request()->param('phone');
// 判断是否已经发送过
if(Cache::get($phone)) ApiException('你操作得太快了', 30001, 200);
// 生成4位验证码
$code = random_int(1000,9999);
// 判断是否开启验证码功能
if(!config('api.aliSMS.isopen')){
Cache::set($phone,$code,config('api.aliSMS.expire'));
ApiException('验证码:'.$code, 30005, 200);
}
// 发送验证码
$res = AliSMSController::sendCode($phone, $code);
//发送成功 写入缓存
if($res['Code']=='OK') return Cache::set($phone,$code,config('api.aliSMS.expire'));
// 无效号码
if($res['Code']=='isv.MOBILE_NUMBER_ILLEGAL') ApiException('无效号码', 30002, 200);
// 触发日限制
if($res['Code']=='isv.DAY_LIMIT_CONTROL') ApiException('今日你已经发送超过限制,改日再来', 30003, 200);
// 发送失败
ApiException('发送失败', 30004, 200);
}控制器中调用此方法即可,这里M是模型实例

结果

Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.
1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino
我一直梦想, 看到你们相册那样的地方。真棒。
我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。
我热爱这样的想法, 去那么多国家。真的很鼓舞。
能感受到热爱。继续保持 感受。
我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。
1
1
1