smsclub/php-new

用于操作 SMS Club API 的类

dev-master 2021-03-04 14:33 UTC

This package is not auto-updated.

Last update: 2024-09-28 05:26:07 UTC


README

用于操作 SMS Club API 的类。

连接服务

要安装服务,需要在文件开头添加类自动加载器。

require_once 'smsclub_api/autoload.php';

然后声明类

$api = new \SmsclubApi\Services\ApiService([
    'token' => 'your_token',      // Токен пользователя
    'login' => 'your_login',      // Логин пользователя
    'password' => 'your_password' // Пароль пользвоателя
]);

使用

账户

查看余额

要查看余额,需要调用方法 $api->getBalance();。如果成功,将返回一个接口对象 BalanceInterface,如果出错,将返回 false

示例

$balance = $api->getBalance();

if ($balance) {
    // Получить остаток на балансе
    var_dump($balance->getMoney());    
    
    // Получить валюту аккаунта
    var_dump($balance->getCurrency()); 
}

获取用于发送短信的阿尔法名称列表

要获取阿尔法名称列表,需要调用方法 $api->getSmsOriginators();。如果成功,将返回一个接口对象数组 OriginatorInterface,如果出错,将返回 false

示例

$originators = $api->getSmsOriginators();

if ($originators) {
    foreach($originators as $originator) {
        // Получить ID отправителя
        var_dump($originator->getId());   
        
        // Получить имя отправителя
        var_dump($originator->getName());  
    }
}

发送消息

发送短信

要发送短信,需要创建一个实现 SmsInterface 的对象,并将其传递给服务 API 的 sendSms($sms) 方法。调用 sendSms($sms) 方法将返回一个接口对象数组 SendResponseInterface,如果出错,将返回 false

服务包含一个实现 SmsInterface 的对象 - Sms

示例

$sms = new \SmsclubApi\Classes\Sms();
$sms
    // Устанавливаем отправителя
    ->setOriginator(new \SmsclubApi\Classes\Originator('InetShop'))
    // Устанавливаем номера получателей
    // Если получатель один, следует указывать один елемент массива
    ->setPhones(['380123456789', '380123456780'])
     // Устанавливаем текст сообщения
    ->setMessage('Message text')

$result = $api->sendSms($sms);

if ($result) {
    foreach($result as $item) {
        // Получить ID сообщения от SMS Club
        var_dump($item->getId());
        
        // Получить номер на которой отправлено СМС
        var_dump($item->getNumber());
    }
}

发送 Viber 消息

要发送 Viber 消息,需要创建一个实现 ViberMessageInterface 的对象,并将其传递给服务 API 的 sendViber($viberMessage) 方法。调用 sendViber($viberMessage) 方法将返回一个接口对象数组 SendResponseInterface,如果出错,将返回 false

服务包含一个实现 ViberMessageInterface 的对象 - Sms

示例

$viberMessage = new \SmsclubApi\Classes\ViberMessage();
$viberMessage
    // Устанавливаем отправителя
    ->setOriginator(new \SmsclubApi\Classes\Originator('InetShop'))
    // Устанавливаем номера получателей
    // Если получатель один, следует указывать один елемент массива
    ->setPhones(['380123456789', '380123456780'])
     // Устанавливаем текст сообщения
    ->setMessage('Message text');

$result = $api->sendViber($viberMessage);

if ($result) {
    foreach($result as $item) {
        // Получить ID сообщения от SMS Club
        var_dump($item->getId());
        
        // Получить номер на которой отправлено СМС
        var_dump($item->getNumber());
    }
}

获取用于发送 Viber 消息的阿尔法名称列表

要获取阿尔法名称列表,需要调用方法 $api->getViberOriginators();。如果成功,将返回一个接口对象数组 OriginatorInterface,如果出错,将返回 false

示例

$originators = $api->getViberOriginators();

if ($originators) {
    foreach($originators as $originator) {
        // Получить ID отправителя
        var_dump($originator->getId());   
        
        // Получить имя отправителя
        var_dump($originator->getName());  
    }
}

获取状态

状态常量和其描述

建议使用类 StatusHandler 的常量来验证状态

  • SMS_ENROUTE_STATUS - 消息已发送;
  • SMS_DELIVRD_STATUS - 消息已投递;
  • SMS_REJECTED_STATUS - 消息被系统拒绝(黑名单或其他过滤器);
  • SMS_EXPIRED_STATUS - 生存期已过,消息未投递;
  • SMS_UNDELIV_STATUS - 无法投递消息。

获取短信状态

要获取短信状态,需要调用方法 getSmsStatuses([...]) 并传递 SMS Club 系统中短信的 ID 数组。调用该方法将返回一个接口对象数组 SmsStatusInterface,如果出错,将返回 false

示例

$result = $api->getSmsStatuses(['111222333', '444555666']);

if ($result) {
    foreach($result as $item) {
        // Получить ID СМС в системе SMS Club
        var_dump($result->getId());

        // Получить статус сообщения
        var_dump($result->getStatus());
    }
}

可能的状态度列表

  • StatusHandler::SMS_ENROUTE_STATUSMessage enroute.) – 消息已发送;
  • StatusHandler::SMS_DELIVRD_STATUSMessage delivered.) – 消息已投递;
  • StatusHandler::SMS_EXPIRED_STATUSMessage expired.) – 生存期已过,消息未投递;
  • StatusHandler::SMS_UNDELIV_STATUSMessage undelivered.) – 无法投递消息;
  • StatusHandler::SMS_REJECTED_STATUSMessage rejected.) – 消息被系统拒绝(黑名单或其他过滤器)。

