首页 > 技术文章 > 阿里云短信整合(新版)

YFYQ 2019-09-18 17:34 原文

最近再调整项目过程中,客户突然说要将短信平台更换为阿里云短信。

本来也没什么,毕竟客户大大是爸爸。

阿里云短信这个最近又重新整理封装了一下,整合成类库了

有需要的大大可直接传送过去诶  阿里云短信整合封装类库 : https://www.cnblogs.com/YFYQ/p/13631238.html

但是在看阿里云短信文档的时候发现有了新的变化。

(太长时间没有看文档了)多出了一个SDK参考(新版)。

在1月22号更新的SDK。现在9月咯,这个时间有点夸张了

于是乎,反正这会没事,一块来 玩玩呗。

观看文档后,发现最新版的sdk 需要composer 下载安装使用。

文档地址:https://help.aliyun.com/document_detail/112186.html?spm=a2c4g.11174283.6.649.40612c42CNvpfY

当然,没有装composer 的也不用担心。阿里云同样准备了.zip的直接下载压缩包,虽然阿里云强烈不推荐这种方法。

地址:https://github.com/aliyun/openapi-sdk-php-client/blob/master/docs/en-US/1-Installation.md

在GIT 最底部哦。

好了,回归正题,

因为原来已经添加过签名和短信模板,这个我就不多说了,直接进入正题

因为项目是TP5。所以,将SDK 放至/extend/下。

因为整合至common 下,所以非常简单的代码如下:

###################################################
#   阿里云短信(新版)
#   先做了一个发送的例子
#   后期在需要的情况下可继续整合
###################################################
require_once dirname(__DIR__) . '/extend/sdk/vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
#阿里短信函数,$mobile为手机号码,$code为自定义随机数
function sendMsg($mobile,$code){
    $action = 'SendSms';
    $data   =   [
                    'query' => [
                      'RegionId' => "cn-hangzhou",
                      'PhoneNumbers' => $mobile,            #发送手机号
                      'SignName' => "短信签名",             #短信签名
                      'TemplateCode' => "短信模板CODE",    #短信模板CODE
                      'TemplateParam' => "{\"code\":\"".$code."\"}", #自定义随机数
                    ],
                ];
    $result = aliCode($action,$data);
    return $result;
}

function  aliCode($action,$data)
{
    # AccessKey ID 与 Access Key Secret 修改为自己服务器上 的即可
    AlibabaCloud::accessKeyClient('AccessKey ID', 'Access Key Secret')
                        ->regionId('cn-hangzhou')
                        ->asDefaultClient();
    try {
        $result = AlibabaCloud::rpc()
                              ->product('Dysmsapi')
                              // ->scheme('https') // https | http
                              ->version('2017-05-25')
                              ->action($action)
                              ->method('POST')
                              ->host('dysmsapi.aliyuncs.com')
                              ->options($data)
                              ->request();
        return $result->toArray();

    } catch (ClientException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    } catch (ServerException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    }
}

非常简单,然后使用的话 直接 调用 sendMsg() 方法即可。

整合仓促,实在简陋,希望对各位大大有些许帮助。

 

九一八,勿忘国耻。

2019年09月18日

 

推荐阅读