ShopXO是国内领先的商城系统提供商,为企业提供php商城系统、微信商城、小程序。小编发现ShopXO更新到5.0版本,就以替换短信接口为例告诉大家如何进行二次开发,使用的短信接口是我们短信宝短信群发平台的接口,我们短信宝短信群发平台非常稳定,发送速度快,注册就送测试短信,推荐大家使用
1:打开项目:\app\admin\view\default\sms\index.html文件,大概15行替换以下代码
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
|
<form class= "am-form form-validation am-form-popup-sticky" action= "{{:MyUrl('admin/sms/save')}}" method= "POST" request-type= "ajax-view" request-value= "{{:MyUrl('admin/sms/index', ['type'=>'index'])}}" > <div class= "nav-content" > <!-- table tips start --> {{include file= "sms/tips" " /}} <!-- table tips end --> <div class=" am-form-group "> <label>短信宝账号<span class=" am-form-group-label-tips ">填写短信宝账号</span></label> <input type=" text " name=" {{$data.common_sms_apikey.only_tag}} " placeholder=" 短信宝账号 " data-validation-message=" {{$data.common_sms_apikey.error_tips}} " class=" am-radius " {{if !empty($data)}}value=" {{$data.common_sms_apikey.value}} "{{/if}} /> </div> <div class=" am-form-group "> <label>短信宝密码<span class=" am-form-group-label-tips ">填写短信宝密码</span></label> <input type=" text " name=" {{$data.common_sms_apisecret.only_tag}} " placeholder=" 填写短信宝密码 " data-validation-message=" {{$data.common_sms_apisecret.error_tips}} " class=" am-radius " {{if !empty($data)}}value=" {{$data.common_sms_apisecret.value}} "{{/if}} /> </div> <div class=" am-form-group "> <label>短信宝签名<span class=" am-form-group-label-tips ">填写短信宝签名</span></label> <input type=" text " name=" {{$data.common_sms_sign.only_tag}} " placeholder=" 填写短信宝签名 " data-validation-message=" {{$data.common_sms_sign.error_tips}} " class=" am-radius " maxlength=" 16 " {{if !empty($data)}}value=" {{$data.common_sms_sign.value}} "{{/if}} /> </div> </div> <div class=" am-form-popup-submit "> <button type=" submit " class=" am-btn am-btn-primary am-radius am-btn-xs btn-loading-example " data-am-loading=" {spinner: 'circle-o-notch' , loadingText: '{{:MyLang(' save_title ')}}' } "> <i class=" am-icon-save"></i> <span>{{:MyLang( 'save_title' )}}</span> </button> </div> </form> |
2:打开项目:\app\admin\view\default\sms\message.html 大概14行替换以下代码
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
|
<form class= "am-form form-validation am-form-popup-sticky" action= "{{:MyUrl('admin/sms/save')}}" method= "POST" request-type= "ajax-view" request-value= "{{:MyUrl('admin/sms/index', ['type'=>'message'])}}" > <div class= "nav-content" > <!-- table tips start --> {{include file= "sms/tips" " /}} <!-- table tips end --> <!-- 后台 --> <p class=" am-margin-bottom-xl am-text-sm cr-333 ">{{:MyLang('sms.base_item_admin_title')}}</p> <div class=" am-form-group "> <label>短信登录模板<span class=" am-form-group-label-tips ">{{$data.admin_sms_login_template.describe}}</span></label> <input type=" text " name=" {{$data.admin_sms_login_template.only_tag}} " placeholder=" 填写短信登录模板 " data-validation-message=" {{$data.admin_sms_login_template.error_tips}} " class=" am-radius " {{if !empty($data)}}value=" {{$data.admin_sms_login_template.value}} "{{/if}} /> </div> <!-- 前端 --> <p class=" am-margin-bottom-xl am-text-sm cr-333 ">{{:MyLang('sms.base_item_index_title')}}</p> <div class=" am-form-group "> <label>通用-短信模板<span class=" am-form-group-label-tips ">{{$data.common_sms_currency_template.describe}}</span></label> <input type=" text " name=" {{$data.common_sms_currency_template.only_tag}} " placeholder=" 通用-短信模板 " data-validation-message=" {{$data.common_sms_currency_template.error_tips}} " class=" am-radius " {{if !empty($data)}}value=" {{$data.common_sms_currency_template.value}} "{{/if}} /> </div> <div class=" am-form-group "> <label>用户登录-短信模板<span class=" am-form-group-label-tips ">{{$data.home_sms_login_template.describe}}</span></label> <input type=" text " name=" {{$data.home_sms_login_template.only_tag}} " placeholder=" 用户登录-短信模板 " data-validation-message=" {{$data.home_sms_login_template.error_tips}} " class=" am-radius " {{if !empty($data)}}value=" {{$data.home_sms_login_template.value}} "{{/if}} /> </div> <div class=" am-form-group "> <label>用户注册-短信模板<span class=" am-form-group-label-tips ">{{$data.home_sms_user_reg_template.describe}}</span></label> <input type=" text " name=" {{$data.home_sms_user_reg_template.only_tag}} " placeholder=" 用户注册-短信模板 data-validation-message= "{{$data.home_sms_user_reg_template.error_tips}}" class= "am-radius" {{ if !empty($data)}}value= "{{$data.home_sms_user_reg_template.value}}" {{/ if }} /> </div> <div class= "am-form-group" > <label>密码找回-短信模板<span class= "am-form-group-label-tips" >{{$data.home_sms_user_forget_pwd_template.describe}}</span></label> <input type= "text" name= "{{$data.home_sms_user_forget_pwd_template.only_tag}}" placeholder= "密码找回-短信模板" data-validation-message= "{{$data.home_sms_user_forget_pwd_template.error_tips}}" class= "am-radius" {{ if !empty($data)}}value= "{{$data.home_sms_user_forget_pwd_template.value}}" {{/ if }} /> </div> <div class= "am-form-group" > <label>手机号码绑定-短信模板<span class= "am-form-group-label-tips" >{{$data.home_sms_user_mobile_binding_template.describe}}</span></label> <input type= "text" name= "{{$data.home_sms_user_mobile_binding_template.only_tag}}" placeholder= "手机号码绑定-短信模板" data-validation-message= "{{$data.home_sms_user_mobile_binding_template.error_tips}}" class= "am-radius" {{ if !empty($data)}}value= "{{$data.home_sms_user_mobile_binding_template.value}}" {{/ if }} /> </div> </div> <div class= "am-form-popup-submit" > <button type= "submit" class= "am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading= "{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}" > <i class= "am-icon-save" ></i> <span>{{:MyLang( 'save_title' )}}</span> </button> </div> </form> |
3:打开项目:\app\admin\view\default\sms\tips.html 修改跳转方式
1
2
3
4
5
6
7
8
|
<div class= "am-operate-stretch-tips" > <div class= "title" > <i class= "iconfont icon-tips" ></i> <strong title= "{{:MyLang('operate_list_tips_msg')}}" >{{:MyLang( 'operate_list_tips_button_text' )}}</strong> <i class= "iconfont icon-contract contract" title= "{{:MyLang('operate_list_tips_retract_text')}}" ></i> </div> <p class= "am-text-xs" >短信宝短信地址 <a href= "https://console.smsbao.com/#/register" class= "am-margin-left-sm" target= "_blank" >点击去短信宝购买短信<i class= "am-icon-external-link" ></i></a> </p> </div> |
4:打开项目:\extend\base\Sms.php 修改短信发送函数 大概151行
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
|
public function SmsRequest($mobile, $template_value, $sign_name = '' , $template_var = []) { // 签名 $sign_name = empty($sign_name) ? $ this ->sign_ame : $sign_name; // 短信发送钩子 $hook_name = 'plugins_extend_sms_send_request_handle' ; $ret = array_filter(MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true , 'sign_name' => $sign_name, 'mobile' => $mobile, 'template_value' => $template_value, 'template_var' => $template_var, ])); // 存在返回值,并且存在code和mag参数,则认为是钩子处理短信的发送 if (!empty($ret)) { // 处理钩子数据 $ret = EventReturnHandle($ret); if ($ret[ 'code' ] != 0) { $ this ->error = $ret[ 'msg' ]; return false ; } return true ; } // 请求参数 $request_params = [ 'SignName' => $sign_name, 'Format' => 'JSON' , 'Version' => '2017-05-25' , 'AccessKeyId' => $ this ->access_key_id, 'Timestamp' => gmdate( 'Y-m-d\TH:i:s\Z' ), 'Action' => 'SendSms' , 'TemplateCode' => $template_value, 'PhoneNumbers' => $mobile, ]; // 携带参数 if (!empty($template_var)) { if (!is_array($template_var)) { $template_var = [ 'code' =>$template_var]; } $request_params[ 'TemplateParam' ] = json_encode($template_var, JSON_UNESCAPED_UNICODE); } $content = $template_value; foreach ($template_var as $k=>$v){ $content = str_replace($k,$v,$content); } $SignName = empty($sign_name) ? $ this ->sign_ame : $sign_name; $url = $request_url. '?u=' .$ this ->access_key_id. '&p=' .md5($ this ->access_key_secret). '&m=' .$mobile. '&c=【' .$SignName. '】' .$content; // 添加短信日志 $log = SmsLogService::SmsLogAdd( 'smsbao' , $mobile, $sign_name, $template_value, $template_var, $request_url, $request_params); if ($log[ 'code' ] != 0) { $ this ->error = $log[ 'msg' ]; return false ; } $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 ); $result = curl_exec ( $ch ); curl_close ( $ch ); if ($result == '0' ) { // 日志回调 SmsLogService::SmsLogResponse($log[ 'data' ][ 'id' ], 1, $result, time()-$log[ 'data' ][ 'add_time' ]); return true ; } // 错误原因 $ this ->error = $ this ->GetErrorMessage($result); // 日志回调 SmsLogService::SmsLogResponse($log[ 'data' ][ 'id' ], 2, $result, time()-$log[ 'data' ][ 'add_time' ], $ this ->error); return false ; } |
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:
报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。
另外:我们已经开发好完整的ShopXO v5.0系统短信宝插件,点击此链接 下载及查看安装流程。
最新更新
电商类
CMS类
微信类