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

一、开通阿里云短信服务
阿里云短信服务管理控制台

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

获取步骤:

(一)打开 AccessKey 管理
鼠标移至头像,选择 AccessKey 管理。


(二)创建 AccessKey 密钥
点击【创建 AccessKey】按钮即可自动创建。

首次创建需要进行短信验证,创建完成后,将 AccessKey ID 和 AccessKey Secret 妥善保管。

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

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

三、创建短信签名和短信模板
打开阿里云短信服务管理控制台,选择【国内消息】,按要求分别添加【短信签名】和【短信模板】,填写完成后等待审核即可。


四、下载 PHP SDK(仅支持5.5以上PHP版本)
点击此处前往下载

SDK及DEMO下载 - 短信服务 - 阿里云

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

http://ytx-sdk.oss-cn-shanghai.aliyuncs.com/dysms_php.zip?spm=a2c4g.11186623.2.16.301a5489mQC7jA&file=dysms_php.zip
1
建议使用:IE 10 +,Edge,Chrome,Firefox浏览器版本进行下载,目前控制台产品不支持在Pad、手机等移动设备上使用。

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

五、修改DEMO程序原文件
修改 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;
}

修改 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;
}


注释掉文件末尾的调用示例代码:
// 调用示例:
//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";

(二)发送短信

$mobile = ‘15836363535’
$code = rand(111111, 999999);
$signName = '你的签名';
$templateCode = '此处为你的模板CODE';
$send = SmsDemo::sendSms($mobile, $signName, $templateCode, $code);
print_r($send);

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值