PHP 对接阿里云短信服务完整流程

本文目录

          • 一、开通阿里云短信服务
          • 二、获取阿里云访问密钥
            • (一)打开 AccessKey 管理
            • (二)创建 AccessKey 密钥
          • 三、创建短信签名和短信模板
          • 四、下载 PHP SDK(仅支持5.5以上PHP版本)
          • 五、修改DEMO程序原文件
            • 修改 SmsDemo.php 文件
          • 六、短信发送
            • (一)引入文件
            • (二)发送短信
          • 七、更多

一、开通阿里云短信服务

阿里云短信服务管理控制台

二、获取阿里云访问密钥

阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。

获取步骤:

(一)打开 AccessKey 管理

鼠标移至头像,选择 AccessKey 管理。
PHP 对接阿里云短信服务完整流程_第1张图片

(二)创建 AccessKey 密钥

点击【创建 AccessKey】按钮即可自动创建。
PHP 对接阿里云短信服务完整流程_第2张图片
首次创建需要进行短信验证,创建完成后,将 AccessKey ID 和 AccessKey Secret 妥善保管。

AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限,请您妥善保管。

可以通过阿里云控制台的秘钥管理页面创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。

三、创建短信签名和短信模板

打开阿里云短信服务管理控制台,选择【国内消息】,按要求分别添加【短信签名】和【短信模板】,填写完成后等待审核即可。
PHP 对接阿里云短信服务完整流程_第3张图片

四、下载 PHP SDK(仅支持5.5以上PHP版本)

点击此处前往下载

或在浏览器地址栏输入此链接下载:

http://ytx-sdk.oss-cn-shanghai.aliyuncs.com/dysms_php.zip?spm=a2c4g.11186623.2.16.301a5489mQC7jA&file=dysms_php.zip

建议使用:IE 10 +,Edge,Chrome,Firefox浏览器版本进行下载,目前控制台产品不支持在Pad、手机等移动设备上使用。

下载完成,解压到你的项目目录。

五、修改DEMO程序原文件
修改 SmsDemo.php 文件
  1. SmsDemo.php 文件中找到 getAcsClient() 方法,修改 AccessKeyIdAccessKeySecret
public static function getAcsClient() {
     
    //产品名称:云通信短信服务API产品,开发者无需替换
    $product = "Dysmsapi";

    //产品域名,开发者无需替换
    $domain = "dysmsapi.aliyuncs.com";

    // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
    $accessKeyId = "你的AccessKeyId"; // AccessKeyId

    $accessKeySecret = "你的AccessKeySecret"; // AccessKeySecret

    // 暂时不支持多Region
    $region = "cn-hangzhou";

    // 服务结点
    $endPointName = "cn-hangzhou";


    if(static::$acsClient == null) {
     

        //初始化acsClient,暂不支持region化
        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

        // 增加服务结点
        DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

        // 初始化AcsClient用于发起请求
        static::$acsClient = new DefaultAcsClient($profile);
    }
    return static::$acsClient;
}
  1. 修改 sendSms() 方法,加入四个参数:

$mobile 要发送验证码的手机号
$signName 签名名称
$templateCode 模板CODE
$checkCode 要发送的验证码

public static function sendSms($mobile, $signName, $templateCode, $checkCode) {
     

    // 初始化SendSmsRequest实例用于设置发送短信的参数
    $request = new SendSmsRequest();

    //可选-启用https协议
    //$request->setProtocol("https");

    // 必填,设置短信接收号码
    $request->setPhoneNumbers($mobile);

    // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
    $request->setSignName($signName);

    // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
    $request->setTemplateCode($templateCode);

    // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
    $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
        "code" => $checkCode,
        "product" => "dsd"
    ), JSON_UNESCAPED_UNICODE));

    // 可选,设置流水号
    $request->setOutId("yourOutId");

    // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
    $request->setSmsUpExtendCode("1234567");

    // 发起访问请求
    $acsResponse = static::getAcsClient()->getAcsResponse($request);

    return $acsResponse;
}
  1. 注释掉文件末尾的调用示例代码:
// 调用示例:
//set_time_limit(0);
//header('Content-Type: text/plain; charset=utf-8');
//
//$response = SmsDemo::sendSms();
//echo "发送短信(sendSms)接口返回的结果:\n";
//print_r($response);
//
//sleep(2);
//
//$response = SmsDemo::sendBatchSms();
//echo "批量发送短信(sendBatchSms)接口返回的结果:\n";
//print_r($response);
//
//sleep(2);
//
//$response = SmsDemo::querySendDetails();
//echo "查询短信发送情况(querySendDetails)接口返回的结果:\n";
//print_r($response);

六、短信发送
(一)引入文件

在你的 PHP 文件中引入:


require "aliyun-dysms-php-sdk/api_demo/SmsDemo.php";
(二)发送短信
$code = rand(111111, 999999);
$signName = 'ABC商城';
$templateCode = '此处为你的模板CODE';
$send = SmsDemo::sendSms($mobile, $signName, $templateCode, $code);
print_r($send);
七、更多

1. SDK及DEMO下载

2. 短信发送API

你可能感兴趣的:(PHP,Redis,短信服务,阿里云,PHP,Redis)