NIUSHOPV5.4.6 采用 ThinkPHP6.0 + MySQL 開發語言框架采用 Thinkphp6 + Uni-app 設計開發,代碼全新升級;支持實物商品、虛擬商品、電子卡密、服務項目及卡項套餐五大商品類型;支持拼團、砍價、秒殺、超級會員卡、禮品卡、分銷、直播等多種會員營銷方案。完全開源,二次開發非常方便,小編對他還是比較了解的,今天小編為大家講解 V5.4.6 版本的短信接口替換,使用的接口是我們短信寶群發平臺的短信接口,我們短信寶群發短信平臺非常穩定,發送速度快,注冊還送測試短信,推薦大家使用。
├─smsbao插件目錄
│ ├─config 配置目錄
│ │ ├─diy_view.php 頁面DIY相關配置
│ │ ├─event.php 事件相關配置
│ │ ├─info.php 插件信息配置
│ │ ├─menu_shop.php 菜單欄配置
│ ├─event 事件目錄
│ │ ├─ DoEditSmsMessage.php 短信模板事件
│ │ ├─EnableCallBack.php 短信開關事件
│ │ ├─EnableSms.php 查詢啟用的短信插件
│ │ ├─Install.php 應用安裝
│ │ ├─SendSms.php 短信發送
│ │ ├─SmsType.php 短信方式
│ │ ├─UnInstall.php 應用卸載
│ └─model
│ │ ├─Config.php 短信核心配置
│ │ ├─Sms.php 核心發送類
│ └─shop
│ │ ├─controller 控制器
│ │ │ ├─Message.php 模板編輯類
│ │ │ ├─ Sms.php 核心發送類
│ │ ├─view 視圖
│ │ │ ├─message 模板編輯類
│ │ │ │ ├─edit.html 模板視圖
│ │ │ ├─ sms 核心發送類
│ │ │ │ ├─config.html 短信視圖
下面具體給大家說一下重要文件的作用及代碼
1:打開項目:addon\smsbao\config\info.php 填寫當前插件的基本信息
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php return ?[ ???? 'name' ?=>? 'smsbao' , ???? 'title' ?=>? '短信寶短信' , ???? 'description' ?=>? '短信寶短信功能' , ???? 'type' ?=>? 'system' ,? //插件類型??system?:系統插件(自動安裝),?business:業務插件????promotion:營銷插件??tool:工具插件 ???? 'status' ?=>?1, ???? 'author' ?=>? '' , ???? 'version' ?=>? '5.0.3' , ???? 'version_no' ?=>? '520220907001' , ???? 'content' ?=>? '' , ]; |
2:打開項目:addon\smsbao\config\event.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
|
<?php //?事件定義文件 return ?[ ???? 'bind' ?=>?[ ???? ], ???? 'listen' ?=>?[ ??????? //短信方式 ???????? 'SmsType' ??????????=>?[ ???????????? 'addon\smsbao\event\SmsType' ???????? ], ???????? 'DoEditSmsMessage' ?=>?[ ???????????? 'addon\smsbao\event\DoEditSmsMessage' ???????? ], ???????? 'SendSms' ??????????=>?[ ???????????? 'addon\smsbao\event\SendSms' ???????? ], ???????? //啟用回調,使用這個短信,就要關閉其他短信插件 ???????? 'EnableCallBack' ??????????=>?[ ???????????? 'addon\smsbao\event\EnableCallBack' ???????? ], ???????? //查詢啟用的短信插件 ???????? 'EnableSms' ?=>?[ ???????????? 'addon\smsbao\event\EnableSms' ???????? ], ???????? 'SmsTemplateInfo' ?=>?[ ???????????? 'addon\smsbao\event\SmsTemplateInfo' ???????? ] ???? ], ???? 'subscribe' ?=>?[ ???? ], ]; |
3:打開項目:\addon\smsbao\model\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
|
class?Sms?extends?BaseModel { ???? /** ????? *?短信發送 ????? *?@param?array?$param ????? *?@return?array|mixed ????? *?@throws?InvalidArgumentException ????? */ ???? public? function ?send($param?=?[]) ???? { ???????? $config_model?=? new ?Config(); ???????? $config_result?=?$config_model->getSmsConfig(); ???????? if ?($config_result[? "data" ?][? "is_use" ?])?{ ???????????? $config?=?$config_result[? "data" ?][? "value" ?]; ???????????? $sms_info?=?$param[? "message_info" ?][? "sms_json_array" ?]; //消息類型模板?短信模板信息 ???????????? if ?(empty($sms_info[? "smsbao" ?]))? return ?$ this ->error([],? "消息模板尚未配置" ); ???????????? $sms_info?=?$sms_info[? "smsbao" ?]; ???????????? $var_parse?=?$param[? "var_parse" ?]; //變量解析 ???????????? $smscontent?=?$sms_info[ 'content' ]; ???????????? foreach?($var_parse?as?$k=>$v){ ???????????????? $smscontent=str_replace( '{' .$k. '}' ,$v,$smscontent); ???????????? } ???????????? $account?=?$param[? "sms_account" ?]; //發送手機號 ???????????? $sms_config?=?[ ???????????????? //?HTTP?請求的超時時間(秒) ???????????????? 'timeout' ?=>?5.0, ???????????????? //?默認發送配置 ???????????????? 'default' ?=>?[ ???????????????????? //?網關調用策略,默認:順序調用 ???????????????????? 'strategy' ?=>?OrderStrategy::class, ???????????????????? //?默認可用的發送網關 ???????????????????? 'gateways' ?=>?[? 'smsbao' ?], ???????????????? ], ???????????????? //?可用的網關配置 ???????????????? 'gateways' ?=>?[ ???????????????????? "smsbao" ?=>?[ ???????????????????????? 'user' ?=>?$config[? "smsbao_key_id" ?], ???????????????????????? 'password' ?=>?$config[? "smsbao_key_secret" ?], ???????????????????? ] ???????????????? ], ???????????? ]; ???????????? try ?{ ???????????????? $easySms?=? new ?EasySms($sms_config); ???????????????? $easySms->send($account,?[ ???????????????????? 'content' ??=>? '【' .$config[? "smsbaosign" ?]. '】' .$smscontent, //????????????????????'template'?=>?$sms_info[?"template_id"?], ???????????????????? 'data' ?=>?$var_parse, ???????????????? ]); ???????????????? return ?$ this ->success([? "addon" ?=>? "smsbao" ,? "addon_name" ?=>? "短信寶短信" ,? "content" ?=>?$sms_info[? "content" ?]?]); ???????????? }? catch ?(NoGatewayAvailableException?$exception)?{ ???????????????? $message?=?$exception->getException( 'smsbao' )->getMessage(); ???????????????? return ?$ this ->error([? "content" ?=>?$sms_info[? "content" ?]?],?$message???:? '短信發送異常' ); ???????????? } ???????? } ???? } } |
4:打開項目:addon\smsbao\shop\view\message\edit.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
<div?class= "layui-form?form-wrap" > ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >是否開啟:</label> ?????? <div?class= "layui-input-block" > ????????? <input?type= "checkbox" ?name= "sms_is_open" ?value= "1" ?{ if ?$sms_is_open?==?1}checked{/ if }?lay-skin= "switch" > ?????? </div> ??? </div> ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >數據值:</label> ?????? <div?class= "layui-input-block" > ????????? {foreach?$message_variable_list?as?$message_variable_k?=>?$message_variable_v} ????????? <button?class= "layui-btn?layui-btn-primary?number-con" ?onclick= "clickBtn('{$message_variable_k}')" >{$message_variable_v}</button> ????????? {/foreach} ?????? </div> ??? </div> ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >短信內容:</label> ?????? <div?class= "layui-input-block" > ????????? <textarea?id= "text_area" ?name= "content" ?class= "layui-textarea?len-long" >{ if ?!empty($info)}{$info.content}{/ if }</textarea> ?????? </div> ?????? <div?class= "word-aux" >變量只能使用上方數據值中的變量,否則不會被解析</div> ??? </div> ??? ??? <div?class= "form-row" > ?????? <button?class= "layui-btn" ?lay-submit?lay-filter= "save" >保存</button> ?????? <button?class= "layui-btn?layui-btn-primary" ?onclick= "back()" >返回</button> ??? </div>???????? ??? <input?type= "hidden" ?name= "keywords" ?value= "{$keywords}" > </div> <script> ??? layui.use( 'form' ,? function ()?{ ?????? var ?form?=?layui.form; ?????? var ?repeat_flag?=? false ;? //防重復標識 ?????? form.render(); ?????? /** ??????? *?監聽提交 ??????? */ ?????? form.on( 'submit(save)' ,? function (data)?{ ????????? if ?(repeat_flag)? return ; ????????? repeat_flag?=? true ; ????????? ????????? $.ajax({ ???????????? dataType:? 'JSON' , ???????????? type:? 'POST' , ???????????? data:?data.field, ???????????? success:? function (res){ ??????????????? repeat_flag?=? false ; ??????????????? ??????????????? if ?(res.code?==?0)?{ ?????????????????? layer.confirm( '編輯成功' ,?{ ????????????????????? title: '操作提示' , ????????????????????? btn:?[ '返回列表' ,? '繼續操作' ], ????????????????????? yes:? function (){ ???????????????????????? location.href?=?ns.url( "shop/message/lists" ) ????????????????????? }, ????????????????????? btn2:? function ()?{ ???????????????????????? location.reload(); ????????????????????? } ?????????????????? }); ??????????????? } else { ?????????????????? layer.msg(res.message); ??????????????? } ???????????? } ????????? }); ?????? }); ??? }); ??? ??? function ?back(){ ?????? location.href?=?ns.url( "shop/message/lists" ); ??? } ??? ??? function ?clickBtn(con)?{ ?????? var ?txtArea?=?$( "#text_area" )[0]; ?????? var ?content?=?txtArea.value; //文本域內容 ?????? var ?start?=?txtArea.selectionStart;?? //光標的初始位置,selectionStart:選區開始位置;selectionEnd:選區結束位置。 ?????? ?????? txtArea.value?=?content.substring(0,?txtArea.selectionStart)?+? '{' ?+?con?+? '}' ?+?content.substring(txtArea.selectionEnd,?content.length); ?????? var ?position?=?start?+?con.length; ?????? $( "#text_area" ).focus(); ?????? txtArea.setSelectionRange(position+1,?position+1);? //setSelectionRange()方法用來設置<input>元素當前選中的文本的開始和結束位置 ??? } </script> |
5:打開項目:addon\smsbao\shop\view\sms\config.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
64
65
66
67
68
69
70
71
|
<div?class= "layui-form?form-wrap" > ???? <div?class= "layui-form-item" > ???????? <label?class= "layui-form-label" >是否開啟:</label> ???????? <div?class= "layui-input-block" ?id= "isOpen" > ????????? <input?type= "checkbox" ?name= "status" ?lay-filter= "isOpen" ?value= "1" ?lay-skin= "switch" ?{ if ?condition= "$info.is_use?==?1" }?checked?{/ if }?/> ???????? </div> ?????? <div?class= "word-aux" >當前使用短信寶配置</div> ???? </div> ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >短信寶賬號:</label> ?????? <div?class= "layui-input-block" > ????????? <input?type= "text" ?name= "smsbao_key_id" ?placeholder= "請輸入短信寶賬號" ?{ if ?$info.value?}?value= "{$info.value.smsbao_key_id}" ?{/ if }?autocomplete= "off" ?class= "layui-input?len-long" > ?????? </div> ??? </div> ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >短信寶密碼:</label> ?????? <div?class= "layui-input-block" > ????????? <input?type= "text" ?name= "smsbao_key_secret" ?placeholder= "請輸入短信寶密碼" ?{ if ?$info.value?}?value= "{$info.value.smsbao_key_secret}" ?{/ if }?autocomplete= "off" ?class= "layui-input?len-long" > ?????? </div> ??? </div> ??? <div?class= "layui-form-item" > ?????? <label?class= "layui-form-label" >短信內容簽名:</label> ?????? <div?class= "layui-input-block" > ????????? <input?type= "text" ?name= "smsbaosign" ?placeholder= "請輸入短信內容簽名" ?{ if ?$info.value?}?value= "{$info.value.smsbaosign}" ?{/ if }?autocomplete= "off" ?class= "layui-input?len-long" > ?????? </div> ??? </div> ???? <!--?表單操作?--> ???? <div?class= "form-row" > ???????? <button?class= "layui-btn" ?lay-submit?lay-filter= "save" >保存</button> ???????? <button?class= "layui-btn?layui-btn-primary" ?onclick= "back()" >返回</button> ???? </div> </div> <script> ???? layui.use( 'form' ,? function ()?{ ???????? var ?form?=?layui.form, ???????????? repeat_flag?=? false ;? //防重復標識 ?????? form.render(); ???????? form.on( 'submit(save)' ,? function (data)?{ ???????????? if ?(repeat_flag)? return ; ???????????? repeat_flag?=? true ; ????????? ???????????? $.ajax({ ???????????????? data:?data.field, ???????????????? dataType:? 'JSON' , ???????????????? type:? 'POST' , ???????????????? success:? function (res)?{ ??????????????? repeat_flag?=? false ; ??????????????? ??????????????? if ?(res.code?==?0)?{ ?????????????????? layer.confirm( '編輯成功' ,?{ ????????????????????? title: '操作提示' , ????????????????????? btn:?[ '返回列表' ,? '繼續操作' ], ????????????????????? yes:? function (){ ???????????????????????? location.href?=?ns.url( "shop/message/sms" ) ????????????????????? }, ????????????????????? btn2:? function ()?{ ???????????????????????? location.reload(); ????????????????????? } ?????????????????? }); ??????????????? } else { ?????????????????? layer.msg(res.message); ??????????????? } ???????????????? } ???????????? }); ???????? }); ???? }); ???? function ?back()?{ ???????? location.href?=?ns.url( "shop/message/sms" ); ???? } </script> |
經過上面的替換,短信寶的短信平臺已經替換成功了,可以正常使用了。進行測試發送:
報備一下短信寶的VIP模板,這樣就可以走短信寶的優質通道了,即便遇到敏感文字我們都不會人工審核,短信內容3~5秒就可送達。
另外:我們已經開發好完整的NIUSHOPV5.4.6單商戶多門店短信寶插件,點擊此鏈接?下載及查看安裝流
最新更新
電商類
CMS類
微信類