アリのSMSパッケージSDK TP3.2

1.アリ・メッセージング・インターフェースは、エンタープライズ証明が必要です。

2. SMSテキストメッセージテンプレートのニーズ

 

<?phpの
/ **
*アリの雲は、SMS認証コードクラスを送信します
* @param文字列$ accessKeyIdキー
* @param文字列$の秘密キー
* @Param文字列$のsignName SMSテンプレート名
* @Param文字列$のtemplateCode SMSのテンプレートコード
* /
クラスデモ{
//エラーメッセージを保存
公共$エラー。
//アクセスキーID
プライベート$ accessKeyId = 'LTAIvNlXZGhOPuG8';
//アクセスアクセスキーの秘密
プライベート$ accessKeySecret = 'Xqu7Ul5u1Pt6gyxMuT7sTutn0fjC8E';
パブリック関数__construct($ cofig =配列()){
$ cofig =配列(
'accessKeyId' => 'accessKeyId'
=> 'accessKeySecret' 'accessKeySecret'
'SignName' => 'SMSテンプレート名'
);
//設定パラメータ
の$ this - > accessKeyId = $ cofig [ 'accessKeyId'];
の$ this - > accessKeySecret = $ cofig [ 'accessKeySecret'];
の$ this - > signName = $ cofig [ 'signName'];
}
プライベート関数percentEncode($文字列){
$文字列=でurlencode($文字列);
$文字列=にpreg_replace( '/ \ + /'、 '%20'、$文字列);
$文字列=にpreg_replace( '/ \ * /'、 '%の2A'、$文字列);
$文字列=にpreg_replace( '/%7E /'、 '〜'、$文字列);
$文字列を返します。
}
/ **
*署名
*
* @param未知の$パラメータ
* @param不明の$ accessKeySecret
* @return文字列
* /
プライベート関数computeSignature($パラメータ、$ accessKeySecret){
ksort($パラメータ)。
$ canonicalizedQueryString = '';
foreachの($キー=> $値として$パラメータ){
$ canonicalizedQueryString。= '&'。の$ this - > percentEncode($キー)。'='。の$ this - > percentEncode($値);
}
$ stringToSign = 'GET&%2F&'。の$ this - > percentencode(SUBSTR($ canonicalizedQueryString、1));
$署名= BASE64_ENCODE(hash_hmac( 'SHA1'、$ stringToSign、$ accessKeySecret '&'、TRUE)。)。
$署名を返します。
}
/ **
* @Paramの$携帯電話番号
* @param $ verify_code
* @Param $ templateCode SMSテンプレート
* /
パブリック関数sendTemplateSMS($モバイル、$のverify_code、$ templateCode){
$ paramsは=配列(
'SignName' =>の$ this - > signName、
'フォーマット' => 'JSON'
「バージョン」=>「2017年5月25日」
'AccessKeyId' =>の$ this - > accessKeyId、
'SignatureVersion' => '1.0'、
'のSignatureMethod' => 'HMAC-SHA1'、
'SignatureNonce' => uniqid()、
'タイムスタンプ' => gmdate( 'はYmd \ TH:I:のS \のZ')、
'アクション' => 'SendSms'
'TemplateCode' => $ templateCode、
'の電話番号' => $モバイル、
'TemplateParam' => json_encode($ verify_code)
);
//結果のリクエストパラメータに加え、署名及び署名を計算します
$ paramsは[ '署名'] =の$ this - > computeSignature($ paramsは、の$ this - > accessKeySecret)。
//リクエストを送信する(ここでは修正されました)
// $のURL = 'https://sms.aliyuncs.com/?' http_build_query($ paramsは);
$ URL = 'http://dysmsapi.aliyuncs.com/?' http_build_query($ paramsは);
$ CH = curl_init();
ますcurl_setopt($ chを、CURLOPT_URL、$のURL);
ますcurl_setopt($ chを、CURLOPT_SSL_VERIFYPEER、FALSE);
ますcurl_setopt($ chを、CURLOPT_SSL_VERIFYHOST、FALSE);
ますcurl_setopt($ chを、CURLOPT_RETURNTRANSFER、1);
ますcurl_setopt($ chを、CURLOPT_TIMEOUT、10);
$結果= curl_exec($ chを);
curl_close($ chを);
$結果= json_decode($結果、真の);
//もし(ISSET($結果[ 'コード'])){
//ます$ this->エラー=の$ this - > getErrorMessage($結果[ 'コード']);
//はfalseを返します。
//}
$結果を返します。
}
/ **
*詳細なエラー情報を取得します。
* @param不明$ステータス
* /
パブリック関数getErrorMessage($状態){
// https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450
$メッセージ=配列(
「InvalidDayuStatus.Malformed」=>「メッセージが開いた状態が正しくないアカウント」、
「InvalidSignName.Malformed」=>「メッセージ間違った署名または署名ステータスが、正しくありません」
「InvalidTemplateCode.MalFormed」=>「コードメッセージテンプレートまたはテンプレート不正確な状態が正しくありません」
「InvalidRecNum.Malformed」=>「対象の電話番号が間違っている、単一の伝送は、数100を超えることはできません」、
「InvalidParamString.MalFormed」=>「メッセージテンプレート変数は、JSON形式ではありません」
「InvalidParamStringTemplate.Malformed」=>「メッセージテンプレート変数の内容は、テンプレートと一致しません」
「InvalidSendSms」=>「トラフィックフロー制御トリガ」
「InvalidDayu.Malformed」=>「変数の変数はテンプレートで硬化させることができ、URLすることはできません」
);
IF(ISSET($メッセージ[$状態])){
$メッセージ[$ステータス]を返します。
}
$ステータスを返します。
}
}

おすすめ

転載: www.cnblogs.com/PLasir/p/11447408.html