zhukmax / smsc
用于现代集成 smsc.ru 服务的库
Requires
- php: >=5.6.0
This package is auto-updated.
Last update: 2024-09-22 08:33:35 UTC
README
SMSC.RU API 服务网站集成的组件。基于官方代码的 3.6 版本。
安装
使用 composer
$ composer require zhukmax/smsc
使用
为了正确捕获异常,建议使用 try\catch 构造。不一定要使用 exit() 输出,可以输出错误文本并继续执行脚本。
<?php try { $sms = new \Zhukmax\Smsc\Api( 'test', '123', [ 'https' => true, 'charset' => 'windows-1251', 'from' => 'api@smsc.ru', 'post' => true, 'debug' => '/home/user/smsc.log' ] ); } catch (Exception $exception) { exit($exception->getMessage()); }
也可以继承 \Zhukmax\Smsc\Api 类,并在组件方法执行前后添加自定义行为,甚至重命名某些方法。
<?php class Sms extends \Zhukmax\Smsc\Api { public function balance() { var_dump($this->sendCmd('balance')); } }
构造函数属性
- 客户端登录名
- 密码或密码的 MD5 哈希(小写)
- 选项数组
- protocol - 使用 HTTPS 协议,除 'https' 以外的任何值均视为使用非安全协议 HTTP
- charset - 消息编码:utf-8(默认),koi8-r 或 windows-1251
- from - 发件人电子邮件地址
- post - 使用 POST 方法,布尔值
- debug - 调试标志,布尔值
方法
公共方法
sendSms() - 发送 SMS 函数
-
必需参数
- $phones - 通过逗号或分号分隔的电话号码列表
- $message - 发送的消息
-
可选参数
- $translit - 是否转换为转写(1,2 或 0)
- $time - 需要交付的时间(格式为 DDMMYYhhmm,h1-h2,0ts,+m)
- $id - 消息标识符。是 1 到 2147483647 范围内的 32 位数字。
- $format - 消息格式(0 - 普通短信,1 - flash-sms,2 - wap-push,3 - hlr,4 - bin,5 - bin-hex,6 - ping-sms,7 - mms,8 - mail,9 - call)
- $sender - 发送者名称(发送者 ID)。要禁用默认的 Sender ID,请将空字符串或点作为名称传递。
- $query - 添加到 URL 请求中的附加参数字符串 ("valid=01:00&maxsms=3&tz=2")
- $files - 要发送 MMS 或电子邮件消息的文件路径数组
在成功发送的情况下返回数组 (, <短信数量>, <成本>, <余额>),或者在出错的情况下返回数组 (, -<错误代码>)
sendSmsMail() - SMTP 版本的发送 SMS 函数
getSmsCost() - 获取 SMS 成本函数
-
必需参数
- $phones - 通过逗号或分号分隔的电话号码列表
- $message - 发送的消息
-
可选参数
- $translit - 是否转换为转写(1,2 或 0)
- $format - 消息格式(0 - 普通短信,1 - flash-sms,2 - wap-push,3 - hlr,4 - bin,5 - bin-hex,6 - ping-sms,7 - mms,8 - mail,9 - call)
- $sender - 发送者名称(发送者 ID)
- $query - 添加到 URL 请求中的附加参数字符串 ("list=79999999999:您的密码: 123\n78888888888:您的密码: 456")
返回数组 (<成本>, <短信数量>),或者在出错的情况下返回数组 (0, -<错误代码>)
getStatus() - 检查发送的 SMS 或 HLR 请求的状态函数
-
$id - 消息 ID 或以逗号分隔的 ID 列表
-
$phone - 电话号码或以逗号分隔的电话号码列表
-
$all - 返回所有发送的 SMS 数据,包括消息文本(0,1 或 2)
返回数组(对于多个请求,是二维数组)
对于单个 SMS 消息: (<状态>, <更改时间>, <交付错误代码>)
对于 HLR 请求: (<状态>, <更改时间>, <SMS 错误代码>, <SIM 卡 IMSI 代码>, <服务中心号码>, <注册国家代码>, <运营商代码>, <注册国家名称>, <运营商名称>, <漫游国家名称>, <漫游运营商名称>)
当 $all = 1 时,数组末尾还返回元素:(<发送时间>, <电话号码>, <成本>, , <状态名称>, <消息文本>)
当 $all = 2 时,额外返回 <国家>、<运营商> 和 <地区> 元素
在多重查询时:如果 $all = 0,则每条消息或 HLR 查询额外返回 <消息 ID> 和 <电话号码>
如果 $all = 1 或 $all = 2,则在响应中添加 <消息 ID>
在出错情况下返回数组(0,-<错误代码>)
getBalance() - 获取余额函数
返回余额字符串或错误时的 false
内部方法
sendCmd() - 调用查询函数。构建 URL 并通过服务器的不同连接尝试读取 5 次
readUrl() - 读取 URL 函数
为了运行,必须可用:curl 或 fsockopen(仅限 http)或启用了 allow_url_fopen 选项以使用 file_get_contents
许可证
Apache 许可协议版本 2.0。许可证文本位于文件 许可证文件 中。