当前位置:编程学习 > thinkphp >>

实现tp6发送阿里云短信sms

一、阿里云配置
1.1 创建AccessKey 和 AccessKey Secret  
https://ram.console.aliyun.com/profile/access-keys

1.2 获取签名名称和模版code
https://dysms.console.aliyun.com/domestic/text/sign

二、PHP7.2 + tp6
2.1 安装阿里云SDK 
composer require alibabacloud/dysmsapi-20170525 3.0.0

2.2 上代码
<?php
 
namespace app\admin\controller;
 
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;
 
class SmsController
{
    public function sms(): string
    {
        $mobile = "手机号码";
        $code = "验证码";
        return $this->send_sms($mobile, $code);
    }
 
    public function send_sms($mobile, $code): string
    {
        $client = self::createClient();
        $sendSmsRequest = new SendSmsRequest([
            "phoneNumbers" => $mobile, // 国际号码添加区号
            "signName" => '签名名称',
            "templateCode" => '模板code',
            "templateParam" => json_encode(['code' => $code]) // 模板参数
        ]);
 
        $runtime = new RuntimeOptions([]);
        try {
            $res = $client->sendSmsWithOptions($sendSmsRequest, $runtime);//判断是否发送成功
            if ($res->body->code == "ok") {
                return '短信发送成功';
            } else {
                return $res->body->message;
            }
        } catch (\Exception $error) {
            return $error->getMessage();
        }
    }
 
    public static function createClient(): Dysmsapi
    {
        $config = new Config([
            "accessKeyId" => 'AccessKey', // 必填
            "accessKeySecret" => 'AccessKey Secret' // 必填
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        $config->endpoint = '服务接入点(dysmsapi.aliyuncs.com)';
 
        return new Dysmsapi($config);
    }
}
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,