寫這個composer包的原因是因為這兩個服務商的簡訊功能sdk並不能單獨下載
意思是如果我使用簡訊傳送功能就需要去下載整個平臺功能的sdk
有的開源包實際也是依賴了平臺本身的sdk或者是做了其他很多的功能
對於我目前而言,我並沒有在自己應用後臺去整合管理雲平臺的簡訊服務,所以只用到了簡簡單單的傳送簡訊功能
由此就開始寫了這個包,看這兩個服務商的sdk原始碼和api文件,騰訊雲的看的實在是無言以對了
此包目前實際大小不超過20KB,有註釋,程式碼風格正確,OOP形式。
介紹
這是一個基於阿里雲和騰訊雲最新簡訊傳送功能的極簡包
為了更大限度相容更低版本的php,程式碼實現過程中也並沒有使用型別限制
如果你只想使用這兩個雲平臺的簡訊傳送功能,這個包是你不錯的選擇
使用方法
在支援composer包的框架內使用composer安裝此包
composer require siam-yon/sms
在具體程式碼中的使用方法
<?php
use Siam\Sms\AliSms;
use Siam\Sms\TencentSms;
class Demo
{
function aliSend()
{
$key = '你的阿里雲金鑰標識';
$secret = '你的阿里雲金鑰密碼';
$sign = '你的阿里雲簡訊簽名';
$template = '你的阿里雲簡訊模板';
// 可傳送多個手機號,變數為陣列即可,如:[11111111111, 22222222222]
$mobile = 11111111111;
// 阿里雲模板變數為鍵值對陣列
$params = ['code' => rand(1000, 9999)];
$sms = new AliSms($key, $secret);
// 需要注意,設定配置不分先後順序,send後也不會清空配置
$result = $sms->setMobile($mobile)->setTemplate($template)->setSign($sign)->setParams($params)->send();
/**
* 返回值為bool,你可獲得阿里雲響應做出你業務內的處理
*
* status bool 此變數是此包用來判斷是否傳送成功
* code string 阿里雲簡訊響應程式碼
* message string 阿里雲簡訊響應資訊
*/
if (!$result) {
$response = $sms->getResponse();
// 做出處理
}
}
function tencentSend()
{
$key = '你的騰訊雲金鑰標識';
$secret = '你的騰訊雲金鑰密碼';
// 騰訊雲簡訊傳送簡訊需要指定應用id
$appid = '你的騰訊雲簡訊應用id';
$sign = '你的騰訊雲簡訊簽名';
$template = '你的阿里雲簡訊模板';
// 可傳送多個手機號,變數為陣列即可,如:[11111111111, 22222222222]
$mobile = 11111111111;
// 騰訊雲模板變數為索引陣列,當你傳入關聯陣列時會按順序變為索引陣列,如:['name' => '張三', 'code' => '123'] => ['張三', '123']
$params = [rand(1000, 9999)];
$sms = new TencentSms($key, $secret);
// 需要注意,設定配置不分先後順序,send後也不會清空配置
$result = $sms->setAppid($appid)->setMobile($mobile)->setTemplate($template)->setSign($sign)->setParams($params)->send();
/**
* 返回值為bool,你可獲得騰訊雲響應做出你業務內的處理
*
* status bool 此變數是此包用來判斷是否傳送成功
* code string 騰訊雲簡訊響應程式碼
* message string 騰訊雲簡訊響應資訊
*/
if (!$result) {
$response = $sms->getResponse();
// 做出處理
}
}
}
在Laravel中的快捷使用
安裝後釋出配置檔案,此命令會在你的config目錄下生成一個siam-sms.php檔案
php artisan vendor:publish --provider="Siam\Sms\Laravel\ServiceProvider"
在env檔案中配置阿里雲或騰訊雲簡訊金鑰,當然你也可以修改env使用的鍵名 或者 直接明文寫在siam-sms.php配置檔案中
# 阿里雲簡訊服務金鑰
ALI_SMS_KEY=
ALI_SMS_SECRET=
# 騰訊雲簡訊服務金鑰
TENCENT_SMS_KEY=
TENCENT_SMS_SECRET=
在使用前,你需要在‘actions’內配置好一些動作模板,如:註冊、登入等,當你認為不同的動作之間的簡訊應該有模板、簽名等有差異時,那麼你就應該在actions內配置好對應的配置
需要注意使用TencentSms作為驅動時,每個動作內應該要有應用id
<?php
use Siam\Sms\AliSms;
use Siam\Sms\TencentSms;
return [
'default' => 'ali',
'ali' => [
'key' => env('ALI_SMS_KEY'),
'secret' => env('ALI_SMS_SECRET'),
'drive' => AliSms::class,
'actions' => [
'register' => [
'sign' => 'xxx論壇',
'template' => '阿里雲模板id',
],
'payment' => [
'sign' => 'xxx商城',
'template' => '阿里雲模板id'
]
]
],
'tencent' => [
'key' => env('TENCENT_SMS_KEY'),
'secret' => env('TENCENT_SMS_SECRET'),
'drive' => TencentSms::class,
'actions' => [
'register' => [
'sign' => 'xxx論壇',
'template' => '騰訊雲模板id',
'appid' => '騰訊雲應用id'
]
]
]
];
使用例項化時傳入你使用的鍵名,如果不傳入,則會取配置檔案中的default值作為預設鍵名,預設的配置檔案鍵名有 ‘ali’ 和 ‘tencent’ 當然你可以任意的按照自己想法進行更改鍵名或新增鍵名
use SiamSms;
$sms = new SiamSms('tencent');
// 定義動作
$action = 'register';
// 可傳送多個手機號,變數為陣列即可,如:[11111111111, 22222222222]
$mobile = 11111111111;
// 使用騰訊雲時,當你傳入關聯陣列時會按順序變為索引陣列,如:['name' => '張三', 'code' => '123'] => ['張三', '123']
$params = ['code' => rand(1000, 9999)];
$result = $sms->send($action, $mobile, $params);
/**
* 返回值為bool,你可獲得騰訊雲響應做出你業務內的處理
*
* status bool 此變數是此包用來判斷是否傳送成功
* code string 騰訊雲簡訊響應程式碼
* message string 騰訊雲簡訊響應資訊
*/
if (!$result) {
$response = $sms->getResponse();
// 做出處理
}
你也可以獲得實際使用的驅動
$sms->getDirve();
當你有使用問題時可以透過以下方式聯絡,我會在有空閒時間後第一時間回覆
- 傳送郵件到1052078497@qq.com
- 加入qq群177987594提問
本作品採用《CC 協議》,轉載必須註明作者和本文連結