PHP 对接阿里云短信服务 测试成功

28November

3:32 PM

102 次浏览

0 条评论

一、开通阿里云短信服务

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

二、获取阿里云访问密钥

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

获取步骤:

(一)打开 AccessKey 管理

鼠标移至头像,选择 AccessKey 管理。

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



留言评论
称呼
邮箱
网址