VIP福利
主页 > 建站问题 > 程序开发 > 适合PbootCMS的阿里云短信发送类

适合PbootCMS的阿里云短信发送类

一款大佬分享的简单方便阿里云短信封装代码,不用官网复杂的SDK,快速上手。 由CMS适配成pbootcms,可以拿来快速制作短信发送功能。 封装代码 ?php /** *@authorCMS88 *阿里云SMS */ namespacecore\sms; usecore\basic\Config; classAliyunSms{ //保存错误信息 public$error; //AccessKeyID private$accessKeyId=; //AccessAccessKeySecret privat […]



一款大佬分享的简单方便阿里云短信封装代码,不用官网复杂的SDK,快速上手。

由CMS适配成pbootcms,可以拿来快速制作短信发送功能。

封装代码


 
  1. <?php
  2. /**
  3.  * @author CMS88
  4.  *  阿里云SMS
  5.  */
  6. namespace core\sms;
  7. use core\basic\Config;
  8. class AliyunSms {
  9.     // 保存错误信息
  10.     public $error;
  11.     // Access Key ID
  12.     private $accessKeyId = '';
  13.     // Access Access Key Secret
  14.     private $accessKeySecret = '';
  15.     // 签名
  16.     private $signName = '';
  17.     // 模版ID
  18.     private $templateCode = '';
  19.     public function __construct() {
  20.         // 配置参数
  21.         $this->accessKeyId = Config::get('sms_appid');
  22.         $this->accessKeySecret = Config::get('sms_secret');
  23.         $this->signName = Config::get('sms_signame');
  24.         $this->templateCode = Config::get('sms_checkcodetpl');
  25.     }
  26.     private function percentEncode($string) {
  27.         $string = urlencode ( $string );
  28.         $string = preg_replace ( '/\+/', '%20', $string );
  29.         $string = preg_replace ( '/\*/', '%2A', $string );
  30.         $string = preg_replace ( '/%7E/', '~', $string );
  31.         return $string;
  32.     }
  33.     /**
  34.      * 签名
  35.      * @param unknown $parameters            
  36.      * @param unknown $accessKeySecret            
  37.      * @return string
  38.      */
  39.     private function computeSignature($parameters, $accessKeySecret) {
  40.         ksort( $parameters );
  41.         $canonicalizedQueryString = '';
  42.         foreach ( $parameters as $key => $value ) {
  43.             $canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value );
  44.         }
  45.         $stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) );
  46.         $signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) );
  47.         return $signature;
  48.     }
  49.     /**
  50.      * @param unknown $mobile            
  51.      * @param unknown $verify_code            
  52.      *
  53.      */
  54.     public function send_verify($mobile, $tpljson) {
  55.         $params = array (
  56.             //此处作了修改
  57.             'SignName' => $this->signName,
  58.             'Format' => 'JSON',
  59.             'Version' => '2017-05-25',
  60.             'AccessKeyId' => $this->accessKeyId,
  61.             'SignatureVersion' => '1.0',
  62.             'SignatureMethod' => 'HMAC-SHA1',
  63.             'SignatureNonce' => uniqid (),
  64.             'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ),
  65.             'Action' => 'SendSms',
  66.             'TemplateCode' => $this->templateCode,
  67.             'PhoneNumbers' => $mobile,
  68.             //'TemplateParam' => '{"code":"' . $verify_code . '"}' 
  69.             'TemplateParam' => $tpljson   //更换为自己的实际模版
  70.         );
  71.         //var_dump($params);die;
  72.         // 计算签名并把签名结果加入请求参数
  73.         $params ['Signature'] = $this->computeSignature( $params, $this->accessKeySecret );
  74.         // 发送请求(此处作了修改)
  75.         //$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params );
  76.         $url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params );
  77.         $result = json_decode( get_url($url) );
  78.         if( isset($result->Code) && $result->Code=='OK' ) {
  79.             return ['code'=>1,'msg'=>$result->Message];
  80.         }else{
  81.             return ['code'=>0,'msg'=>$result->Message];
  82.         }
  83.     }
  84. }

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!