大商创,是一款功能强大的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
|
<?php namespace 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秒就可送达。
最新更新
电商类
CMS类
微信类