今天小编为大家讲解一下ECJIA1.20版本的商城系统短信宝短信插件,短信接口使用的是我们短信宝短信群发平台,我们短信宝短信群发平台极其稳定,而且短信发送速度相当快捷,验证码和订单通知在3~5秒就能收到,用户体验非常好,注册就送测试短信。
1.20这个版本我们只需要修改项目\vendor\royalcms\sms\config\sms.php文件就可以了,这个文件是ecjia短信发送配置文件,我们修改如下代码:
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
|
<?php return [ /* |-------------------------------------------------------------------------- | 第三方短信服务商 |-------------------------------------------------------------------------- | | 支持:互亿无线 | | 其它短信服务商,如需要可自行扩展。 | IHuYiAgent 可提供开发参考。 | */ 'default' => env( 'SMS_DEFAULT' , 'smsbao' ), 'fallback' => env( 'SMS_FALLBACK' ), 'signName' => env( 'SMS_SIGNNAME' ), 'agents' => [ /* * 互亿无线 */ 'ihuyi' => [ 'credentials' => [ 'appKey' => env( 'IHUYI_APPKEY' ), 'appSecret' => env( 'IHUIYI_APPSECRET' ) ], 'executableFile' => 'IHuYiAgent' , ], 'smsbao' => [ 'credentials' => [ 'appKey' => env( 'SMSBAO_APPKEY' ), 'appSecret' => env( 'SMSBAO_APPSECRET' ), 'appsign' => env( 'SMSBAO_APPSIGN' ) ], 'executableFile' => 'SMSbao' , ], ], ]; |
接着在项目\vendor\royalcms\sms\Royalcms\Component\Sms\Agents\创建名为: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
115
116
117
|
<?php namespace Royalcms\Component\Sms\Agents; use Royalcms\Component\Support\Arr; use Royalcms\Component\Sms\Sms; use Royalcms\Component\Sms\Contracts\SmsAgent; use RC_Xml; use RC_Error; use Royalcms\Component\Sms\SendResponse; use Royalcms\Component\Sms\BalanceResponse; class SMSbao extends Sms implements SmsAgent { private $appKey ; private $appSecret ; private $appSign ; private $statusStr = array ( "0" => "短信发送成功" , "-1" => "参数不全" , "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!" , "30" => "密码错误" , "40" => "账号不存在" , "41" => "余额不足" , "42" => "帐户已过期" , "43" => "IP地址限制" , "50" => "内容含有敏感词" ); public function __construct( $config ) { $this ->config = $config ; $this ->transformConfig(); } public function transformConfig() { $credentials = Arr::pull( $this ->config, 'credentials' ); $this ->appKey = Arr::pull( $credentials , 'appKey' ); $this ->appSecret = Arr::pull( $credentials , 'appSecret' ); $this ->appSign = Arr::pull( $credentials , 'appsign' ); } protected function authParams() { return [ 'u' => $this ->appKey, 'p' => $this ->appSecret, 'k' => $this ->appSign ]; } /** * 发送信息 * * @see \Royalcms\Component\Sms\Contracts\SmsAgent::send() */ public function send( $mobile ) { $url = self::HOST. 'u=' . $this ->appKey. '&p=' .md5( $this ->appSecret). '&m=' . $mobile . '&c=【' . $this ->appSign. '】' . $this ->content; $ret = file_get_contents ( $url ); return $this ->transformerResponse( 'send' , $ret ); } /** * 查询账户余额 */ public function balance() { $ret = file_get_contents ( $url ); $rest = explode ( "," , $ret ); $res [ 'data' ][ 'num' ] = $rest [ '1' ]; return $this ->transformerResponse( 'balance' , $res ); } /** * 转换返回的信息处理 * @param array $response * @return array $result * @return int $result[].code 返回0则成功,返回其它则错误 * @return string $result[].msg 返回消息 * @return string $result[].raw 接口返回的原生信息 * @return array $result[].data 数据信息 */ public function transformerResponse( $type , $response ) { $result_arr = $this ->statusStr; if ( $type == 'send' ){ $result = new SendResponse(); $result ->setMsgid( $response ); $result ->setCode( $response ); $result ->setDescription( $result_arr [ $response ]); $result ->getDescription( $result_arr [ $response ]); } else { $result = new BalanceResponse(); $result ->setBalance( $response [ 'data' ][ 'num' ]); $result ->setCode( $response ); $result ->setDescription( $result_arr [ $response ]); $result ->getDescription( $result_arr [ $response ]); } return $result ; } } |
接着在项目\content\plugins\创建新的文件,名为:sms_smsbao\config.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php return array ( 'sms_code' => 'sms_smsbao' , 'check_balance' => true, 'forms' => array ( array ( 'name' => 'app_key' , 'type' => 'text' , 'value' => '' ), array ( 'name' => 'app_secret' , 'type' => 'text' , 'value' => '' ), array ( 'name' => 'app_sign' , 'type' => 'text' , 'value' => '' ) ), ); |
接着在项目\content\plugins\sms_smsbao\创建sms_smsbao.class.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
|
<?php defined( 'IN_ECJIA' ) or exit ( 'No permission resources.' ); use Ecjia\App\Sms\SmsAbstract; class sms_smsbao extends SmsAbstract { public function setConfig( array $config ) { parent::setConfig( $config ); $this ->setAgentConfig(); $this ->agent = royalcms( 'sms' )->driver( 'smsbao' ); } public function setAgentConfig() { RC_Config::set( 'sms::sms.agents.smsbao.credentials' , [ 'appKey' => $this ->config[ 'app_key' ], 'appSecret' => $this ->config[ 'app_secret' ], 'appsign' => $this ->config[ 'app_sign' ] ]); } /** * 获取插件代号 * * @see \Ecjia\System\Plugin\PluginInterface::getCode() */ public function getCode() { return $this ->loadConfig( 'sms_code' ); } /** * 加载配置文件 * * @see \Ecjia\System\Plugin\PluginInterface::loadConfig() */ public function loadConfig( $key = null, $default = null) { return $this ->loadPluginData(RC_Plugin::plugin_dir_path( __FILE__ ) . 'config.php' , $key , $default ); } /** * 加载语言包 * * @see \Ecjia\System\Plugin\PluginInterface::loadLanguage() */ public function loadLanguage( $key = null, $default = null) { $locale = RC_Config::get( 'system.locale' ); return $this ->loadPluginData(RC_Plugin::plugin_dir_path( __FILE__ ) . '/languages/' . $locale . '/plugin.lang.php' , $key , $default ); } } // end |
接着在项目\content\plugins\sms_smsbao\创建sms_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
|
<?php /* Plugin Name: 短信宝短信 Plugin URI: http://www.smsbao.com Description: 使用短信宝短信渠道,发送验证码短信、订单通知等。 Author: ECJIA TEAM Version: 1.0.0 Author URI: http://www.ecjia.com/ Plugin App: sms */ defined( 'IN_ECJIA' ) or exit ( 'No permission resources.' ); class plugin_sms_smsbao { public static function install() { $config = include (RC_Plugin::plugin_dir_path( __FILE__ ) . 'config.php' ); $param = array ( 'file' => __FILE__ , 'config' => $config ); return RC_Api::api( 'sms' , 'plugin_install' , $param ); } public static function uninstall() { $config = include (RC_Plugin::plugin_dir_path( __FILE__ ) . 'config.php' ); $param = array ( 'file' => __FILE__ , 'config' => $config ); return RC_Api::api( 'sms' , 'plugin_uninstall' , $param ); } public static function royalcms_sms_agent_filter( $factories ) { require_once RC_Plugin::plugin_dir_path( __FILE__ ) . 'SMSbao.php' ; $factories [ 'smsbao' ] = 'SMSbao' ; return $factories ; } } Ecjia_PluginManager::extend( 'sms_smsbao' , function () { require_once RC_Plugin::plugin_dir_path( __FILE__ ) . 'sms_smsbao.class.php' ; return new sms_smsbao(); }); RC_Plugin::register_activation_hook( __FILE__ , array ( 'plugin_sms_smsbao' , 'install' )); RC_Plugin::register_deactivation_hook( __FILE__ , array ( 'plugin_sms_smsbao' , 'uninstall' )); RC_Hook::add_filter( 'royalcms_sms_agent_filter' , array ( 'plugin_sms_smsbao' , 'royalcms_sms_agent_filter' )); // end |
接着在项目\content\plugins\sms_smsbao\创建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
115
|
<?php use Royalcms\Component\Support\Arr; use Royalcms\Component\Sms\Sms; use Royalcms\Component\Sms\Contracts\SmsAgent; use RC_Xml; use RC_Error; use Royalcms\Component\Sms\SendResponse; use Royalcms\Component\Sms\BalanceResponse; class SMSbao extends Sms implements SmsAgent { private $appKey ; private $appSecret ; private $appSign ; private $statusStr = array ( "0" => "短信发送成功" , "-1" => "参数不全" , "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!" , "30" => "密码错误" , "40" => "账号不存在" , "41" => "余额不足" , "42" => "帐户已过期" , "43" => "IP地址限制" , "50" => "内容含有敏感词" ); public function __construct( $config ) { $this ->config = $config ; $this ->transformConfig(); } public function transformConfig() { $credentials = Arr::pull( $this ->config, 'credentials' ); $this ->appKey = Arr::pull( $credentials , 'appKey' ); $this ->appSecret = Arr::pull( $credentials , 'appSecret' ); $this ->appSign = Arr::pull( $credentials , 'appsign' ); } protected function authParams() { return [ 'u' => $this ->appKey, 'p' => $this ->appSecret, 'k' => $this ->appSign ]; } /** * 发送信息 * * @see \Royalcms\Component\Sms\Contracts\SmsAgent::send() */ public function send( $mobile ) { $url = self::HOST. 'u=' . $this ->appKey. '&p=' .md5( $this ->appSecret). '&m=' . $mobile . '&c=【' . $this ->appSign. '】' . $this ->content; $ret = file_get_contents ( $url ); return $this ->transformerResponse( 'send' , $ret ); } /** * 查询账户余额 */ public function balance() { $ret = file_get_contents ( $url ); $rest = explode ( "," , $ret ); $res [ 'data' ][ 'num' ] = $rest [ '1' ]; return $this ->transformerResponse( 'balance' , $res ); } /** * 转换返回的信息处理 * @param array $response * @return array $result * @return int $result[].code 返回0则成功,返回其它则错误 * @return string $result[].msg 返回消息 * @return string $result[].raw 接口返回的原生信息 * @return array $result[].data 数据信息 */ public function transformerResponse( $type , $response ) { $result_arr = $this ->statusStr; if ( $type == 'send' ){ $result = new SendResponse(); $result ->setMsgid( $response ); $result ->setCode( $response ); $result ->setDescription( $result_arr [ $response ]); $result ->getDescription( $result_arr [ $response ]); } else { $result = new BalanceResponse(); $result ->setBalance( $response [ 'data' ][ 'num' ]); $result ->setCode( $response ); $result ->setDescription( $result_arr [ $response ]); $result ->getDescription( $result_arr [ $response ]); } return $result ; } } |
最后在项目\content\plugins\sms_smsbao\创建新的文件夹languages\zh_CN\,名为:plugin.lang.php文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php defined( 'IN_ECJIA' ) or exit ( 'No permission resources.' ); /** * ECJIA 程序语言包 */ return array ( 'app_key' => '短信宝帐号:' , 'app_secret' => '短信宝密码:' , 'app_sign' => '短信签名:' ); // end |
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:
报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。
另外:我们已经开发好完整的ecjia商城系统短信宝插件,点击此链接 下载及查看安装流程。
最新更新
电商类
CMS类
微信类