DBShop企業(yè)級開源商城系統(tǒng),使用PHP語言基于Laminas + Doctrine 2 組合框架開發(fā)完成。可定制、多終端、多場景、多支付、多貨幣;嚴(yán)謹(jǐn)?shù)陌踩珯C(jī)制,可靠穩(wěn)定;方便的操作管理,節(jié)約時間;清晰的權(quán)限分配,責(zé)任分明;便捷的更新處理,一鍵搞定;豐富的插件市場,擴(kuò)展無限。小編帶著大家一起開發(fā)DBShopV3.3 Release250922的短信寶插件接口。我們使用的短信接口是我們短信寶短信群發(fā)平臺的短信接口,我們短信寶短信群發(fā)平臺非常穩(wěn)定,發(fā)送速度快,注冊就送測試短信,推薦大家使用。
1.首先打開項目module\Admin\src\Data\Common.php 文件,在586行增加以下代碼
|
1
|
'smsbao'=> $translator->translate('短信寶'), |
2.接著打開項目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ù)器空間不支持,請確認(rèn)支持curl或者fsocket,聯(lián)系您的空間商解決或者更換空間!", "30" => "密碼錯誤", "40" => "賬號不存在", "41" => "余額不足", "42" => "帳戶已過期", "43" => "IP地址限制", "50" => "內(nèi)容含有敏感詞", "51" => "手機(jī)號碼不正確" ); 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ī)號碼'); ?></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} 購買人、${orderSn} 訂單編號、${orderTotal} 訂單金額、${deliveryName} 快遞名稱、${expressNumber} 快遞單號<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {buyName} 購買人、{orderSn} 訂單編號、{orderTotal} 訂單金額、{deliveryName} 快遞名稱、{expressNumber} 快遞單號。<br>互億短信服務(wù)已內(nèi)置模板,模板ID只需要填寫1,不為空即是啟用。<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {1} 購買人、{2} 訂單編號、{3} 訂單金額、{4} 快遞名稱、{5} 快遞單號<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>目前官方提供的可設(shè)置標(biāo)簽有 {buyName} 購買人、{orderSn} 訂單編號、{orderTotal} 訂單金額、{deliveryName} 快遞名稱、{expressNumber} 快遞單號。<?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') { ?>模板示例:親愛的{buyName},您的訂單已提交,訂單金額為{orderTotal},請及時進(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') { ?>模板示例:親愛的{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') { ?>模板示例:親愛的{buyName},您的訂單{orderSn},已由快遞{deliveryName}發(fā)出,快遞單號{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') { ?>模板示例:親愛的{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') { ?>模板示例:親愛的{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('用戶 注冊、登錄 驗證碼,除了啟用 短信服務(wù),還需要在 客戶設(shè)置 勾選 手機(jī)號碼和手機(jī)驗證碼。互億短信服務(wù)已內(nèi)置模板,模板ID只需要填寫1,不為空即是啟用。'); ?> </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('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} 驗證碼<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>{code} 驗證碼<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>模板示例:您的驗證碼:{code},15分鐘內(nèi)有效,請勿將驗證碼泄露給他人,如非本人操作請忽略<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>{1} 驗證碼<?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('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} 客戶名稱、${changeTime} 變動時間、${changeAmountType} 變動類型、${changeUserAmount} 變動金額、${userAmount} 變動后總額<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'huyiSms') { ?>需自行添加 短信模板。<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'smsbao') { ?>{userName} 客戶名稱、{changeTime} 變動時間、{changeAmountType} 變動類型、{changeUserAmount} 變動金額、{userAmount} 變動后總額<?php } ?> <?php if($this->smsConfig['sms_service_provider'] == 'tencentSms') { ?>{1} 客戶名稱、{2} 變動時間、{3} 變動類型、{4} 變動金額、{5} 變動后總額<?php } ?> </p> </div> </div> </div> </div> </div> </div> </div> </section> <?php echo $this->form()->closeTag(); ?></div> |
好了經(jīng)過以上的添加,短信寶的短信平臺已經(jīng)替換成功了,可以正常使用了

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