微擎是一款免費(fèi)開源的公眾平臺管理系統(tǒng),基于web2.0技術(shù)架構(gòu),他有很多的擴(kuò)展模塊,萬能表單是一款針對web和微信退出的表單制作插件模塊,實(shí)現(xiàn)各行業(yè)的報(bào)名、預(yù)約、加盟申請、調(diào)查等應(yīng)用需求。今天小編就以萬能表單的替換短信接口為例告訴大家如何進(jìn)行二次開發(fā),使用的短信接口是我們短信寶短信群發(fā)平臺的接口,我們短信寶短信群發(fā)平臺非常穩(wěn)定,發(fā)送速度快,注冊就送測試短信,推薦大家使用
1:打開項(xiàng)目: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"> 基礎(chǔ)設(shè)置 </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:打開項(xiàng)目:addons\dayu_sms\template\sms.html 大概在90行 修改短信模板設(shè)置
|
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">當(dāng)前短信接口為【 {$mode} 】</span></h4> {if $setting['sms']['mode']==1} 驗(yàn)證碼模板:尊敬的${ptname}用戶,您好。您的驗(yàn)證碼是${code},請注意查收!<br> 注意:product變量為ptname<br> <span class="text-danger">阿里大于當(dāng)前只支持驗(yàn)證碼,不支持發(fā)送通知</span> {elseif $setting['sms']['mode']==3} 驗(yàn)證碼模板:您好。您的驗(yàn)證碼是${code},請注意查收!<br> <span class="text-danger">短信寶當(dāng)前只支持驗(yàn)證碼,不支持發(fā)送通知</span> {else} 手機(jī)驗(yàn)證碼模板:歡迎注冊{1}會員,您的驗(yàn)證碼是:{2} /或/ {1}此次的手機(jī)驗(yàn)證碼是{2} ({1}=公眾號名稱)<br> 通知類短信模板:有新訂單,客戶:{1},手機(jī):{2},內(nèi)容:{3} /或/ 有新訂單,客戶:{1},手機(jī):{2},標(biāo)題:{3} {/if} </div> |
3:打開項(xiàng)目:addons\dayu_sms\module.php 修改保存函數(shù)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?phpdefined('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:打開項(xiàng)目:addons\dayu_sms\site.php 修改短信發(fā)送函數(shù)
|
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'] = '驗(yàn)證碼發(fā)送成功'; } else { $re['state'] = '0'; $re['msg'] = $sms['title'] . '發(fā)送失敗請稍后重試'; } } 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'] = '驗(yàn)證碼發(fā)送成功'; } elseif ($sms['mode'] == '0' && $setting['mode'] == 3) { //此處為短信發(fā)送 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']);//要發(fā)送的短信內(nèi)容 $phone = $to;//要發(fā)送短信的手機(jī)號碼 $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'] = '驗(yàn)證碼發(fā)送成功'; } else { $re['state'] = '0'; $re['msg'] = $sms['title'] . '發(fā)送失敗請稍后重試'; } } 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'] = '驗(yàn)證碼發(fā)送成功'; } else { $re['msg'] = '發(fā)送失敗,參數(shù)設(shè)置錯誤'; } } else { $re['msg'] = '發(fā)送失敗請稍后重試'; } } $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'] = '發(fā)送驗(yàn)證碼需間隔' . $setting['sendtime'] . '分鐘,' . $sendtime . '秒后可發(fā)送'; 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'); } |
經(jīng)過上面的替換,短信寶的短信平臺已經(jīng)替換成功了,可以正常使用了。進(jìn)行測試發(fā)送:
報(bào)備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,即便遇到敏感文字我們都不會人工審核,短信內(nèi)容3~5秒就可送達(dá)。
另外:我們已經(jīng)開發(fā)好完整的微擎模塊萬能表單系統(tǒng)短信寶插件,點(diǎn)擊此鏈接?下載及查看安裝流
最新更新
電商類
CMS類
微信類