| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 | 
							- <?php
 
- namespace Qiniu\Sms;
 
- use Qiniu\Http\Client;
 
- use Qiniu\Http\Error;
 
- use Qiniu\Config;
 
- use Qiniu\Auth;
 
- class Sms
 
- {
 
-     private $auth;
 
-     private $baseURL;
 
-     public function __construct(Auth $auth)
 
-     {
 
-         $this->auth = $auth;
 
-         $this->baseURL = sprintf("%s/%s/", Config::SMS_HOST, Config::SMS_VERSION);
 
-     }
 
-     /*
 
-      * 创建签名
 
-      * signature: string 类型,必填,【长度限制8个字符内】超过长度会报错
 
-      * source: string   类型,必填,申请签名时必须指定签名来源。取值范围为:
 
-         nterprises_and_institutions 企事业单位的全称或简称
 
-         website 工信部备案网站的全称或简称
 
-         app APP应用的全称或简称
 
-         public_number_or_small_program 公众号或小程序的全称或简称
 
-         store_name 电商平台店铺名的全称或简称
 
-         trade_name 商标名的全称或简称,
 
-      * pics: 本地的图片路径 string 类型,可选
 
-      *@return: 类型array {
 
-         "signature_id": <signature_id>
 
-         }
 
-      */
 
-     public function createSignature($signature, $source, $pics = null)
 
-     {
 
-         $params['signature'] = $signature;
 
-         $params['source'] = $source;
 
-         if (!empty($pics)) {
 
-             $params['pics'] = $this->imgToBase64($pics);
 
-         }
 
-         $body = json_encode($params);
 
-         $url =$this->baseURL.'signature';
 
-         $ret = $this->post($url, $body);
 
-         return $ret;
 
-     }
 
-     /*
 
-     * 编辑签名
 
-     *  id 签名id : string 类型,必填,
 
-     * signature: string 类型,必填,
 
-     * source: string    类型,必填,申请签名时必须指定签名来源。取值范围为:
 
-         enterprises_and_institutions 企事业单位的全称或简称
 
-         website 工信部备案网站的全称或简称
 
-         app APP应用的全称或简称
 
-         public_number_or_small_program 公众号或小程序的全称或简称
 
-         store_name 电商平台店铺名的全称或简称
 
-         trade_name 商标名的全称或简称,
 
-     * pics: 本地的图片路径 string   类型,可选,
 
-     * @return: 类型array {
 
-         "signature": string
 
-         }
 
-     */
 
-     public function updateSignature($id, $signature, $source, $pics = null)
 
-     {
 
-         $params['signature'] = $signature;
 
-         $params['source'] = $source;
 
-         if (!empty($pics)) {
 
-             $params['pics'] = $this->imgToBase64($pics);
 
-         }
 
-         $body = json_encode($params);
 
-         $url =$this->baseURL.'signature/'.$id;
 
-         $ret = $this->PUT($url, $body);
 
-         return $ret;
 
-     }
 
-     /*
 
-  * 查询签名
 
-  * audit_status: 审核状态 string 类型,可选,
 
-    取值范围为: "passed"(通过), "rejected"(未通过), "reviewing"(审核中)
 
-  * page:页码 int  类型,
 
-  * page_size: 分页大小 int 类型,可选, 默认为20
 
-  *@return: 类型array {
 
-     "items": [{
 
-         "id": string,
 
-         "signature": string,
 
-         "source": string,
 
-         "audit_status": string,
 
-         "reject_reason": string,
 
-         "created_at": int64,
 
-         "updated_at": int64
 
-             }...],
 
-     "total": int,
 
-     "page": int,
 
-     "page_size": int,
 
-     }
 
-  */
 
-     public function checkSignature($audit_status = null, $page = 1, $page_size = 20)
 
-     {
 
-         $url = sprintf(
 
-             "%s?audit_status=%s&page=%s&page_size=%s",
 
-             $this->baseURL.'signature',
 
-             $audit_status,
 
-             $page,
 
-             $page_size
 
-         );
 
-         $ret  = $this->get($url);
 
-         return $ret;
 
-     }
 
-     /*
 
-  * 删除签名
 
-  * id 签名id string 类型,必填,
 
-  * @retrun : 请求成功 HTTP 状态码为 200
 
-  */
 
-     public function deleteSignature($id)
 
-     {
 
-         $url = $this->baseURL . 'signature/' . $id;
 
-         list(, $err)  = $this->delete($url);
 
-         return $err;
 
-     }
 
-     /*
 
-     * 创建模板
 
-     * name  : 模板名称 string 类型 ,必填
 
-     * template:  模板内容 string  类型,必填
 
-     * type: 模板类型 string 类型,必填,
 
-       取值范围为: notification (通知类短信), verification (验证码短信), marketing (营销类短信)
 
-     * description:  申请理由简述 string  类型,必填
 
-     * signature_id:  已经审核通过的签名 string  类型,必填
 
-     * @return: 类型 array {
 
-         "template_id": string
 
-                 }
 
-     */
 
-     public function createTemplate(
 
-         $name,
 
-         $template,
 
-         $type,
 
-         $description,
 
-         $signture_id
 
-     ) {
 
-         $params['name'] = $name;
 
-         $params['template'] = $template;
 
-         $params['type'] = $type;
 
-         $params['description'] = $description;
 
-         $params['signature_id'] = $signture_id;
 
-         $body = json_encode($params);
 
-         $url =$this->baseURL.'template';
 
-         $ret = $this->post($url, $body);
 
-         return $ret;
 
-     }
 
-     /*
 
-   * 查询模板
 
-   * audit_status: 审核状态 string 类型 ,可选,
 
-     取值范围为: passed (通过), rejected (未通过), reviewing (审核中)
 
-   * page:  页码 int  类型,可选,默认为 1
 
-   * page_size: 分页大小 int 类型,可选,默认为 20
 
-   * @return: 类型array{
 
-       "items": [{
 
-             "id": string,
 
-             "name": string,
 
-             "template": string,
 
-             "audit_status": string,
 
-             "reject_reason": string,
 
-             "type": string,
 
-             "signature_id": string, // 模版绑定的签名ID
 
-             "signature_text": string, // 模版绑定的签名内容
 
-             "created_at": int64,
 
-             "updated_at": int64
 
-         }...],
 
-         "total": int,
 
-         "page": int,
 
-         "page_size": int
 
-         }
 
-   */
 
-     public function queryTemplate($audit_status = null, $page = 1, $page_size = 20)
 
-     {
 
-         $url = sprintf(
 
-             "%s?audit_status=%s&page=%s&page_size=%s",
 
-             $this->baseURL.'template',
 
-             $audit_status,
 
-             $page,
 
-             $page_size
 
-         );
 
-         $ret  = $this->get($url);
 
-         return $ret;
 
-     }
 
-     /*
 
-     * 编辑模板
 
-     * id :模板id
 
-     * name  : 模板名称 string 类型 ,必填
 
-     * template:  模板内容 string  类型,必填
 
-     * description:  申请理由简述 string  类型,必填
 
-     * signature_id:  已经审核通过的签名 string  类型,必填
 
-     * @retrun : 请求成功 HTTP 状态码为 200
 
-     */
 
-     public function updateTemplate(
 
-         $id,
 
-         $name,
 
-         $template,
 
-         $description,
 
-         $signature_id
 
-     ) {
 
-         $params['name'] = $name;
 
-         $params['template'] = $template;
 
-         $params['description'] = $description;
 
-         $params['signature_id'] = $signature_id;
 
-         $body = json_encode($params);
 
-         $url =$this->baseURL.'template/'.$id;
 
-         $ret = $this->PUT($url, $body);
 
-         return $ret;
 
-     }
 
-     /*
 
-     * 删除模板
 
-     * id :模板id string 类型,必填,
 
-     * @retrun : 请求成功 HTTP 状态码为 200
 
-     */
 
-     public function deleteTemplate($id)
 
-     {
 
-         $url = $this->baseURL . 'template/' . $id;
 
-         list(, $err)  = $this->delete($url);
 
-         return $err;
 
-     }
 
-     /*
 
-     * 发送短信
 
-     * 编辑模板
 
-     * template_id :模板id string类型,必填
 
-     * mobiles   : 手机号数组 []string 类型 ,必填
 
-     * parameters:  模板内容 map[string]string     类型,可选
 
-     * @return: 类型json {
 
-         "job_id": string
 
-         }
 
-     */
 
-     public function sendMessage($template_id, $mobiles, $parameters = null)
 
-     {
 
-         $params['template_id'] = $template_id;
 
-         $params['mobiles'] = $mobiles;
 
-         if (!empty($parameters)) {
 
-             $params['parameters'] = $parameters;
 
-         }
 
-         $body = json_encode($params);
 
-         $url =$this->baseURL.'message';
 
-         $ret = $this->post($url, $body);
 
-         return $ret;
 
-     }
 
-     public function imgToBase64($img_file)
 
-     {
 
-         $img_base64 = '';
 
-         if (file_exists($img_file)) {
 
-             $app_img_file = $img_file; // 图片路径
 
-             $img_info = getimagesize($app_img_file); // 取得图片的大小,类型等
 
-             $fp = fopen($app_img_file, "r"); // 图片是否可读权限
 
-             if ($fp) {
 
-                 $filesize = filesize($app_img_file);
 
-                 if ($filesize > 5*1024*1024) {
 
-                     die("pic size < 5M !");
 
-                 }
 
-                 $content = fread($fp, $filesize);
 
-                 $file_content = chunk_split(base64_encode($content)); // base64编码
 
-                 switch ($img_info[2]) {           //判读图片类型
 
-                     case 1:
 
-                         $img_type = 'gif';
 
-                         break;
 
-                     case 2:
 
-                         $img_type = 'jpg';
 
-                         break;
 
-                     case 3:
 
-                         $img_type = 'png';
 
-                         break;
 
-                 }
 
-                 //合成图片的base64编码
 
-                 $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content;
 
-             }
 
-             fclose($fp);
 
-         }
 
-         return $img_base64;
 
-     }
 
-     private function get($url, $cType = null)
 
-     {
 
-         $rtcToken = $this->auth->authorizationV2($url, "GET", null, $cType);
 
-         $rtcToken['Content-Type'] = $cType;
 
-         $ret = Client::get($url, $rtcToken);
 
-         if (!$ret->ok()) {
 
-             return array(null, new Error($url, $ret));
 
-         }
 
-         return array($ret->json(), null);
 
-     }
 
-     private function delete($url, $contentType = 'application/json')
 
-     {
 
-         $rtcToken = $this->auth->authorizationV2($url, "DELETE", null, $contentType);
 
-         $rtcToken['Content-Type'] = $contentType;
 
-         $ret = Client::delete($url, $rtcToken);
 
-         if (!$ret->ok()) {
 
-             return array(null, new Error($url, $ret));
 
-         }
 
-         return array($ret->json(), null);
 
-     }
 
-     private function post($url, $body, $contentType = 'application/json')
 
-     {
 
-         $rtcToken = $this->auth->authorizationV2($url, "POST", $body, $contentType);
 
-         $rtcToken['Content-Type'] = $contentType;
 
-         $ret = Client::post($url, $body, $rtcToken);
 
-         if (!$ret->ok()) {
 
-             return array(null, new Error($url, $ret));
 
-         }
 
-         $r = ($ret->body === null) ? array() : $ret->json();
 
-         return array($r, null);
 
-     }
 
-     private function PUT($url, $body, $contentType = 'application/json')
 
-     {
 
-         $rtcToken = $this->auth->authorizationV2($url, "PUT", $body, $contentType);
 
-         $rtcToken['Content-Type'] = $contentType;
 
-         $ret = Client::put($url, $body, $rtcToken);
 
-         if (!$ret->ok()) {
 
-             return array(null, new Error($url, $ret));
 
-         }
 
-         $r = ($ret->body === null) ? array() : $ret->json();
 
-         return array($r, null);
 
-     }
 
- }
 
 
  |