禾匠商城小程序是一個很好用的微擎禾匠小程序商城!小編對他還是比較了解的,今天小編就以新增短信接口為例,給大家講解一下如何進(jìn)行二次開發(fā),我們今天講解的是2.5版本,使用的短信接口是我們短信寶短信群發(fā)平臺的短信接口,我們短信寶短信群發(fā)平臺的接口非常穩(wěn)定,發(fā)送速度快,注冊就送測試短信,推薦大家使用。
首先打開項(xiàng)目:\zjhj_mall\zjhj_mall\core\modules\mch\views\store\sms.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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
<? php defined('YII_ENV') or exit('Access Denied'); /* @var $sms \app\models\SmsSetting */ $urlManager = Yii::$app->urlManager; $this->title = '短信通知'; $this->params['active_nav_group'] = 1; ?> < div class = "panel" > < div class = "panel-header" ><?= $this->title ?></ div > < div class = "panel-body" > < form method = "post" class = "auto-form" > < p >短信設(shè)置用于用戶下單時,給指定手機(jī)號發(fā)送短信通知。</ p > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >開啟短信提醒</ label > </ div > < div class = "col-sm-6" > < label class = "radio-label" > < input id = "radio2" <?= $sms->status == 0 ? 'checked' : null ?> value="0" name="status" type="radio" class="custom-control-input"> < span class = "label-icon" ></ span > < span class = "label-text" >關(guān)閉</ span > </ label > < label class = "radio-label" > < input id = "radio1" <?= $sms->status == 1 ? 'checked' : null ?> value="1" name="status" type="radio" class="custom-control-input"> < span class = "label-icon" ></ span > < span class = "label-text" >開啟</ span > </ label > </ div > </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >短信寶賬號:</ label > </ div > < div class = "col-sm-6" > <? php if ($sms->AccessKeyId): ?> < div class = "input-hide" > < input class = "form-control" type = "text" name = "AccessKeyId" value="<?= $sms->AccessKeyId ?>"> < div class = "tip-block" >已隱藏短信寶賬號,點(diǎn)擊查看或編輯</ div > </ div > <? php else: ?> < input class = "form-control" type = "text" name = "AccessKeyId" value="<?= $sms->AccessKeyId ?>"> <? php endif; ?> </ div > </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >短信寶密碼:</ label > </ div > < div class = "col-sm-6" > <? php if ($sms->AccessKeyId): ?> < div class = "input-hide" > < input class = "form-control" type = "text" name = "AccessKeySecret" value="<?= $sms->AccessKeySecret ?>"> < div class = "tip-block" >已隱藏短信寶密碼,點(diǎn)擊查看或編輯</ div > </ div > <? php else: ?> < input class = "form-control" type = "text" name = "AccessKeySecret" value="<?= $sms->AccessKeySecret ?>"> <? php endif; ?> </ div > </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >短信簽名</ label > </ div > < div class = "col-sm-6" > < input autocomplete = "off" class = "form-control" type = "text" name = "sign" value="<?= $sms->sign ?>"> </ div > </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >接收短信通知手機(jī)號</ label > </ div > < div class = "col-sm-6" > < input autocomplete = "off" class = "form-control" type = "text" name = "mobile" value="<?= $sms->mobile ?>"> < div class = "fs-sm text-muted" >多個請使用英文逗號< code >,</ code >分隔</ div > </ div > </ div > < div >訂單下單提醒</ div > < div class = "text-muted fs-sm" >例如:模板內(nèi)容:您有一條新的訂單,訂單號:89757,請登錄商城后臺查看。 </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >模板變量</ label > </ div > < div class = "col-sm-6" > < input autocomplete = "off" class = "form-control" type = "text" name = "msg" value="<?= $sms->msg ?>"> < div class = "text-muted fs-sm" >例如:模板內(nèi)容: 您有一個新的訂單,訂單號:${order},則填寫order</ div > < div class = "text-danger fs-sm" >注意:目前只支持設(shè)置訂單號</ div > </ div > </ div > < div >訂單退款提醒</ div > < div class = "text-muted fs-sm" >例如:模板內(nèi)容:您有一條新的退款訂單,請登錄商城后臺查看。 </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >模板變量</ label > </ div > < div class = "col-sm-6" > < input autocomplete = "off" class = "form-control" type = "text" name = "refund[msg]" value="<?= $refund['msg'] ?>"> < div class = "text-muted fs-sm" >例如:模板內(nèi)容: 您有一個新的退款訂單,訂單號:${order},則填寫order</ div > < div class = "text-danger fs-sm" >注意:目前只支持設(shè)置訂單號</ div > </ div > </ div > < div >發(fā)送手機(jī)驗(yàn)證碼</ div > < div class = "text-muted fs-sm" >例如:模板內(nèi)容:您的驗(yàn)證碼為89757,請勿告知他人。</ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > < label class = "col-form-label" >模板變量</ label > </ div > < div class = "col-sm-6" > < input autocomplete = "off" class = "form-control" type = "text" name = "code[msg]" value="<?= $code['msg'] ?>"> < div class = "text-muted fs-sm" >例如:模板內(nèi)容: 您的驗(yàn)證碼為${code},請勿告知他人。,則填寫“code</ div > </ div > </ div > < div class = "form-group row" > < div class = "form-group-label col-sm-2 text-right" > </ div > < div class = "col-sm-6" > < a class = "btn btn-primary auto-form-btn" href = "javascript:" >保存</ a > </ div > </ div > </ form > </ div > </ div > < script > var app = new Vue({ el: "#app", data: { mobile_list: [], mobile: "" } }); </ script > |
接著打開項(xiàng)目:\zjhj_mall\zjhj_mall\core\modules\mch\models\SmsForm.php文件,替換34行左右的代碼:
1
|
[[ 'AccessKeyId' , 'AccessKeySecret' , 'sign' , 'status' , 'mobile' ], 'required' , 'on' => 'SUCCESS' ], |
最后打開項(xiàng)目:\zjhj_mall\zjhj_mall\core\extensions\Sms.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
149
150
151
152
153
154
155
156
157
158
159
160
161
|
<?php namespace app\extensions; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; use Aliyun\Core\DefaultAcsClient; use Aliyun\Core\Profile\DefaultProfile; use app\models\SmsRecord; use app\models\SmsSetting; use Hejiang\Sms\Messages\TemplateMessage; use Hejiang\Sms\Messages\VerificationCodeMessage; use Hejiang\Sms\Senders\AliyunSender; use yii\helpers\ArrayHelper; use yii\helpers\VarDumper; require_once __DIR__. '/alidayu/TopSdk.php' ; class Sms { /** * 發(fā)送短信 * * 短信通知 * @param string $store_id 商鋪ID * @param string $content 內(nèi)容,字符串 * @return array */ public static function sendSms( $user , $pwd , $sign , $mobile , $content ) { $con = '【' . $sign . '】' . $content ; $ret = file_get_contents ( $url ); return $ret ; } public static function send( $store_id , $content = null) { $sms_setting = SmsSetting::findOne([ 'is_delete' => 0, 'store_id' => $store_id ]); if ( $sms_setting ->status == 0) { return [ 'code' => 1, 'msg' => '短信通知服務(wù)未開啟' ]; } $con = str_replace ( '${order}' , $content , $sms_setting ->msg); $res = self::sendSms( $sms_setting ->AccessKeyId, $sms_setting ->AccessKeySecret, $sms_setting ->sign, $sms_setting ->mobile, $con ); if ( $res == 0) { $smsRecord = new SmsRecord(); $smsRecord ->mobile = $sms_setting ->mobile; $smsRecord ->tpl = $sms_setting ->msg; $smsRecord ->content = $con ; $smsRecord ->ip = \Yii:: $app ->request->userIP; $smsRecord ->addtime = time(); $smsRecord ->save(); return [ 'code' => 0, 'msg' => $content ]; } else { return [ 'code' => 2, 'msg' => $res ]; } } /** * 發(fā)送短信 退款通知 * @param string $store_id 商鋪ID * @param string $content 內(nèi)容,字符串 * @return array */ public static function send_refund( $store_id , $content = null) { $sms_setting = SmsSetting::findOne([ 'is_delete' => 0, 'store_id' => $store_id ]); var_dump( $sms_setting ); exit ; if ( $sms_setting ->status == 0) { return [ 'code' => 1, 'msg' => '短信通知服務(wù)未開啟' ]; } $con = str_replace ( '${order}' , $content , $sms_setting ->msg); $res = self::sendSms( $sms_setting ->AccessKeyId, $sms_setting ->AccessKeySecret, $sms_setting ->sign, $sms_setting ->mobile, $con ); if ( $res == 0) { $smsRecord = new SmsRecord(); $smsRecord ->mobile = $sms_setting ->mobile; $smsRecord ->tpl = $sms_setting ->msg; $smsRecord ->content = $con ; $smsRecord ->ip = \Yii:: $app ->request->userIP; $smsRecord ->addtime = time(); $smsRecord ->save(); return [ 'code' => 0, 'msg' => $content ]; } else { return [ 'code' => 2, 'msg' => $res ]; } } public static function send_text( $store_id , $content = null, $mobile ) { $sms_setting = SmsSetting::findOne([ 'is_delete' => 0, 'store_id' => $store_id ]); $mobile_cache = \Yii:: $app ->cache->get( 'mobile_cache' . $mobile ); \Yii:: $app ->cache->set( 'mobile_cache' . $mobile ,true,60); if (! $mobile ){ return [ 'code' =>1, 'msg' => '請輸入手機(jī)號' ]; } $tpl = json_decode( $sms_setting ->tpl_code,true); if (! is_array ( $tpl ) || ! $tpl [ 'msg' ]){ return [ 'code' =>1, 'msg' => '未設(shè)置驗(yàn)證碼短信' ]; } $con = str_replace ( '${code}' , $content , $tpl [ 'msg' ]); $res = self::sendSms( $sms_setting ->AccessKeyId, $sms_setting ->AccessKeySecret, $sms_setting ->sign, $mobile , $con ); \Yii:: $app ->cache->set( 'code_cache' . $mobile , $content ,600); if ( $res == 0) { $smsRecord = new SmsRecord(); $smsRecord ->mobile = $mobile ; $smsRecord ->tpl = $tpl [ 'msg' ]; $smsRecord ->content = $con ; $smsRecord ->ip = \Yii:: $app ->request->userIP; $smsRecord ->addtime = time(); $smsRecord ->save(); return [ 'code' => 0, 'msg' => $content ]; } else { \Yii:: $app ->cache-> delete ( 'mobile_cache' . $mobile ); return [ 'code' => 2, 'msg' => $res ]; } } } |
經(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類
微信類