iwebshop电商平台是一款基于php+mysql开发的100%开源软件,支持二次开发和自由修改,具有跨平台性适用于各种服务器环境,今天小编就分享一下如何进行二次开发,我以替换短信接口为例。一步步的教大家如何开发,我们使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台非常稳定,发送速度快,注册就送测试短信,推荐大家使用。
进行短信接口替换,首先我们需要修改后台的显示界面,打开项目/views/sysdefault/hsms.html文件,修改6~57行左右,代码如下:
|
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
|
<form action="#" method="post" name='sms_conf'> <table class="form_table"> <colgroup> <col width="150px" /><col /> </colgroup> <tr> <th>说明:</th> <td>还没有注册短信宝短信平台的用户,请点击 <p>商城所用的短信内容模板在【/classes/smstemplate.php】文件中,尽量用原始的短信模板,否则会导致短信发送延迟等问题</p> <p>如果想关闭某个短信发送环节,可以直接把相应方法的返回值设置为空</p> </td> </tr> <tr> <th>管理员手机号:</th> <td><label class="red">【系统】——【网站设置】——【手机号】</label></td> </tr> <tr> <th>短信平台:</th> <td> <select name="sms_platform" class="normal"> <option value="smsbao">短信宝短信平台</option> </select> </td> </tr> <tr> <th>用户名:</th> <td><input type='text' class='normal' name='sms_username' pattern='required' alt='' /><label>短信宝用户名</label></td> </tr> <tr> <th>密码:</th> <td><input type='text' class='normal' name='sms_pwd' pattern='required' alt='' /><label>短信宝密码</label></td> </tr> <tr> <th>签名</th> <td><input type='text' class='normal' name='sms_userid' alt='' /><label>短信签名(3-8个字符)</label></td> </tr> <tr> <th>测试手机号码:</th> <td> <input type='text' class='normal' name='mobile' pattern='mobi' empty alt='填写正确的手机号码' /> <label>必须先<保存>配置后,在测试短信发送的功能【可选】</label> </td> </tr> <tr> <th></th> <td> <button type='button' class="submit" onclick="submitConfig();"><span>保 存</span></button> <button class="submit" type='button' onclick="test_sendhsms(this);"><span id='testmobile'>测试短信发送</span></button> </td> </tr> </table></form> |
后台显示界面修改完成后,我们接下来去修改发送短信的调用接口,将其修改成短信宝的接口,打开项目/classes/hsms.php文件,修改send方法,修改代码如下:
|
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
|
/** * @brief 发送短信 * @param string $mobiles 多个手机号为用半角,分开,如13899999999,13688888888(最多200个) * @param string $content 短信内容 * @param int $delay 延迟设置 * @return success or fail */ public static function send($mobiles, $content, $delay = 1) { if(!$content) { return "短信内容不能为空"; } if( !isset($_SERVER['HTTP_USER_AGENT']) ) { return "非客户端访问"; } $mobile_array = explode(",", $mobiles); foreach ($mobile_array as $key => $val) { if(false === IValidate::mobi($val)) { unset($mobile_array[$key]); } } if(!$mobile_array) { return "非法手机号码"; } if(count($mobile_array) > 200) { return "手机号超过200个"; } //延迟机制 if($delay == 1) { $cacheObj = new ICache(); $smsTime = $cacheObj->get('smsDelay'); if($smsTime && time() - $smsTime < self::$sendStep) { return "短信发送频率太快,请稍候再试..."; } //更新发送时间 $cacheObj->set('smsDelay',time()); } if(self::$smsInstance == null) { $platform = self::getPlatForm(); switch($platform) { case "smsbao": { $classFile = IWeb::$app->getBasePath().'plugins/hsms/smsbao.php'; require($classFile); self::$smsInstance = new smsbao(); } break; default: { $classFile = IWeb::$app->getBasePath().'plugins/hsms/smsbao.php'; require($classFile); self::$smsInstance = new smsbao(); } } } return self::$smsInstance->send($mobiles, $content); }} |
最后我们进行添加短信宝的发送类,在项目/plugins/hsms下新建一个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
|
<?php/** * @copyright (c) 2016 smsbao.com * @file smsbao.php * @brief **短信发送接口 * @author linf * @date 2016/11/21 11:10:38 * @version 1.0 */ /** * @class smsbao * @brief 短信发送接口 http://api.smsbao.com/sms */class smsbao extends hsmsBase{ /** * @brief 获取config用户配置 * @return array */ public function getConfig() { $siteConfigObj = new Config("site_config"); return array( 'username' => $siteConfigObj->sms_username, 'userpwd' => $siteConfigObj->sms_pwd, 'sign' => $siteConfigObj->sms_userid, ); } /** * @brief 发送短信 * @param string $mobile * @param string $content * @return */ public function send($mobile,$content) { $config = self::getConfig(); $post_data = array( 'u' => $config['username'], 'p' => md5($config['userpwd']), 'c' => '【'.$config['sign'].'】'.$content, 'm' => $mobile, ); $url = $this->submitUrl; $string = ''; foreach ($post_data as $k => $v) { $string .="$k=".urlencode($v).'&'; } $post_string = substr($string,0,-1); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。 $result = curl_exec($ch); return $this->response($result); } /** * @brief 解析结果 * @param $result 发送结果 * @return string success or fail */ public function response($result) { if(trim($result) =='0') { return 'success'; } else { return $this->getMessage($result); } } /** * @brief 获取参数 */ public function getParam() { return array( "username" => "用户名", "userpwd" => "密码", "usersign" => "短信签名", ); } //返回消息提示 public function getMessage($code) { $messageArray = array( -1 =>"参数不全", 30 =>"密码错误", 40 =>"账号不存在", 41 =>"余额不足", 42 =>"账号过期", 43 =>"IP地址限制", 50 =>"内容含有敏感词", 51 =>"手机号码不正确", ); return isset($messageArray[$code]) ? $messageArray[$code] : "未知错误"; }} |
好了,经过以上的替换,短信宝的短信平台已经替换成功了,可以正常使用了。我们进行发送测试:
报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,并且免审核了,短信内容3~5秒就可送达。

