待发短信

在线客服
产品支持 短信宝客服
合作渠道 渠道合作
服务咨询

4001-021-502

工作时间

9:00-21:00

ECJIA商城系统新增短信宝短信接口

今天小编为大家讲解一下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
{
    
const HOST      = 'http://api.smsbao.com/sms?';
   
    
    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()
    {
        $url 'http://api.smsbao.com/query?u='.$this->appKey.'&p='.md5($this->appSecret);
 
 
        $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
{
    
    const HOST      = 'http://api.smsbao.com/sms?';
   
    
    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()
    {
        $url 'http://api.smsbao.com/query?u='.$this->appKey.'&p='.md5($this->appSecret);
 
 
        $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类

微信类

文章标签