待发短信

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

4001-021-502

工作时间

9:00-21:00

Rhymix 2.0.16新增短信宝短信接口
Rhymix是一个信息管理系统(content management system,简称Rhymix),旨在帮助任何人创建一个简单、自由、独立的网站,表达自己,建立一个社区。小编对他还是比较了解的,今天小编就以新增短信接口为例,给大家讲解一下如何进行二次开发,我们今天讲解的是v2.0.16版本,使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台的接口非常稳定,发送速度快,注册就送测试短信,推荐大家使用

1:打开项目:\common\framework\drivers\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
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
<?php
namespace Rhymix\Framework\Drivers\SMS;
/**
 * The CoolSMS SMS driver.
 */
class SmsBao extends Base implements \Rhymix\Framework\Drivers\SMSInterface
{
    /**
     * API specifications.
     */
    protected static $_spec = array(
        'max_recipients' => 1000,
        'sms_max_length' => 90,
        'sms_max_length_in_charset' => 'CP949',
        'lms_supported' => true,
        'lms_supported_country_codes' => array(82),
        'lms_max_length' => 2000,
        'lms_max_length_in_charset' => 'CP949',
        'lms_subject_supported' => true,
        'lms_subject_max_length' => 40,
        'mms_supported' => true,
        'mms_supported_country_codes' => array(82),
        'mms_max_length' => 2000,
        'mms_max_length_in_charset' => 'CP949',
        'mms_subject_supported' => true,
        'mms_subject_max_length' => 40,
        'image_allowed_types' => array('jpg''gif''png'),
        'image_max_dimensions' => array(2048, 2048),
        'image_max_filesize' => 300000,
        'delay_supported' => true,
    );
    /**
     * Config keys used by this driver are stored here.
     */
    protected static $_required_config = array('api_key''api_secret');
    /**
     * Check if the current SMS driver is supported on this server.
     *
     * This method returns true on success and false on failure.
     *
     * @return bool
     */
    public static function isSupported()
    {
        return true;
    }
    /**
     * Send a message.
     *
     * This method returns true on success and false on failure.
     *
     * @param array $messages
     * @param object $original
     * @return bool
     */
    public function send(array $messages, \Rhymix\Framework\SMS $original)
    {
        try
        {
            $sender = new \Nurigo\Api\Message($this->_config['api_key'], $this->_config['api_secret']);
            $status = true;
            foreach ($messages as $i => $message)
            {
                $statusStr = array(
                    "0" => "短信发送成功",
                    "-1" => "参数不全",
                    "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
                    "30" => "密码错误",
                    "40" => "账号不存在",
                    "41" => "余额不足",
                    "42" => "帐户已过期",
                    "43" => "IP地址限制",
                    "50" => "内容含有敏感词"
                );
                $smsapi = "http://api.smsbao.com/";
                $user = $this->_config['api_key']; //短信平台帐号
                $pass = md5($this->_config['api_secret']); //短信平台密码
                $content=$message->content;//要发送的短信内容
                $phone = implode(',', $message->to);//要发送短信的手机号码
                $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
                $result =file_get_contents($sendurl) ;
                if ($result !=0)
                {
                    $error_codes = implode(', ', $statusStr[$result] ?: array('Unknown'));
                    $original->addError('Error (' . $error_codes . ') while sending message ' . ($i + 1) . ' of ' . count($messages) . ' to ' . $phone);
                    $status = false;
                }
            }
            return $status;
        }
        catch (\Nurigo\Exceptions\CoolsmsException $e)
        {
            $message->errors[] = class_basename($e) . ': ' . $e->getMessage();
            return false;
        }
    }
}

2:打开项目:modules\member\member.controller.php 修改大概3559行代码

?
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
function procMemberSendVerificationSMS()
{
   $config = MemberModel::getMemberConfig();
   if ($config->phone_number_verify_by_sms !== 'Y')
   {
      throw new Rhymix\Framework\Exceptions\FeatureDisabled;
   }
   
   $phone_country = Context::get('phone_country');
   $phone_number = Context::get('phone_number');
   
   if ($config->phone_number_default_country && (!$phone_country || $config->phone_number_hide_country === 'Y'))
   {
      $phone_country = $config->phone_number_default_country;
   }
   if (preg_match('/[A-Z]{3}/', $phone_country))
   {
      $phone_country_calling_code = preg_replace('/[^0-9]/''', Rhymix\Framework\i18n::getCallingCodeByCountryCode($phone_country));
      if (!$phone_country_calling_code)
      {
         return new BaseObject(-1, 'msg_invalid_phone_country');
      }
   }
   else
   {
      return new BaseObject(-1, 'msg_invalid_phone_country');
   }
   
   if (!preg_match('/[0-9]{2,}/', $phone_number))
   {
      return new BaseObject(-1, 'msg_invalid_phone_number');
   }
   if ($phone_country === 'KOR' && !Rhymix\Framework\Korea::isValidPhoneNumber($phone_number))
   {
      return new BaseObject(-1, 'msg_invalid_phone_number');
   }
   
   $is_special = ($config->special_phone_number && $config->special_phone_number === preg_replace('/[^0-9]/''', $phone_number));
   $code = intval(mt_rand(100000, 999999));
   $_SESSION['verify_by_sms'] = array(
      'country' => $phone_country,
      'number' => $phone_number,
      'code' => $is_special ? intval($config->special_phone_code) : $code,
      'status' => false,
   );
   
   if ($is_special)
   {
      return new BaseObject(0, 'verify_by_sms_code_sent');
   }
   
   $sms = new Rhymix\Framework\SMS;
   $sms->addTo($phone_number, $phone_country_calling_code);
           $content = '【' . Context::get('site_module_info')->settings->title . '】 ' . sprintf(lang('member.verify_by_sms_message'), $code);
           $sms->setContent($content);
   $result = $sms->send();
   if ($result && config('sms.type') !== 'dummy')
   {
      return new BaseObject(0, 'verify_by_sms_code_sent');
   }
   else
   {
      return new BaseObject(0, 'verify_by_sms_error');
   }
}

经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:

报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。

另外:我们已经开发好完整的Rhymix_V2.0.16系统短信宝插件,点击此链接 下载及查看安装流程。

开源插件

最新更新

电商类

CMS类

微信类

文章标签