阿里云与腾讯云短信发送SDK

创建于 10个月前 / 阅读数 150 / PHP


简介

web应用中最基础的功能便是用户注册,凡是涉及到用户注册的地方一定包含手机号注册或者绑定,又或者是密码找回等功能。为了确定用户的真实性与唯一性,短信验证或短信提醒是必不可少的。

本文主要针对阿里云与腾讯云的短信服务进行说明

不同的云平台都会有自己的一套短信发送体系与密钥体系,具体大家可以参考官方文档或者官方 SDK。

为了快速使用与开发故本人将其封装成包供大家使用。下面介绍在 PHP 该依赖包的使用方法。

安装

地址:github

$ composer require wenslim/sms

使用阿里云

配置

进入控制台短信服务

  1. 点击「AccessKey」获取 AccessKey IDAccess Key Secret
  2. 设置短信签名与模版code

基本使用

index.php

<?php

use Wenslim\Sms\Aliyun\Sms;

// 基础配置中获取的密钥
$accessKeyId = 'xxxxxxxxx';
$accessKeySecret = 'xxxxxxxxx';

// 初始化 Sms 类
$sms = new Sms($accessKeyId, $accessKeySecret);
// 接受人手机号
$sms -> setPhoneNumbers('xxxxxxxxxxx');

// 短信签名 & 短信模版CODE
$sms -> setSignName('xxx');
$sms -> setTemplateCode('xxx');

// 当模版设置变量
$sms -> setTemplateParam("{'code': '1234'}");
$sms -> send();

返回

array(4) {
    ["Message"] => string(2) "OK"
    ["RequestId"] => string(36) "AE61E75C-6057-493A-989D-53DCF44C3686"
    ["BizId"] => string(20) "357420138207838299^0"
    ["Code"] => string(2) "OK"
}

使用腾讯云

配置

进入控制台短信服务

  1. 获取 appidappkey
  2. 配置签名与短信正文模版
use Wenslim\Sms\Txyun\Sms;

$appid = "xxxxxxxx";
$appkey = "xxxxxxxxxxxxxxxxxxxx";

$sms = new Sms($appid, $appkey);
// 国家码 & 手机号
$sms -> setMobile('86', '158xxxxxxxx');
// 模版 ID
$sms -> setTplId(xxxxxx);
// 模版参数
$sms -> setParams(["1234", "2"]);
$sms -> send();

返回示例

array:4 [
    "result" => 0
    "errmsg" => "OK"
    "sid" => "2019:-6287508033737713054"
    "fee" => 1
]

在 Laravel 中使用

版本要求:

  • Laravel5.5 +

基本配置

config / services.php

.
.
.
'sms' => [
    // 阿里云
    'aliyun' => [
        'accessKeyId' => env('SMS_ALIYUN_KEY'),
        'accessKeySecret' => env('SMS_ALIYUN_SECRET'),
    ],
    // 腾讯云
    'txyun' => [
        'appid' => env('SMS_TXYUN_APPID'),
        'appkey' => env('SMS_TXYUN_APPKEY'),
    ]
],

.env

.
.
.
// 阿里云
SMS_ALIYUN_KEY=xxxxxx
SMS_ALIYUN_SECRET=xxxxxx
// 腾讯云
SMS_TXYUN_APPID=xxxxxx
SMS_TXYUN_APPKEY=xxxxxx

eg. App / Http / Controllers / UsersController.php

使用阿里云

方式一:使用方法注入

use Wenslim\Sms\Aliyun\Sms;

class UsersController extends Controller
{
    public function send(Sms $sms)
    {
        $sms -> setPhoneNumbers('xxxxxx');
        $sms -> setSignName('xxxxxx');
        $sms -> setTemplateCode('xxxxxx');
        $sms -> setTemplateParam("{'code': '1234'}");
        $response = $sms -> send();
    }
}

方式二:使用服务名称

class UserController extends Controller
{
    public function send()
    {
        $sms = app('sms');
        $sms -> setPhoneNumbers('xxxxxx');
        $sms -> setSignName('xxxxxx');
        $sms -> setTemplateCode('xxxxxx');
        $sms -> setTemplateParam("{'code': '1234'}");
        $response = $sms -> send();
    }
}

使用腾讯云

方式一:方法注入

use Wenslim\Sms\Txyun\Sms;

class UserController extends Controller
{
    public function send(Sms $sms)
    {
        $sms -> setMobile('86', '158xxxxxxxx');
        $sms -> setTplId(xxxxxx);
        $sms -> setParams(["1234", "3"]);
        $response = $sms -> send();
    }
}

方式二:使用服务名称

class UserController extends Controller
{
    public function send()
    {
        $sms = app("tx_sms");
        $sms -> setMobile('86', '158xxxxxxxx');
        $sms -> setTplId(xxxxxx);
        $sms -> setParams(["1234", "2"]);
        $result = $sms -> send();
    }
}

License

MIT