# 三竹簡訊 php串接 composer require jackcc/sms $sms = Sms(['username' => '', 'password' => '']); $sms->send('0912345678', '王小明', '訊息'); ```php= <?php namespace Jack\Sms; use Exception; class Sms { private $username; private $password; function __construct($set) { $this->username = $set['username']; $this->password = $set['password']; } protected function loginCheck() { if (empty($this->username)) throw new Exception("請設定帳號"); if (empty($this->password)) throw new Exception("請設定密碼"); } public function send($phone, $name, $msg) { try { $this->loginCheck(); if (!preg_match("/^09[0-9]{8}$/", $phone)) { return array( 'msgid' => '', 'statuscode' => 'v', 'statusmsg' => '手機格式錯誤', 'AccountPoint' => '' ); } $g = array( 'username' => $this->username, 'password' => $this->password, 'dstaddr' => $phone, 'destname' => mb_convert_encoding($name,"big5","utf-8"), 'dlvtime' => '', 'vldtime' => '', 'smbody' => mb_convert_encoding($msg,"big5","utf-8"), 'response' => urlencode($this->callback) ); $url = 'http://smsapi.mitake.com.tw/api/mtk/SmSend?'.http_build_query($g); $rs = file_get_contents($url); return $this->rs_decode($rs); } catch(Exception $e) { echo $e->getMessage(); } } public function info($msgid) { try { $this->loginCheck(); $g = array( 'username' => $this->username, 'password' => $this->password, 'msgid' => $msgid, ); $url = 'http://smsapi.mitake.com.tw/api/mtk/SmQuery?'.http_build_query($g); $rs = file_get_contents($url); $r = explode("\r\n", $rs); $data = array(); foreach ($r as $key => $value) { if (empty($value)) continue; $re = explode(' ', $value); $data[] = array( 'msgid' => $re[0], 'status' => $re[1], 'time' => $re[2], 'msg' => $this->status_code($re[1]), ); } return $data; } catch(Exception $e) { echo $e->getMessage(); } } private function rs_decode($rs) { $receiveDataArray = explode("\r\n", $rs); $msgidArray = explode("=", $receiveDataArray[1]); $statuscodeArray = explode("=", $receiveDataArray[2]); $accountPointArray = explode("=", $receiveDataArray[3]); $statuscode = $statuscodeArray[1]; //傳送結果狀態代碼 $accountPoint = $accountPointArray[1]; //帳號目前所剩點數 return array( 'msgid' => $msgidArray[1], 'statuscode' => $statuscodeArray[1], 'statusmsg' => $this->status_code($statuscodeArray[1]), 'AccountPoint' => $accountPointArray[1] ); } private function status_code($code) { $status_msg = array( '*' => '系統發⽣錯誤,請聯絡三⽵資訊窗⼝⼈員', 'a' => '簡訊發送功能暫時停⽌服務,請稍候再試', 'b' => '簡訊發送功能暫時停⽌服務,請稍候再試', 'c' => '請輸入帳號', 'd' => '請輸入密碼', 'e' => '帳號、密碼錯誤', 'f' => '帳號已過期', 'h' => '帳號已被停⽤', 'l' => '帳號已達到同時連線數上限', 'm' => '必須變更密碼,在變更密碼前,無法使⽤簡訊發送服務', 'n' => '密碼已逾期,在變更密碼前,將無法使⽤簡訊發送服務', 'p' => '沒有權限使⽤外部Http程式', 'r' => '系統暫停服務,請稍後再試', 's' => '帳務處理失敗,無法發送簡訊', 't' => '簡訊已過期', 'u' => '簡訊內容不得為空⽩', 'v' => '無效的⼿機號碼', 'w' => '查詢筆數超過上限', 'x' => '發送檔案過⼤,無法發送簡訊', 'y' => '參數錯誤', 'z' => '查無資料', '0' => '預約傳送中', '1' => '已送達業者', '2' => '已送達業者', '4' => '已送達⼿機', '5' => '內容有錯誤', '6' => '⾨號有錯誤', '7' => '簡訊已停⽤', '8' => '逾時無送達', '9' => '預約已取消' ); return $status_msg[$code]; } } ```