注意:为了正确验证状态,应使用类 StatusHandler 的常量,而不是文本值。

获取 Viber 状态

要获取 Viber 消息的状态,需要调用方法 getViberStatuses([...]) 并传递 SMS Club 系统中 Viber 消息的 ID 数组。调用该方法将返回一个接口对象数组 ViberStatusInterface,如果出错,将返回 false

示例

$result = $api->getViberStatuses(['111222333', '444555666']);

if ($result) {
    foreach($result as $item) {
        // Получить ID Viber сообщения в системе SMS Club
        var_dump($result->getId());

        // Получить статус Viber сообщения
        var_dump($result->getStatus());
        
        // Получить дополнительный статус
        var_dump($result->getAdditionalStatus());
    }
}

可能的状态度列表

  • StatusHandler::SMS_ENROUTE_STATUSMessage enroute.) - 消息已发送;
  • StatusHandler::SMS_DELIVRD_STATUSMessage delivered.) – 消息已投递;
  • StatusHandler::SMS_EXPIRED_STATUSMessage expired.) – 生存期已过,消息未投递;
  • StatusHandler::SMS_UNDELIV_STATUSMessage undelivered.) – 无法投递消息;
  • StatusHandler::SMS_REJECTED_STATUSMessage rejected.) – 消息被系统拒绝(黑名单或其他过滤器)。

可能的其他额外状态列表

  • 已读 – 用户已阅读消息;
  • 已由接收者屏蔽 – 用户屏蔽了来自指定阿尔法名称的消息。
  • 未注册 – 用户手机设备上未安装最新的 Viber 应用程序。
  • 不支持群发 – 对于用户移动设备(通常是平板电脑)没有预设 Viber 群发功能。
  • 黑名单 — 电话号码在黑名单中,对其群发被禁止。
  • 垃圾邮件 — 由于疑似垃圾邮件,消息发送被阻止。
  • 审查 — 消息中检测到不文明用语或禁用词。
  • 接收者号码不正确 — 输入了错误的用户号码。
  • 禁止的运营商 — 禁止向该运营商的号码发送消息。

重要!附加状态仅具有信息性质,并且可能由 SMS Club 服务端更改。不要使用附加状态进行程序逻辑(例如比较、选择等)。

注意:为了正确验证状态,应使用类 StatusHandler 的常量,而不是文本值。

错误处理

调用负责 SMS Club 服务请求的方法时,返回值可能为 false,这表示存在错误。要获取错误列表,请使用方法 getErrors()

为了检查是否存在错误,应使用方法 hasErrors()

方法 getErrors() 返回一个包含 ErrorInterface 接口对象的数组。

ErrorInterface 接口的方法

  • getCode() - 获取错误代码;
  • getMessage() - 获取错误消息;

示例

$balance = $api->getBalance();

if (!$balance) {
    foreach($api->getErrors() as $error) {
        // Получить код ошибки
        var_dump($error->getCode());
        
        // Получить сообщение ошибки
        var_dump($error->getMessage());
    }
}

// Или:

if ($api->hasErrors()) {
    foreach($api->getErrors() as $error) {
        // Получить сообщение ошибки
        var_dump($error->getCode());
        
        // Получить сообщение ошибки
        var_dump($error->getCode());
    }
}

可用的错误代码(描述见工作文档)

  • ErrorHandler::SMS_PHONE_EMPTY (101) - 未填写接收者号码;
  • ErrorHandler::SMS_MESSAGE_EMPTY (102) - 未填写消息文本;
  • ErrorHandler::SMS_SRC_ADDR_EMPTY (103) - 未填写消息发送者;
  • ErrorHandler::SMS_INVALID_PHONE (104) - 接收者号码不正确;
  • ErrorHandler::SMS_INVALID_ID_SMS (105) - 消息 ID 不正确;
  • ErrorHandler::SMS_UNAUTHORIZED (106) - 认证数据不正确;
  • ErrorHandler::SMS_VALIDATION (107) - 数据验证错误;
  • ErrorHandler::SMS_TOO_MANY_QUERIES (108) - 超过请求限制;
  • ErrorHandler::SMS_SERVICE_UNAVAILABLE (109) - 服务不可用;
  • ErrorHandler::VIBER_ACCOUNT (110) - 从该账户发送 Viber 群发不可用;
  • ErrorHandler::VIBER_SYSTEM_ERROR (111) - 系统错误;
  • ErrorHandler::VIBER_NO_MONEY (112) - 资金不足;
  • ErrorHandler::VIBER_ANY_CORRECT_PHONES (113) - 接收者号码不正确;
  • ErrorHandler::VIBER_TEXT (114) - 消息文本不正确;
  • ErrorHandler::VIBER_UPLOAD_IMG (115) - 上传图像时出错;
  • ErrorHandler::VIBER_SENDER (116) - 发送者不正确;
  • ErrorHandler::VIBER_SMS (117) - 不正确的 SMS 消息(级联发送);
  • ErrorHandler::VIBER_INCORRECT_PHONES (118) - 接收者号码不正确;