DBShop企業(yè)級(jí)開(kāi)源商城系統(tǒng),使用PHP語(yǔ)言基于Laminas + Doctrine 2 組合框架開(kāi)發(fā)完成。可定制、多終端、多場(chǎng)景、多支付、多貨幣;嚴(yán)謹(jǐn)?shù)陌踩珯C(jī)制,可靠穩(wěn)定;方便的操作管理,節(jié)約時(shí)間;清晰的權(quán)限分配,責(zé)任分明;便捷的更新處理,一鍵搞定;豐富的插件市場(chǎng),擴(kuò)展無(wú)限。小編帶著大家一起開(kāi)發(fā)DBShopV3.3 Release250922的短信寶插件接口。我們使用的短信接口是我們短信寶短信群發(fā)平臺(tái)的短信接口,我們短信寶短信群發(fā)平臺(tái)非常穩(wěn)定,發(fā)送速度快,注冊(cè)就送測(cè)試短信,推薦大家使用。
1.首先打開(kāi)項(xiàng)目module\Admin\src\Data\Common.php 文件,在586行增加以下代碼
|
1
|
'smsbao'=> $translator->translate('短信寶'), |
2.接著打開(kāi)項(xiàng)目module\Admin\src\Service\Common\PhoneSms 目錄,增加Smsbao.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
|
<?phpnamespace Admin\Service\Common\PhoneSms;use Admin\Data\Common;use Laminas\Json\Json;class Smsbao{ private $smsConfig; /** * 設(shè)置短信 * @param $smsConfig * @throws ClientException */ public function setSmsConfig($smsConfig) { $this->smsConfig = $smsConfig; } /** * 發(fā)送短信 * @param array $data * @return bool */ public function sendPhoneSms(array $data) { $smsContent = $this->getSmsContent($data['typeCode'], $data['contentArray'], $data['templateCode']); if (empty($smsContent)) return; if (empty($data['phone'])) return; foreach ($data['phone'] as $phoneValue) { $this->sendSmsbao($phoneValue['number'], $smsContent); } } /** * 發(fā)送訂單短信 * @param array $data * @return bool */ public function sendOrderPhoneSms(array $data) { $smsContent = $this->getSmsContent($data['typeCode'], $data['contentArray'], $data['templateCode']); if (empty($smsContent)) return; if (empty($data['phone'])) return; foreach ($data['phone'] as $phoneValue) { $this->sendSmsbao($phoneValue['number'], $smsContent); } } /** * 發(fā)送短信方法 * @param $phone * @param $content * @return array|bool|string|null */ private function sendSmsbao($phone, $content) { $statusStr = array( "0" => "短信發(fā)送成功", "-1" => "參數(shù)不全", "-2" => "服務(wù)器空間不支持,請(qǐng)確認(rèn)支持curl或者fsocket,聯(lián)系您的空間商解決或者更換空間!", "30" => "密碼錯(cuò)誤", "40" => "賬號(hào)不存在", "41" => "余額不足", "42" => "帳戶(hù)已過(guò)期", "43" => "IP地址限制", "50" => "內(nèi)容含有敏感詞", "51" => "手機(jī)號(hào)碼不正確" ); try { $user = $this->smsConfig['sms_id']; $pass = $this->smsConfig['sms_secret']; $content = '【'.$this->smsConfig['sms_sign_name'].'】'.$content; $sendurl = $this->sendUrl."u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content); $result = $this->curl_get($sendurl); return $statusStr[$result]; } catch (\Exception $e) { return null; } return null; } private function curl_get($sendurl){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $sendurl); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } /** * 獲取短信內(nèi)容 * @param $type * @param $data * @param $templateCode * @return string */ private function getSmsContent($type, $data, $templateCode) { $TemplateCodeContent = ''; switch ($type) { case 'captcha': $TemplateCodeContent = str_replace('{code}', $data['phoneCaptcha'], $templateCode); break; case 'addOrder': $TemplateCodeContent = str_replace(['{buyName}', '{orderSn}', '{orderTotal}'], [$data['buyName'], $data['orderSn'], $data['orderTotal']], $templateCode); break; case 'cancelOrder': $TemplateCodeContent = str_replace(['{buyName}', '{orderSn}', '{orderTotal}'], [$data['buyName'], $data['orderSn'], $data['orderTotal']], $templateCode); break; case 'paymentOrder': $TemplateCodeContent = str_replace(['{buyName}', '{orderSn}', '{orderTotal}'], [$data['buyName'], $data['orderSn'], $data['orderTotal']], $templateCode); break; case 'shipOrder': $TemplateCodeContent = str_replace(['{buyName}', '{orderSn}', '{orderTotal}', '{deliveryName}', '{expressNumber}'], [$data['buyName'], $data['orderSn'], $data['orderTotal'], $data['deliveryName'], $data['expressNumber']], $templateCode); break; case 'receiptOrder': $TemplateCodeContent = str_replace(['{buyName}', '{orderSn}', '{orderTotal}', '{deliveryName}', '{expressNumber}'], [$data['buyName'], $data['orderSn'], $data['orderTotal'], $data['deliveryName'], $data['expressNumber']], $templateCode); break; } return $TemplateCodeContent; }} |
3.接著替換module\Admin\view\admin\message-notification\index.phtml 文件
|
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
149
150
151
152
153
154
155
156
157
|
<div class="content-wrapper"> <?php $form = $this->form; $form->prepare(); ?> <?php echo $this->form()->openTag($form); ?> <section class="content-header"> <?php echo $this->partial('layout/breadcrumb'); ?> <h1 class="pull-right" id="dbshop-menu-top"> <button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-check"></i> <?php echo $this->translate('保存設(shè)置'); ?></button> <?php echo $this->HelpUrl('phoneMessage'); ?> </h1> </section> <section class="content"> <div class="row"> <div class="col-md-12"> <div class="nav-tabs-custom"> <ul class="nav nav-tabs"> <li class="active"><a href="#tab_1" data-toggle="tab"><?php echo $this->translate('管理員提醒'); ?></a></li> <li><a href="#tab_2" data-toggle="tab"><?php echo $this->translate('訂單提醒'); ?></a></li> <li><a href="#tab_3" data-toggle="tab"><?php echo $this->translate('其他提醒'); ?></a></li> </ul> <div class="tab-content"> <?php echo $this->partial('layout/messages'); ?> <div class="tab-pane active" id="tab_1"> <div class="box-body"> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('管理員手機(jī)號(hào)碼'); ?></label> <?php if(count($this->phoneArea) == 1) { ?> <div class="col-sm-3"> <?php echo $this->formElement($form->get('areaCode')); ?> <?php echo $this->formElementErrors($form->get('areaCode'), ['class'=>'error-message']); ?> <?php echo $this->formElement($form->get('adminPhone')); ?> <?php echo $this->formElementErrors($form->get('adminPhone'), ['class'=>'error-message']); ?> </div> <?php } else { ?> <div class="col-sm-2"> <?php echo $this->formElement($form->get('areaCode')); ?> <?php echo $this->formElementErrors($form->get('areaCode'), ['class'=>'error-message']); ?> </div> <div class="col-sm-3"> <?php echo $this->formElement($form->get('adminPhone')); ?> <?php echo $this->formElementErrors($form->get('adminPhone'), ['class'=>'error-message']); ?> </div> <?php } ?> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('接收短信'); ?></label> <div class="col-sm-6"> <?php echo $this->formElement($form->get('adminPhoneSend')); ?> <?php echo $this->formElementErrors($form->get('adminPhoneSend'), ['class'=>'error-message']); ?> </div> </div> </div> </div> <div class="tab-pane" id="tab_2"> <div class="box-body"> <div class="alert alert-info alert-dismissible"> <?php if($this->smsConfig['sms_service_provider'] == 'aliSms') { ?>目前官方提供的可設(shè)置標(biāo)簽有 ${buyName} 購(gòu)買(mǎi)人、${orderSn} 訂單編號(hào)、${orderTotal} 訂單金額、${deliveryName} 快遞名稱(chēng)、${expressNumber} 快遞單號(hào)<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {buyName} 購(gòu)買(mǎi)人、{orderSn} 訂單編號(hào)、{orderTotal} 訂單金額、{deliveryName} 快遞名稱(chēng)、{expressNumber} 快遞單號(hào)。<br>互億短信服務(wù)已內(nèi)置模板,模板ID只需要填寫(xiě)1,不為空即是啟用。<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {1} 購(gòu)買(mǎi)人、{2} 訂單編號(hào)、{3} 訂單金額、{4} 快遞名稱(chēng)、{5} 快遞單號(hào)<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {buyName} 購(gòu)買(mǎi)人、{orderSn} 訂單編號(hào)、{orderTotal} 訂單金額、{deliveryName} 快遞名稱(chēng)、{expressNumber} 快遞單號(hào)。<?php } ?> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('訂單提交模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('addOrderSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('addOrderSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:親愛(ài)的{buyName},您的訂單已提交,訂單金額為{orderTotal},請(qǐng)及時(shí)進(jìn)行后續(xù)處理<?php } ?> </p> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('訂單付款模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('paymentOrderSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('paymentOrderSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:親愛(ài)的{buyName},您的訂單{orderSn},金額{orderTotal},已經(jīng)付款完成<?php } ?> </p> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('訂單發(fā)貨模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('shipOrderSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('shipOrderSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:親愛(ài)的{buyName},您的訂單{orderSn},已由快遞{deliveryName}發(fā)出,快遞單號(hào){expressNumber}<?php } ?> </p> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('訂單收貨模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('receiptOrderSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('receiptOrderSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:親愛(ài)的{buyName},您的訂單{orderSn},已經(jīng)簽收<?php } ?> </p> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('訂單取消模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('cancelOrderSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('cancelOrderSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:親愛(ài)的{buyName},您的訂單{orderSn},已經(jīng)取消<?php } ?> </p> </div> </div> </div> <div class="tab-pane" id="tab_3"> <div class="box-body"> <div class="alert alert-info alert-dismissible"> <?php echo $this->translate('用戶(hù) 注冊(cè)、登錄 驗(yàn)證碼,除了啟用 短信服務(wù),還需要在 客戶(hù)設(shè)置 勾選 手機(jī)號(hào)碼和手機(jī)驗(yàn)證碼。互億短信服務(wù)已內(nèi)置模板,模板ID只需要填寫(xiě)1,不為空即是啟用。'); ?> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('驗(yàn)證碼模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('captchaSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('captchaSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'aliSms') { ?>${code} 驗(yàn)證碼<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>{code} 驗(yàn)證碼<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:您的驗(yàn)證碼:{code},15分鐘內(nèi)有效,請(qǐng)勿將驗(yàn)證碼泄露給他人,如非本人操作請(qǐng)忽略<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>{1} 驗(yàn)證碼<?php } ?> </p> </div> <div class="form-group"> <label class="col-sm-2 control-label"><?php echo $this->translate('后臺(tái)余額變更模板ID'); ?></label> <div class="col-sm-3"> <?php echo $this->formElement($form->get('balanceSmsTemplateId')); ?> <?php echo $this->formElementErrors($form->get('balanceSmsTemplateId'), ['class'=>'error-message']); ?> </div> <p class="form-control-static small"> <?php if($this->smsConfig['sms_service_provider'] == 'aliSms') { ?>${userName} 客戶(hù)名稱(chēng)、${changeTime} 變動(dòng)時(shí)間、${changeAmountType} 變動(dòng)類(lèi)型、${changeUserAmount} 變動(dòng)金額、${userAmount} 變動(dòng)后總額<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>需自行添加 短信模板。<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>{userName} 客戶(hù)名稱(chēng)、{changeTime} 變動(dòng)時(shí)間、{changeAmountType} 變動(dòng)類(lèi)型、{changeUserAmount} 變動(dòng)金額、{userAmount} 變動(dòng)后總額<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>{1} 客戶(hù)名稱(chēng)、{2} 變動(dòng)時(shí)間、{3} 變動(dòng)類(lèi)型、{4} 變動(dòng)金額、{5} 變動(dòng)后總額<?php } ?> </p> </div> </div> </div> </div> </div> </div> </div> </section> <?php echo $this->form()->closeTag(); ?></div> |
好了經(jīng)過(guò)以上的添加,短信寶的短信平臺(tái)已經(jīng)替換成功了,可以正常使用了

報(bào)備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,即便遇到敏感文字我們都不會(huì)人工審核,短信內(nèi)容3~5秒就可送達(dá)。
另外:我們已經(jīng)開(kāi)發(fā)好完整的DBShop商城系統(tǒng)短信寶插件,點(diǎn)擊此鏈接 下載及查看安裝流程。
最新更新
電商類(lèi)
CMS類(lèi)
微信類(lèi)