一、开通阿里云短信服务
阿里云短信服务管理控制台
二、获取阿里云访问密钥
阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。
获取步骤:
(一)打开 AccessKey 管理
鼠标移至头像,选择 AccessKey 管理。
(二)创建 AccessKey 密钥
点击【创建 AccessKey】按钮即可自动创建。
首次创建需要进行短信验证,创建完成后,将 AccessKey ID 和 AccessKey Secret 妥善保管。
AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限,请您妥善保管。
可以通过阿里云控制台的秘钥管理页面创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。
三、创建短信签名和短信模板
打开阿里云短信服务管理控制台,选择【国内消息】,按要求分别添加【短信签名】和【短信模板】,填写完成后等待审核即可。
四、下载 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程序原文件
1 修改 SmsDemo.php 文件
在 SmsDemo.php 文件中找到 getAcsClient() 方法,修改 AccessKeyId 和 AccessKeySecret :
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;
}
2 修改 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;
3注释掉文件末尾的调用示例代码:
/ 调用示例:
//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 文件中引入:
<?php
require "aliyun-dysms-php-sdk/api_demo/SmsDemo.php";
1
2
(二)发送短信
$code = rand(111111, 999999);
$signName = 'ABC商城';
$templateCode = '此处为你的模板CODE';
$send = SmsDemo::sendSms($mobile, $signName, $templateCode, $code);
print_r($send);
七、更多
1. SDK及DEMO下载
https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.26.464e57cfuNqIcX