待发短信

在线客服
产品支持 短信宝客服
合作渠道 渠道合作
服务咨询

4001-021-502

工作时间

9:00-21:00

shopxoV5.0新增短信宝短信接口

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_url = 'http://api.smsbao.com/sms';
    $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类

微信类

文章标签