function send_sms ($AccessKeyId, $Secret, $params) {
    require '../vendor/autoload.php';
    if (empty($params['phone'])) {
        return false;
    }
    // 创建客户端
    AlibabaCloud\Client\AlibabaCloud ::accessKeyClient($AccessKeyId, $Secret)
        ->regionId('cn-hangzhou')
        ->asDefaultClient();
    try {
        $result =    AlibabaCloud\Client\AlibabaCloud::rpc()
            ->product('Dysmsapi')
            ->version('2017-05-25')
            ->action('SendSms')
            ->host('dysmsapi.aliyuncs.com')
            ->options([
                // 这里的参数可以在openAPI Explorer里面查看
                'query' => [
                    'RigionId'     => 'cn_hangzhou',
                    'PhoneNumbers' => $params['phone'],    // 输入的手机号
                    'SignName'     => $params['sign'],    // 签名信息
                    'TemplateCode' => $params['code'],    // 短信模板id
                    'TemplateParam' => $params['param']    // 可选,模板变量值,json格式
                ]
            ])
            ->request();
//        print_r($result->toArray());
        return $result->toArray();
    } catch (ClientException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    } catch (ServerException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    }
}
/**
 * 校验手机号码
 * @param $phone
 * @return bool
 */
function validatePhone ($phone) {
    if(!preg_match("/^1[34578]\d{9}$/", $phone)){
        return false;
    }
    return true;
}

发送

//发送短信
public function sms(Request $request)
{

$phone = input('post.phone');
if (empty($phone) || !validatePhone($phone)) {
    return json_encode(['code' => 100, 'msg' => '请输入正确的手机号!']);
}
$sign = Config::get('alisms.SignName');
$code = Config::get('alisms.TemplateCode');
$ak = Config::get('alisms.AccessKeyId');
$sk = Config::get('alisms.Secret');
$num = mt_rand(1000, 9999);
// 请求的参数
$params = [
    'phone' => $phone,
    'sign' => $sign,
    'code' => $code,
    'param' => json_encode([
        'code' => $num,
    ])
];
$res = send_sms($ak, $sk, $params);
if ($res['Code'] === 'OK') {
    Cache::set($phone, $num, 120);
    return Result::Success('验证码发送成功');
} else {
    return Result::Error('1000', '验证码发送失败,请稍后再试');
}

}

标签: none

添加新评论