微擎是一款免費開源的公眾平臺管理系統,基于web2.0技術架構,他有很多的擴展模塊,萬能表單是一款針對web和微信退出的表單制作插件模塊,實現各行業的報名、預約、加盟申請、調查等應用需求。今天小編就以萬能表單的替換短信接口為例告訴大家如何進行二次開發,使用的短信接口是我們短信寶短信群發平臺的接口,我們短信寶短信群發平臺非常穩定,發送速度快,注冊就送測試短信,推薦大家使用
1:打開項目:addons\dayu_sms\template\setting.html 新增短信寶模塊
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
|
<form action= "" method= "post" class= "form-horizontal" enctype= "multipart/form-data" id= "form1" > <div class= "panel panel-default" > <div class= "panel-heading" > 基礎設置 </div> <div class= "panel-body" > <div class= "form-group" > <label class= "col-xs-12 col-sm-3 col-md-2 control-label" >短信接口</label> <div class= "col-xs-12 col-sm-9" > <div class= "input-group" > <label class= "radio-inline" ><input type= "radio" name= "mode" value= "0" { if $settings[ 'mode' ] == '0' } checked= "checked" {/ if } onclick= "$('#mode_0').show();$('#mode_1').hide();$('#mode_2').hide();$('#mode_3').hide();" /> 云之訊</label> <label class= "radio-inline" ><input type= "radio" name= "mode" value= "1" { if $settings[ 'mode' ] == '1' } checked= "checked" {/ if } onclick= "$('#mode_1').show();$('#mode_0').hide();$('#mode_2').hide();$('#mode_3').hide();" /> 阿里大于</label> <label class= "radio-inline" ><input type= "radio" name= "mode" value= "2" { if $settings[ 'mode' ] == '2' } checked= "checked" {/ if } onclick= "$('#mode_2').show();$('#mode_0').hide();$('#mode_1').hide();$('#mode_3').hide();" /> 阿里云</label> <label class= "radio-inline" ><input type= "radio" name= "mode" value= "3" { if $settings[ 'mode' ] == '3' } checked= "checked" {/ if } onclick= "$('#mode_3').show();$('#mode_0').hide();$('#mode_1').hide();$('#mode_2').hide();" /> 短信寶</label> </div> </div> </div> </div> </div> <div id= "mode_3" { if $settings[ 'mode' ] != '3' } style= "display:none" {/ if }> <div class= "panel panel-default" > <div class= "panel-heading" >短信寶</div> <div class= "panel-body" > <div class= "form-group" > <label class= "col-xs-12 col-sm-3 col-md-2 control-label" >短信寶賬戶</label> <div class= "col-sm-9 col-xs-12" > <input type= "text" name= "smsappkey" placeholder= "" class= "form-control" value= "{$settings['smsbao']['appkey']}" > <span class= "help-block" ></span> </div> </div> <div class= "form-group" > <label class= "col-xs-12 col-sm-3 col-md-2 control-label" >短信寶密碼</label> <div class= "col-sm-9 col-xs-12" > <input type= "text" name= "smssecret" placeholder= "" class= "form-control" value= "{$settings['smsbao']['appsecret']}" > <span class= "help-block" ></span> </div> </div> <div class= "form-group" > <label class= "col-xs-12 col-sm-3 col-md-2 control-label" >簽名</label> <div class= "col-sm-9 col-xs-12" > <input type= "text" name= "smssign" placeholder= "" class= "form-control" value= "{$settings['smsbao']['appsign']}" > <span class= "help-block" ></span> </div> </div> </div> </div> </div> |
2:打開項目:addons\dayu_sms\template\sms.html 大概在90行 修改短信模板設置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<div class= "alert alert-info" style= "width:100%:" > <button type= "button" class= "close" data-dismiss= "alert" >×</button> <h4><i class= "fa fa-comment-o" style= "font-size:2rem" ></i> 提示:<span class= "text-danger" >當前短信接口為【 {$mode} 】</span></h4> { if $setting[ 'sms' ][ 'mode' ]==1} 驗證碼模板:尊敬的${ptname}用戶,您好。您的驗證碼是${code},請注意查收!<br> 注意:product變量為ptname<br> <span class= "text-danger" >阿里大于當前只支持驗證碼,不支持發送通知</span> {elseif $setting[ 'sms' ][ 'mode' ]==3} 驗證碼模板:您好。您的驗證碼是${code},請注意查收!<br> <span class= "text-danger" >短信寶當前只支持驗證碼,不支持發送通知</span> { else } 手機驗證碼模板:歡迎注冊{1}會員,您的驗證碼是:{2} /或/ {1}此次的手機驗證碼是{2} ({1}=公眾號名稱)<br> 通知類短信模板:有新訂單,客戶:{1},手機:{2},內容:{3} /或/ 有新訂單,客戶:{1},手機:{2},標題:{3} {/ if } </div> |
3:打開項目:addons\dayu_sms\module.php 修改保存函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php defined( 'IN_IA' ) or exit( 'Access Denied' ); class dayu_smsModule extends WeModule { public function settingsDisplay($settings) { global $_GPC, $_W; if (checksubmit()) { $data = array( 'sms' => array( 'mode' => $_GPC[ 'mode' ], 'accountsid' => $_GPC[ 'accountsid' ], 'tokenid' => $_GPC[ 'tokenid' ], 'appkey' => $_GPC[ 'appkey' ], 'appsecret' => $_GPC[ 'appsecret' ], 'yxuid' => $_GPC[ 'yxuid' ], 'yxpwd' => $_GPC[ 'yxpwd' ]), 'mode' => $_GPC[ 'mode' ], 'ucpaas' => array( 'accountsid' => $_GPC[ 'accountsid' ], 'tokenid' => $_GPC[ 'tokenid' ]), 'dayu' => array( 'appkey' => $_GPC[ 'dayukey' ], 'appsecret' => $_GPC[ 'dayusecret' ]), 'aliyun' => array( 'appkey' => $_GPC[ 'aliappkey' ], 'appsecret' => $_GPC[ 'alisecret' ])); $data[ 'sendtime' ] = $_GPC[ 'sendtime' ]; if ($ this ->saveSettings($data)) { message( '保存成功' , 'refresh' ); } } $sendtime = !empty($settings[ 'sendtime' ]) ? $settings[ 'sendtime' ] : '1' ; include $ this ->template( 'setting' ); } } |
4:打開項目:addons\dayu_sms\site.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
public function doMobileSendSms() { global $_W, $_GPC; $setting = $ this ->module[ 'config' ]; $id = intval($_GPC[ 'id' ]); $sql = 'SELECT * FROM ' . tablename($ this ->sms_table) . ' WHERE `weid`=:weid AND `id`=:id' ; $params = array(); $params[ ':weid' ] = $_W[ 'uniacid' ]; $params[ ':id' ] = $id; $sms = pdo_fetch($sql, $params); $to = $_GPC[ 'mobile' ]; if ($sms[ 'mode' ] == '0' && $setting[ 'mode' ] == 1 || $sms[ 'mode' ] == '2' ) { include "plugin/TopSdk.php" ; if ($sms[ 'num' ] == 1) { $num = random(6, true ); } else { $num = random(4, true ); } $c = new TopClient(); $c->appkey = $setting[ 'dayu' ][ 'appkey' ]; $c->secretKey = $setting[ 'dayu' ][ 'appsecret' ]; $req = new AlibabaAliqinFcSmsNumSendRequest(); $req->setExtend( "123456" ); $req->setSmsType( "normal" ); $req->setSmsFreeSignName($sms[ 'templateid' ]); $json = json_encode(array( "code" => $num, 'ptname' => $sms[ 'templateid' ])); $req->setSmsParam($json); $req->setRecNum($to); $req->setSmsTemplateCode($sms[ 'appid' ]); $result = $c->execute($req); if ($result->result->err_code == '0' ) { $re[ 'state' ] = 1; $re[ 'yzm' ] = $num; $re[ 'mobile' ] = $to; $re[ 'msg' ] = '驗證碼發送成功' ; } else { $re[ 'state' ] = '0' ; $re[ 'msg' ] = $sms[ 'title' ] . '發送失敗請稍后重試' ; } } elseif ($sms[ 'mode' ] == '0' && $setting[ 'mode' ] == 2 || $sms[ 'mode' ] == '3' ) { include "plugin/alisms/Config.php" ; include_once 'plugin/alisms/Request/V20170525/SendSmsRequest.php' ; include_once 'plugin/alisms/Request/V20170525/QuerySendDetailsRequest.php' ; if ($sms[ 'num' ] == 1) { $num = random(6, true ); } else { $num = random(4, true ); } $accessKeyId = $setting[ 'aliyun' ][ 'appkey' ]; $accessKeySecret = $setting[ 'aliyun' ][ 'appsecret' ]; $product = "Dysmsapi" ; $domain = "dysmsapi.aliyuncs.com" ; $region = "cn-hangzhou" ; $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); DefaultProfile::addEndpoint( "cn-hangzhou" , "cn-hangzhou" , $product, $domain); $acsClient = new DefaultAcsClient($profile); $request = new Dysmsapi\Request\V20170525\SendSmsRequest(); $request->setPhoneNumbers($to); $request->setSignName($sms[ 'appid' ]); $request->setTemplateCode($sms[ 'templateid' ]); $json = json_encode(array( "code" => $num, 'ptname' => $sms[ 'templateid' ])); $request->setTemplateParam($json); $request->setOutId( "1234" ); $acsResponse = $acsClient->getAcsResponse($request); $re[ 'state' ] = 1; $re[ 'yzm' ] = $num; $re[ 'mobile' ] = $to; $re[ 'msg' ] = '驗證碼發送成功' ; } elseif ($sms[ 'mode' ] == '0' && $setting[ 'mode' ] == 3) { //此處為短信發送 if ($sms[ 'num' ] == 1) { $num = random(6, true ); } else { $num = random(4, true ); } $sign = $setting[ 'smsbao' ][ 'appsign' ]; $user = $setting[ 'smsbao' ][ 'appkey' ]; $pass = md5($setting[ 'smsbao' ][ 'appsecret' ]); //短信平臺密碼 $content= '【' .$sign. '】' .str_replace( '${code}' ,$num,$sms[ 'templateid' ]); //要發送的短信內容 $phone = $to; //要發送短信的手機號碼 $sendurl = $smsapi. "sms?u=" .$user. "&p=" .$pass. "&m=" .$phone. "&c=" .urlencode($content); $result =file_get_contents($sendurl) ; if ($result == '0' ) { $re[ 'state' ] = 1; $re[ 'yzm' ] = $num; $re[ 'mobile' ] = $to; $re[ 'msg' ] = '驗證碼發送成功' ; } else { $re[ 'state' ] = '0' ; $re[ 'msg' ] = $sms[ 'title' ] . '發送失敗請稍后重試' ; } } else { include 'plugin/sms.php' ; $re[ 'state' ] = 0; $options[ 'accountsid' ] = $setting[ 'ucpaas' ][ 'accountsid' ]; $options[ 'token' ] = $setting[ 'ucpaas' ][ 'tokenid' ]; $ucpass = new Ucpaas($options); $appId = $sms[ 'appid' ]; $templateId = $sms[ 'templateid' ]; if ($sms[ 'num' ] == 1) { $yzm = rand(999999, 100000); $num = 0; } else { $yzm = rand(9999, 1000); $num = 0; } $param = "{$_W['uniaccount']['name']},{$yzm}" ; $iscg = $ucpass->templateSMS($appId, $to, $templateId, $param); if ($iscg == $num) { if (!empty($options[ 'accountsid' ]) && !empty($options[ 'token' ]) && !empty($appId) && !empty($templateId)) { $re[ 'state' ] = 1; $re[ 'yzm' ] = $yzm; $re[ 'mobile' ] = $to; $re[ 'msg' ] = '驗證碼發送成功' ; } else { $re[ 'msg' ] = '發送失敗,參數設置錯誤' ; } } else { $re[ 'msg' ] = '發送失敗請稍后重試' ; } } $log = pdo_fetch( "SELECT * FROM " . tablename($ this ->table_log) . " WHERE weid = :weid AND openid = :openid LIMIT 1" , array( ':weid' => $_W[ 'uniacid' ], ':openid' => $_W[ 'openid' ])); $setting[ 'sendtime' ] = !empty($setting[ 'sendtime' ]) ? $setting[ 'sendtime' ] : '1' ; $sendtime = time() - $setting[ 'sendtime' ] * 60; if (!empty($log[ 'id' ]) && $log[ 'createtime' ] > $sendtime) { $sendtime = strtotime( "now" ) - $log[ 'createtime' ]; $re[ 'state' ] = '0' ; $re[ 'msg' ] = '發送驗證碼需間隔' . $setting[ 'sendtime' ] . '分鐘,' . $sendtime . '秒后可發送' ; message($re, '' , 'ajax' ); exit; } else { $data[ 'weid' ] = $_W[ 'uniacid' ]; $data[ 'sid' ] = $id; $data[ 'openid' ] = $_GPC[ 'openid' ]; $data[ 'mobile' ] = $to; $data[ 'addons' ] = $_GPC[ 'form' ]; $data[ 'num' ] = $re[ 'yzm' ]; $data[ 'mode' ] = $setting[ 'mode' ]; $data[ 'status' ] = $re[ 'state' ]; $data[ 'createtime' ] = TIMESTAMP; pdo_insert($ this ->table_log, $data); } message($re, '' , 'ajax' ); } |
經過上面的替換,短信寶的短信平臺已經替換成功了,可以正常使用了。進行測試發送:
報備一下短信寶的VIP模板,這樣就可以走短信寶的優質通道了,即便遇到敏感文字我們都不會人工審核,短信內容3~5秒就可送達。
另外:我們已經開發好完整的微擎模塊萬能表單系統短信寶插件,點擊此鏈接?下載及查看安裝流
最新更新
電商類
CMS類
微信類