minchao / every8d-php
PHP 的 EVERY8D 短信 SDK(非官方)
1.1.0
2022-07-28 12:47 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.3 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^6.5 || ^7.0 || ^8.0 || ^9.0
- slim/slim: ^3.12
- squizlabs/php_codesniffer: ^3.5
- symfony/console: ^3.4
- symfony/var-dumper: ^3.4
README
every8d-php 是 EVER8D SMS HTTP API 2.1 的非官方 PHP 客户端 SDK,使用前请先确认您已申请 EVER8D 短信账户。若您想在 Laravel 下使用,请参考 every8d-laravel 提供的 Service provider。
支持的 API:
- 获取账户余额
- API21/HTTP/getCredit.ashx
- 短信
- API21/HTTP/sendSMS.ashx
- API21/HTTP/getDeliveryStatus.ashx
- API21/HTTP/eraseBooking.ashx
- 彩信
- API21/HTTP/MMS/sendMMS.ashx
- API21/HTTP/MMS/getDeliveryStatus.ashx
- API21/HTTP/MMS/eraseBooking.ashx
运行环境
- PHP >= 7.0
- Guzzle 要求
安装
推荐使用 Composer 安装 every8d-php SDK,请在您的项目下执行:
$ composer require minchao/every8d-php
使用
初始化 Client,设置 EVERY8D 账户与密码。
<?php require_once __DIR__ . '/vendor/autoload.php'; $client = new \Every8d\Client(['username' => 'USERNAME', 'password' => 'PASSWORD']);
示例
发送 SMS
示例
try { $sms = new \Every8d\Message\SMS('+886987654321', 'Hello, 世界'); $result = $client->sendSMS($sms); } catch (\Exception $e) { // 處理異常 }
结果
[ 'Credit' => 79.0, 'Sent' => 1, 'Cost' => 1.0, 'Unsent' => 0, 'BatchID' => '00000000-0000-0000-0000-000000000000', ]
查询 SMS 发送状态
示例
try { $batchId = '00000000-0000-0000-0000-000000000000'; $result = $client->getDeliveryStatusBySMS($batchId); } catch (\Exception $e) { // 處理異常 }
结果
[ 'Count' => 1, 'Records' => [ 'Name' => '', 'Mobile' => '+886987654321', 'SendTime' => '2018/01/01 00:00:00', 'Cost' => 1.0, 'Status' => 0, ], ]
查询余额
示例
try { $client->getCredit(); } catch (\Exception $e) { // 處理異常 }
结果
79.0
使用 Webhook 接收短信发送报告
若您的账户已设置 callback 报告网址,短信服务器就会在短信发送后以 HTTP GET 方法通知报告网址。您可以参考 webhook 中的示例来接收短信发送报告。
启动 Webhook:
使用 PHP 内置 web 服务器 快速启动一个 Webhook 服务。
$ php -S 127.0.0.1:80 -t webhook webhook/index.php PHP 7.0.26 Development Server started at Mon Jan 1 12:00:00 2018 Listening on http://127.0.0.1:80 Document root is /srv/www/every8d-php/webhook Press Ctrl-C to quit.
注意:PHP 内置 web 服务器仅供开发测试使用,请勿在正式环境或公网上使用
报告示例:
这是一个发送 SMS 后,接收到的报告示例。
[Mon Jan 1 12:01:00 2018] http://your-webhook.com/callback?BatchID=00000000-0000-0000-0000-000000000000&RM=%2b886987654321&RT=20180101120002&STATUS=100&SM=Hello%2c+%e4%b8%96%e7%95%8c&CustID=CUSTID&UserNo=000000&ST=20180101120001&MR=1&SUBJECT=&NAME=NAME&USERID=USERNAME&SOURCE=&CHARGE=0
array:14 [
"BatchID" => "00000000-0000-0000-0000-000000000000"
"RM" => "+886987654321"
"RT" => "20180101120002"
"STATUS" => "100"
"SM" => "Hello, 世界"
"CustID" => "CUSTID"
"UserNo" => "000000"
"ST" => "20180101120001"
"MR" => "1"
"SUBJECT" => ""
"NAME" => "NAME"
"USERID" => "USERNAME"
"SOURCE" => ""
"CHARGE" => "0"
]
开发
开发工具
本项目提供 Command Line Developer Tools,供您在开发时作为测试工具使用。
指令:
$ bin/every8d Developer Tools 0.0.1 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -u, --username=USERNAME EVERY8D Username -p, --password=PASSWORD EVERY8D Password -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: cancel 取消預約簡訊 credit 餘額查詢 delivery-status 發送狀態查詢 help Displays help for a command list Lists commands send 發送 SMS
发送 SMS 示例如下:
$ bin/every8d send -u USERNAME -p PASSWORD +886987654321 'Hello, World' array:5 [ "Credit" => 79.0 "Sent" => 1 "Cost" => 1.0 "Unsent" => 0 "BatchID" => "00000000-0000-0000-0000-000000000000" ]
测试
执行 PHPCS 与 Unit tests。
$ composer run check
生成测试覆盖率报告。
$ composer run coverage-html
许可证
本库根据在 LICENSE 文件中找到的 BSD-style 许可证进行分发。