大商创,是一款功能强大的B2B2C多用户商城系统,二次开发进行功能扩展很方便,代码清晰简洁,通俗易懂,所以今天为大家讲解一下2.3.6版本的短信接口替换,我们使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信平台非常稳定,短信发送速度快,注册就送测试短信,推荐大家使用。
首先我们要更换后台的显示界面文件。打开模版文件,替换一下模版文件。打开项目/admin/templates/huyi_configure_list.dwt、/admin/templates/alidayu_configure_list.dwt、/admin/templates/alitongxin_configure_list.dwt这三个文件,都修改代码23~27行,代码如下:
|
1
2
3
4
5
|
<ul> <li class="li_color">注意:目前短信宝和阿里大鱼的短信模板是一致的,请慎重操作添加、编辑和删除.</li> <li>列表页展示所有短信配置模板的信息列表。</li> <li>每条信息可以进行编辑和删除操作。</li></ul> |
经过替换后所有的页面都变成我们短信宝的了,第一步完成。接下来替换短信发送的接口代码,打开项目/includes/cls_sms.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
76
77
78
79
80
|
public function send($phones, $msg = '', $send_date = '', $send_num = 1, $sms_type = '', $version = '1.0', &$sms_error = '', $mobile_code = '') { if ($GLOBALS['_CFG']['sms_type'] == 0) { /* 检查发送信息的合法性 */ $contents = $this->get_contents($phones, $msg); if (!$contents) { return false; } /* 获取API URL */ if (count($contents) > 1) { foreach ($contents as $key => $val) { $post_data = 'u=' . $this->sms_name . '&p=' . $this->sms_password . '&m=' . $val['phones'] . '&c=【' .$this->sms_sign.'】' . rawurlencode($val['content']); //密码可以使用明文密码或使用32位MD5加密 $get = file_get_contents($sms_url.$post_data); $gets['code']=$get; $gets['msg']='发送成功'; sleep(1); } } else { $post_data = 'u=' . $this->sms_name . '&p=' . $this->sms_password . '&m=' . $contents[0]['phones'] . '&c=【' .$this->sms_sign.'】' . rawurlencode($contents[0]['content']); $get = file_get_contents($sms_url.$post_data); $gets['code'] = $get; $gets['msg'] = '发送成功'; } //print_r($gets);exit; //开启调试模式 if ($get == '0') { return true; } else { $statusStr = array( "0" => "短信发送成功", "-1" => "参数不全", "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!", "30" => "密码错误", "40" => "账号不存在", "41" => "余额不足", "42" => "帐户已过期", "43" => "IP地址限制", "50" => "内容含有敏感词" ); $sms_error = $phones .$statusStr["$get"]; $this->logResult($sms_error); return false; } } else if (1 <= $GLOBALS['_CFG']['sms_type']) { $msg = $this->get_usser_sms_msg($msg); if (!empty($msg['sms_value'])) { $smsParams = array('mobile_phone' => $phones, 'code' => $msg['code']); $send_time = $msg['sms_value']; } else { $smsParams = array('mobile_phone' => $phones, 'code' => $msg['code'], 'product' => $msg['product']); $send_time = 'sms_signin'; } $result = sms_ali($smsParams, $send_time); $resp = $GLOBALS['ecs']->ali_yu($result); if ($resp->code == 0) { return true; } else { if ($resp->sub_msg) { $sms_error = $phones . $resp->sub_msg; } else { $sms_error = $phones . ':' . $resp->msg; } $this->logResult($sms_error); return false; } } } |
修改配置文件,打开项目/languages/zh_cn/admin/common.php文件,修改371行左右,修改代码如下:
|
1
|
$_LANG['huyi_configure'] = '短信宝'; |
打开项目/languages/zh_cn/admin/shop_config.php文件,修改51、140-141行左右,修改代码如下:
|
1
2
3
|
57 $_LANG['cfg_range']['sms_type'][0] = '短信宝';146 $_LANG['cfg_name']['sms_ecmoban_user'] = '短信宝短信接口用户名';147 $_LANG['cfg_name']['sms_ecmoban_password'] = '互短信宝短信接口密码'; |
pc端的我们已经替换成功了,我们进行手机端的替换,打开项目/mobile/app/helpers/base_helper.php文件,修改send_sms方法,修改代码为:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function send_sms($mobile, $send_time = '', $content){ $sms_type = array('ihuyi', 'alidayu', 'aliyun'); $config = array( 'driver' => 'sms', 'driverConfig' => array( 'sms_type' => $sms_type[$GLOBALS['_CFG']['sms_type']], 'ihuyi' => array('sms_name' => $GLOBALS['_CFG']['sms_ecmoban_user'], 'sms_password' => $GLOBALS['_CFG']['sms_ecmoban_password'],'sms_sign'=> $GLOBALS['_CFG']['shop_name']), 'alidayu' => array('ali_appkey' => $GLOBALS['_CFG']['ali_appkey'], 'ali_secretkey' => $GLOBALS['_CFG']['ali_secretkey']), 'aliyun' => array('access_key_id' => $GLOBALS['_CFG']['access_key_id'], 'access_key_secret' => $GLOBALS['_CFG']['access_key_secret']) ) ); $sms = new \App\Notifications\Send($config); if ($sms->push($mobile, $send_time, $content) === true) { return true; } else { return $sms->getError(); }} |
接下来修改发送的接口类,打开项目/mobile/app/notifications/Sms/Driver/Ihuyi.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
|
<?phpnamespace App\Notifications\Sms\Driver;class Ihuyi{ /** * 短信类配置 * @var array */ protected $config = array('sms_name' => '', 'sms_password' => ''); /** * @var objcet 短信对象 */ protected $content; protected $phones = array(); protected $errorInfo; public function __construct($config = array()) { $this->config = array_merge($this->config, $config); } public function setSms($title, $content) { $sql = 'SELECT * FROM {pre}alidayu_configure WHERE send_time = \'' . $title . '\''; $msg = $GLOBALS['db']->getRow($sql); preg_match_all('/\\$\\{(.*?)\\}/', $msg['temp_content'], $matches); foreach ($matches[1] as $vo) { $msg['temp_content'] = str_replace('${' . $vo . '}', $content[$vo], $msg['temp_content']); } $this->content = $msg['temp_content']; return $this; } public function sendSms($to) { $sendTo = explode(',', $to); foreach ($sendTo as $add) { if (preg_match('/^0?1((3|7|8)[0-9]|5[0-35-9]|4[57])\\d{8}$/', $add)) { $this->addPhone($add); } } if (!$this->send()) { $return = false; } else { $return = true; } return $return; } private function addPhone($add) { array_push($this->phones, $add); } private function send() { foreach ($this->phones as $mobile) { $post_data = array('u' => $this->config['sms_name'], 'p' => $this->config['sms_password'], 'm' => $mobile, 'c' => '【'.$this->config['sms_sign'].'】'.$this->content); $res = \App\Extensions\Http::doPost($this->sms_api, $post_data); if ($res == '0') { return true; } else { $this->errorInfo = $res; logResult($this->errorInfo, 'sms'); return false; } } } private function xmlToArray($xml) { $reg = '/<(\\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/'; if (preg_match_all($reg, $xml, $matches)) { $count = count($matches[0]); for ($i = 0; $i < $count; $i++) { $subxml = $matches[2][$i]; $key = $matches[1][$i]; if (preg_match($reg, $subxml)) { $arr[$key] = $this->xmlToArray($subxml); } else { $arr[$key] = $subxml; } } } return $arr; } public function getError() { return $this->errorInfo; } public function __destruct() { unset($this->sms); }}?> |
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:
报备一下短信宝的VIP模版,这样就可以走短信宝的优质通道,并且免审核了,短信内容3~5秒就可送达。
- 上一篇:海盗云商短信接口替换 下一篇:骑士人才V4.2.69新增短信接口

