ECJia移動商城系統(EC+)是一款基于移動互聯網的商城應用服務產品,擁有執行效率高、上手輕松、管理便捷等一系列優點。今天小編為大家講解一下ECJIA1.37.0這個版本的短信插件該如何開發,短信接口使用的是我們短信寶短信群發平臺,我們短信寶短信群發平臺極其穩定,而且短信發送速度相當快捷,驗證碼和訂單通知在3~5秒就能收到,用戶體驗非常好,注冊就送測試短信。
1:打開項目:\vendor\royalcms\sms\config\sms.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
|
<?php return [ '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' , ], ], ]; |
2:打開項目\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
118
119
120
|
<?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; } |
3:接著在項目\content\plugins\創建文件:sms_smsbao\config.php
1
2
3
4
5
6
7
8
9
10
11
12
|
<?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' => '' ) ), ); |
4:接著在項目\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
63
64
|
<?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 ); } } |
5:接著在項目\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
47
48
49
50
51
52
|
<?php /* Plugin Name: 短信寶短信 Plugin URI: http://www.gjrencai.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' )); |
6:接著在項目\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
116
117
118
119
120
|
<?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; } |
7:最后在項目\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
16
|
<?php defined( 'IN_ECJIA' ) or exit( 'No permission resources.' ); /** * ECJIA 程序語言包 */ return array( 'app_key' => '短信寶帳號:' , 'app_secret' => '短信寶密碼:' , 'app_sign' => '短信簽名:' ); |
經過上面的替換,短信寶的短信平臺已經替換成功了,可以正常使用了。進行測試發送:
報備一下短信寶的VIP模板,這樣就可以走短信寶的優質通道了,即便遇到敏感文字我們都不會人工審核,短信內容3~5秒就可送達。
另外:我們已經開發好完整的ECJIA1.37.0商城系統短信寶插件,點擊此鏈接 下載及查看安裝流程。
最新更新
電商類
CMS類
微信類