WSTMall開源商城是一款基于ThinkPHP開發(fā)的多商戶新零售開源系統(tǒng),因為使用的是ThinkPHP框架,所以二次開發(fā)比較容易,小編對此系統(tǒng)還比較了解,今天小編就以替換短信接口為例為大家講解一下如何進行二次開發(fā),我們今天講解的是1.9.5版本,我們使用的短信接口是我們短信寶短信群發(fā)平臺的短信接口,我們短信寶短信群發(fā)平臺非常穩(wěn)定,發(fā)送速度快,推薦大家使用。
因為短信配置是寫在數(shù)據(jù)庫中的所以我們先去修改數(shù)據(jù)庫中的接口信息,我們在項目\Apps\Home\Action 下建一個文件,取名叫SmsbaoAction.class.php,文件代碼為:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?phpnamespace Home\Action;use think\Db;header("Content-type:text/html;charset=utf-8");/*** 短信寶短信插件*/class SmsbaoAction extends BaseAction{ public function smsbao() { $smsbao = M('sys_configs'); $data['fieldName'] = '短信寶賬號'; $smsbao->where('fieldCode="smsKey"')->save($data); echo '短信寶插件安裝成功,請刪除Apps\home\action\SmsbaoAction.class.php文件'; }} |
新建完成后我們需要運行一下修改數(shù)據(jù)庫,我們訪問 域名/index.php?m=home&c=Smsbao&a=smsbao,看到短信寶插件安裝成功,請刪除Apps\home\action\SmsbaoAction.class.php文件 即為修改成功,修改成功我們?nèi)バ薷慕涌诎l(fā)送文件,打開項目\Apps\Common\Common\function.php,添加以下代碼:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * @param string $phoneNumer 手機號碼 * @param string $content 短信內(nèi)容 */function SmsbaoSMS($phoneNumer,$content){ $url = 'http://api.smsbao.com/sms?u='.$GLOBALS['CONFIG']['smsKey'].'&p='.md5($GLOBALS['CONFIG']['smsPass']).'&m='.$phoneNumer.'&c='.$content; $ch=curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設(shè)置否輸出到頁面 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //設(shè)置連接等待時間 curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); $data=curl_exec($ch); curl_close($ch); return $data;} |
另一處短信接口文件,打開項目\Upgrade\Upgrade\Apps\Common\Common\function.php,添加一下代碼:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * @param unknown_type $phoneNumer * @param unknown_type $content */function SmsbaoSMS($phoneNumer,$content){ $url = 'http://api.smsbao.com/sms?u='.$GLOBALS['CONFIG']['smsKey'].'&p='.md5($GLOBALS['CONFIG']['smsPass']).'&m='.$phoneNumer.'&c='.$content; $ch=curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設(shè)置否輸出到頁面 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //設(shè)置連接等待時間 curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); $data=curl_exec($ch); curl_close($ch); return $data;} |
接下來我們?nèi)バ薷恼{(diào)用短信接口的代碼,打開項目\Apps\Home\Model\LogSmsModel.class.php文件,將以下代碼替換:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?phpnamespace Home\Model;/** * ============================================================================ * WSTMall開源商城 * 官網(wǎng)地址:http://www.wstmall.net * 聯(lián)系QQ:707563272 * ============================================================================ * 短信服務(wù)類 */class LogSmsModel extends BaseModel { /** * 插入并發(fā)送短訊記錄 */ public function sendSMS($smsSrc,$phoneNumber,$content,$smsFunc,$verfyCode,$imgVerfy=1){ $USER = session('WST_USER'); $userId = empty($USER)?0:$USER['userId']; $m = M('log_sms'); $ip = get_client_ip(); //檢測短信驗證碼驗證是否正確 if($GLOBALS['CONFIG']['smsVerfy']==1 && $imgVerfy==1){ $smsverfy = I('smsVerfy'); $verify = new \Think\Verify(array('reset'=>false)); $rs = $verify->check($smsverfy); if(!$rs){ return array('status'=>-29999,'msg'=>'驗證碼不正確!'); } } //檢測是否超過每日短信發(fā)送數(shù) $date = date('Y-m-d'); $sql = 'select count(smsId) counts,max(createTime) createTime from __PREFIX__log_sms where smsPhoneNumber='.$phoneNumber.' and createTime>"'.$date.' 00:00:00" and createTime<="'.$date.' 23:59:59"'; $smsRs = $this->queryRow($sql); if($smsRs['counts']>(int)$GLOBALS['CONFIG']['smsLimit']){ return array('status'=>-20000,'msg'=>'請勿頻繁發(fā)送短信驗證!'); } if($smsRs['createTime'] !='' && ((time()-strtotime($smsRs['createTime']))<120)){ return array('status'=>-20001,'msg'=>'請勿頻繁發(fā)送短信驗證!'); } //檢測IP是否超過發(fā)短信次數(shù) $sql = 'select count(smsId) counts,max(createTime) createTime from __PREFIX__log_sms where smsIP="'.$ip.'" and createTime>"'.$date.' 00:00:00" and createTime<="'.$date.' 23:59:59"'; $ipRs = $this->queryRow($sql); if($ipRs['counts']>(int)$GLOBALS['CONFIG']['smsLimit']){ return array('status'=>-20003,'msg'=>'請勿頻繁發(fā)送短信驗證!'); } if($ipRs['createTime']!='' && ((time()-strtotime($ipRs['createTime']))<120)){ return array('status'=>-20004,'msg'=>'請勿頻繁發(fā)送短信驗證!'); } $code = SmsbaoSMS($phoneNumber,$content); $data = array(); $data['smsSrc'] = $smsSrc; $data['smsUserId'] = $userId; $data['smsPhoneNumber'] = $phoneNumber; $data['smsContent'] = $content; $data['smsReturnCode'] = $code; $data['smsCode'] = $verfyCode; $data['smsIP'] = $ip; $data['smsFunc'] = $smsFunc; $data['createTime'] = date('Y-m-d H:i:s'); $m->add($data); if(intval($code) == 0){ return array('status'=>1,'msg'=>'短信發(fā)送成功!'); }else{ return array('status'=>-1,'msg'=>'短信發(fā)送失敗!'); } }} |
好了,經(jīng)過以上的替換,短信寶的短信平臺已經(jīng)替換成功了,我們?nèi)ミM行發(fā)送測試:

報備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,并且免審核了,短信內(nèi)容3~5秒就可送達。
最新更新
電商類
CMS類
微信類