Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
easy-sms
提交
27a86912
E
easy-sms
项目概览
OpenDocCN
/
easy-sms
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
easy-sms
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
27a86912
编写于
5月 20, 2018
作者:
O
overtrue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
国际短信支持
上级
9d889d4f
变更
42
显示空白变更内容
内联
并排
Showing
42 changed file
with
548 addition
and
402 deletion
+548
-402
README.md
README.md
+19
-0
src/Contracts/GatewayInterface.php
src/Contracts/GatewayInterface.php
+4
-6
src/Contracts/PhoneNumberInterface.php
src/Contracts/PhoneNumberInterface.php
+53
-0
src/EasySms.php
src/EasySms.php
+40
-0
src/Gateways/AlidayuGateway.php
src/Gateways/AlidayuGateway.php
+6
-15
src/Gateways/AliyunGateway.php
src/Gateways/AliyunGateway.php
+7
-16
src/Gateways/BaiduGateway.php
src/Gateways/BaiduGateway.php
+7
-16
src/Gateways/ChuanglanGateway.php
src/Gateways/ChuanglanGateway.php
+7
-16
src/Gateways/ErrorlogGateway.php
src/Gateways/ErrorlogGateway.php
+5
-14
src/Gateways/Gateway.php
src/Gateways/Gateway.php
+1
-1
src/Gateways/HuaxinGateway.php
src/Gateways/HuaxinGateway.php
+6
-15
src/Gateways/HuyiGateway.php
src/Gateways/HuyiGateway.php
+7
-16
src/Gateways/JuheGateway.php
src/Gateways/JuheGateway.php
+7
-16
src/Gateways/LuosimaoGateway.php
src/Gateways/LuosimaoGateway.php
+7
-16
src/Gateways/QcloudGateway.php
src/Gateways/QcloudGateway.php
+12
-20
src/Gateways/RongcloudGateway.php
src/Gateways/RongcloudGateway.php
+10
-24
src/Gateways/SendcloudGateway.php
src/Gateways/SendcloudGateway.php
+7
-15
src/Gateways/SubmailGateway.php
src/Gateways/SubmailGateway.php
+9
-18
src/Gateways/TianyiwuxianGateway.php
src/Gateways/TianyiwuxianGateway.php
+7
-6
src/Gateways/TwilioGateway.php
src/Gateways/TwilioGateway.php
+12
-2
src/Gateways/YunpianGateway.php
src/Gateways/YunpianGateway.php
+8
-17
src/Gateways/YuntongxunGateway.php
src/Gateways/YuntongxunGateway.php
+6
-15
src/Messenger.php
src/Messenger.php
+5
-27
src/PhoneNumber.php
src/PhoneNumber.php
+115
-0
tests/EasySmsTest.php
tests/EasySmsTest.php
+24
-5
tests/Gateways/AlidayuGatewayTest.php
tests/Gateways/AlidayuGatewayTest.php
+4
-8
tests/Gateways/AliyunGatewayTest.php
tests/Gateways/AliyunGatewayTest.php
+4
-8
tests/Gateways/BaiduGatewayTest.php
tests/Gateways/BaiduGatewayTest.php
+3
-7
tests/Gateways/ErrorlogGatewayTest.php
tests/Gateways/ErrorlogGatewayTest.php
+2
-1
tests/Gateways/GatewayTest.php
tests/Gateways/GatewayTest.php
+2
-1
tests/Gateways/HuaxinGatewayTest.php
tests/Gateways/HuaxinGatewayTest.php
+4
-8
tests/Gateways/HuyiGatewayTest.php
tests/Gateways/HuyiGatewayTest.php
+4
-8
tests/Gateways/JuheGatewayTest.php
tests/Gateways/JuheGatewayTest.php
+3
-7
tests/Gateways/LuosimaoGatewayTest.php
tests/Gateways/LuosimaoGatewayTest.php
+3
-7
tests/Gateways/QcloudGatewayTest.php
tests/Gateways/QcloudGatewayTest.php
+55
-8
tests/Gateways/SendcloudGatewayTest.php
tests/Gateways/SendcloudGatewayTest.php
+6
-9
tests/Gateways/SubmailGatewayTest.php
tests/Gateways/SubmailGatewayTest.php
+4
-8
tests/Gateways/TwilioGatewayTest.php
tests/Gateways/TwilioGatewayTest.php
+2
-6
tests/Gateways/YunpianGatewayTest.php
tests/Gateways/YunpianGatewayTest.php
+6
-10
tests/Gateways/YuntongxunGatewayTest.php
tests/Gateways/YuntongxunGatewayTest.php
+4
-8
tests/PhoneNumberTest.php
tests/PhoneNumberTest.php
+50
-0
tests/TestCase.php
tests/TestCase.php
+1
-2
未找到文件。
README.md
浏览文件 @
27a86912
...
...
@@ -178,6 +178,25 @@ $easySms->send(13188888888, [
]);
```
## 国际短信
国际短信与国内短信的区别是号码前面需要加国际码,但是由于各平台对国际号码的写法不一致,所以在发送国际短信的时候有一点区别:
```
php
use
Overtrue\EasySms\PhoneNumber
;
// 发送到国际码为 31 的国际号码
$number
=
new
PhoneNumber
(
13188888888
,
31
);
$easySms
->
send
(
$number
,
[
'content'
=>
'您的验证码为: 6379'
,
'template'
=>
'SMS_001'
,
'data'
=>
[
'code'
=>
6379
],
]);
```
## 定义短信
你可以根据发送场景的不同,定义不同的短信类,从而实现一处定义多处调用,你可以继承
`Overtrue\EasySms\Message`
来定义短信模型:
...
...
src/Contracts/GatewayInterface.php
浏览文件 @
27a86912
...
...
@@ -28,13 +28,11 @@ interface GatewayInterface
/**
* Send a short message.
*
* @param
int|string|array
$to
* @param
\Overtrue\EasySms\Contracts\PhoneNumberInterface
$to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
);
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
);
}
src/Contracts/PhoneNumberInterface.php
0 → 100644
浏览文件 @
27a86912
<?php
/*
* This file is part of the overtrue/easy-sms.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace
Overtrue\EasySms\Contracts
;
/**
* Interface PhoneNumberInterface.
*
* @author overtrue <i@overtrue.me>
*/
interface
PhoneNumberInterface
extends
\
JsonSerializable
{
/**
* 86.
*
* @return int
*/
public
function
getIDDCode
();
/**
* 18888888888.
*
* @return int
*/
public
function
getNumber
();
/**
* +8618888888888.
*
* @return string
*/
public
function
getUniversalNumber
();
/**
* 008618888888888.
*
* @return string
*/
public
function
getZeroPrefixedNumber
();
/**
* @return string
*/
public
function
__toString
();
}
src/EasySms.php
浏览文件 @
27a86912
...
...
@@ -13,6 +13,8 @@ namespace Overtrue\EasySms;
use
Closure
;
use
Overtrue\EasySms\Contracts\GatewayInterface
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Contracts\StrategyInterface
;
use
Overtrue\EasySms\Exceptions\InvalidArgumentException
;
use
Overtrue\EasySms\Strategies\OrderStrategy
;
...
...
@@ -82,9 +84,47 @@ class EasySms
*/
public
function
send
(
$to
,
$message
,
array
$gateways
=
[])
{
$to
=
$this
->
formatPhoneNumber
(
$to
);
$message
=
$this
->
formatMessage
(
$message
);
return
$this
->
getMessenger
()
->
send
(
$to
,
$message
,
$gateways
);
}
/**
* @param string|\Overtrue\EasySms\Contracts\PhoneNumberInterface $number
*
* @return \Overtrue\EasySms\PhoneNumber
*/
protected
function
formatPhoneNumber
(
$number
)
{
if
(
$number
instanceof
PhoneNumberInterface
)
{
return
$number
;
}
return
new
PhoneNumber
(
intval
(
$number
));
}
/**
* @param array|string|\Overtrue\EasySms\Contracts\MessageInterface $message
*
* @return \Overtrue\EasySms\Contracts\MessageInterface
*/
protected
function
formatMessage
(
$message
)
{
if
(
!
(
$message
instanceof
MessageInterface
))
{
if
(
!
is_array
(
$message
))
{
$message
=
[
'content'
=>
strval
(
$message
),
'template'
=>
strval
(
$message
),
];
}
$message
=
new
Message
(
$message
);
}
return
$message
;
}
/**
* Create a gateway.
*
...
...
src/Gateways/AlidayuGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -34,25 +35,15 @@ class AlidayuGateway extends Gateway
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'alidayu'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'method'
=>
self
::
ENDPOINT_METHOD
,
...
...
src/Gateways/AliyunGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -42,25 +43,15 @@ class AliyunGateway extends Gateway
const
ENDPOINT_SIGNATURE_VERSION
=
'1.0'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'aliyun'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'RegionId'
=>
self
::
ENDPOINT_REGION_ID
,
...
...
@@ -72,7 +63,7 @@ class AliyunGateway extends Gateway
'Timestamp'
=>
$this
->
getTimestamp
(),
'Action'
=>
self
::
ENDPOINT_METHOD
,
'Version'
=>
self
::
ENDPOINT_VERSION
,
'PhoneNumbers'
=>
strval
(
$to
),
'PhoneNumbers'
=>
strval
(
$to
->
getZeroPrefixedNumber
()
),
'SignName'
=>
$config
->
get
(
'sign_name'
),
'TemplateCode'
=>
$message
->
getTemplate
(
$this
),
'TemplateParam'
=>
json_encode
(
$message
->
getData
(
$this
),
JSON_FORCE_OBJECT
),
...
...
src/Gateways/BaiduGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -35,32 +36,22 @@ class BaiduGateway extends Gateway
const
SUCCESS_CODE
=
1000
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'baidu'
;
}
/**
* Send message.
*
* @param
array|int|string
$to
* @param
\Overtrue\EasySms\Contracts\PhoneNumberInterface
$to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'invokeId'
=>
$config
->
get
(
'invoke_id'
),
'phoneNumber'
=>
$to
,
'phoneNumber'
=>
$to
->
getNumber
()
,
'templateCode'
=>
$message
->
getTemplate
(
$this
),
'contentVar'
=>
$message
->
getData
(
$this
),
];
...
...
src/Gateways/ChuanglanGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -28,30 +29,20 @@ class ChuanglanGateway extends Gateway
const
ENDPOINT_URL
=
'https://sms.253.com/msg/send'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'chuanglan'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'un'
=>
$config
->
get
(
'username'
),
'pw'
=>
$config
->
get
(
'password'
),
'phone'
=>
$to
,
'phone'
=>
$to
->
getIDDCode
()
.
$to
->
getNumber
()
,
'msg'
=>
$message
->
getContent
(
$this
),
];
...
...
src/Gateways/ErrorlogGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Support\Config
;
/**
...
...
@@ -20,23 +21,13 @@ use Overtrue\EasySms\Support\Config;
class
ErrorlogGateway
extends
Gateway
{
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'errorlog'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
if
(
is_array
(
$to
))
{
$to
=
implode
(
','
,
$to
);
...
...
src/Gateways/Gateway.php
浏览文件 @
27a86912
...
...
@@ -90,6 +90,6 @@ abstract class Gateway implements GatewayInterface
*/
public
function
getName
()
{
return
''
;
return
\
strtolower
(
str_replace
([
__NAMESPACE__
.
'\\'
,
'Gateway'
],
''
,
\
get_class
(
$this
)))
;
}
}
src/Gateways/HuaxinGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -28,25 +29,15 @@ class HuaxinGateway extends Gateway
const
ENDPOINT_TEMPLATE
=
'http://%s/smsJson.aspx'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'huaxin'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$endpoint
=
$this
->
buildEndpoint
(
$config
->
get
(
'ip'
));
...
...
src/Gateways/HuyiGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -32,29 +33,19 @@ class HuyiGateway extends Gateway
const
SUCCESS_CODE
=
2
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'huyi'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'account'
=>
$config
->
get
(
'api_id'
),
'mobile'
=>
strval
(
$to
),
'mobile'
=>
$to
->
getIDDCode
()
?
\
sprintf
(
'%s %s'
,
$to
->
getIDDCode
(),
$to
->
getNumber
())
:
$to
->
getNumber
(
),
'content'
=>
$message
->
getContent
(
$this
),
'time'
=>
time
(),
'format'
=>
self
::
ENDPOINT_FORMAT
,
...
...
src/Gateways/JuheGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -30,28 +31,18 @@ class JuheGateway extends Gateway
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'juhe'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getNumber
()
,
'tpl_id'
=>
$message
->
getTemplate
(
$this
),
'tpl_value'
=>
$this
->
formatTemplateVars
(
$message
->
getData
(
$this
)),
'dtype'
=>
self
::
ENDPOINT_FORMAT
,
...
...
src/Gateways/LuosimaoGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -32,30 +33,20 @@ class LuosimaoGateway extends Gateway
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'luosimao'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$endpoint
=
$this
->
buildEndpoint
(
'sms-api'
,
'send'
);
$result
=
$this
->
post
(
$endpoint
,
[
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getNumber
()
,
'message'
=>
$message
->
getContent
(
$this
),
],
[
'Authorization'
=>
'Basic '
.
base64_encode
(
'api:key-'
.
$config
->
get
(
'api_key'
)),
...
...
src/Gateways/QcloudGateway.php
浏览文件 @
27a86912
...
...
@@ -12,14 +12,15 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
/**
* Class
Alidayu
Gateway.
* Class
Qcloud
Gateway.
*
* @see https://
yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx
* @see https://
cloud.tencent.com/document/product/382/13297
*/
class
QcloudGateway
extends
Gateway
{
...
...
@@ -34,32 +35,23 @@ class QcloudGateway extends Gateway
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'qcloud'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$type
=
!
empty
(
$message
->
getData
(
$this
)[
'type'
])
?
$message
->
getData
(
$this
)[
'type'
]
:
0
;
$params
=
[
'tel'
=>
[
'nationcode'
=>
$
message
->
getData
(
$this
)[
'nationcode'
]
??
'86'
,
'mobile'
=>
$to
,
'nationcode'
=>
$
to
->
getIDDCode
()
?:
86
,
'mobile'
=>
$to
->
getNumber
()
,
],
'type'
=>
$
message
->
getData
(
$this
)[
'type'
]
??
0
,
'type'
=>
$
type
,
'msg'
=>
$message
->
getContent
(
$this
),
'time'
=>
time
(),
'extend'
=>
''
,
...
...
src/Gateways/RongcloudGateway.php
浏览文件 @
27a86912
...
...
@@ -13,6 +13,7 @@ namespace Overtrue\EasySms\Gateways;
use
GuzzleHttp\Exception\ClientException
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -39,33 +40,18 @@ class RongcloudGateway extends Gateway
const
SUCCESS_CODE
=
200
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'rongcloud'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$data
=
$message
->
getData
();
if
(
array_key_exists
(
'action'
,
$data
))
{
$action
=
$data
[
'action'
];
}
else
{
$action
=
self
::
ENDPOINT_ACTION
;
}
$action
=
array_key_exists
(
'action'
,
$data
)
?
$data
[
'action'
]
:
self
::
ENDPOINT_ACTION
;
$endpoint
=
$this
->
buildEndpoint
(
$action
);
$headers
=
[
...
...
@@ -78,7 +64,7 @@ class RongcloudGateway extends Gateway
switch
(
$action
)
{
case
'sendCode'
:
$params
=
[
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getNumber
()
,
'region'
=>
self
::
ENDPOINT_REGION
,
'templateId'
=>
$message
->
getTemplate
(
$this
),
];
...
...
@@ -97,7 +83,7 @@ class RongcloudGateway extends Gateway
break
;
case
'sendNotify'
:
$params
=
[
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getNumber
()
,
'region'
=>
self
::
ENDPOINT_REGION
,
'templateId'
=>
$message
->
getTemplate
(
$this
),
];
...
...
src/Gateways/SendcloudGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -27,20 +28,10 @@ class SendcloudGateway extends Gateway
const
ENDPOINT_TEMPLATE
=
'http://www.sendcloud.net/smsapi/%s'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'sendcloud'
;
}
/**
* Send a short message.
*
* @param
int|string|array
$to
* @param
\Overtrue\EasySms\Contracts\PhoneNumberInterface
$to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
...
...
@@ -48,12 +39,13 @@ class SendcloudGateway extends Gateway
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$params
=
[
'smsUser'
=>
$config
->
get
(
'sms_user'
),
'templateId'
=>
$message
->
getTemplate
(
$this
),
'phone'
=>
is_array
(
$to
)
?
implode
(
','
,
$to
)
:
$to
,
'msgType'
=>
$to
->
getIDDCode
()
?
2
:
0
,
'phone'
=>
$to
->
getNumber
(),
'vars'
=>
$this
->
formatTemplateVars
(
$message
->
getData
(
$this
)),
];
...
...
src/Gateways/SubmailGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -25,38 +26,28 @@ class SubmailGateway extends Gateway
{
use
HasHttpRequest
;
const
ENDPOINT_TEMPLATE
=
'https://api.mysubmail.com/
message/
%s.%s'
;
const
ENDPOINT_TEMPLATE
=
'https://api.mysubmail.com/%s.%s'
;
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'submail'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$endpoint
=
$this
->
buildEndpoint
(
'
xsend'
);
$endpoint
=
$this
->
buildEndpoint
(
$to
->
getIDDCode
()
?
'internationalsms/xsend'
:
'message/
xsend'
);
$result
=
$this
->
post
(
$endpoint
,
[
'appid'
=>
$config
->
get
(
'app_id'
),
'signature'
=>
$config
->
get
(
'app_key'
),
'project'
=>
$config
->
get
(
'project'
),
'to'
=>
$to
,
'to'
=>
$to
->
getUniversalNumber
()
,
'vars'
=>
json_encode
(
$message
->
getData
(
$this
),
JSON_FORCE_OBJECT
),
]);
...
...
src/Gateways/TianyiwuxianGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -38,15 +39,15 @@ class TianyiwuxianGateway extends Gateway
const
SUCCESS_CODE
=
'0'
;
/**
* @param
array|int|string
$to
* @param
\Overtrue\EasySms\Contracts\PhoneNumberInterface
$to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$endpoint
=
$this
->
buildEndpoint
();
...
...
@@ -54,7 +55,7 @@ class TianyiwuxianGateway extends Gateway
'gwid'
=>
$config
->
get
(
'gwid'
),
'type'
=>
self
::
ENDPOINT_TYPE
,
'rece'
=>
self
::
ENDPOINT_FORMAT
,
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getNumber
()
,
'message'
=>
$message
->
getContent
(
$this
),
'username'
=>
$config
->
get
(
'username'
),
'password'
=>
strtoupper
(
md5
(
$config
->
get
(
'password'
))),
...
...
src/Gateways/TwilioGateway.php
浏览文件 @
27a86912
...
...
@@ -13,6 +13,7 @@ namespace Overtrue\EasySms\Gateways;
use
GuzzleHttp\Exception\ClientException
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -38,13 +39,22 @@ class TwilioGateway extends Gateway
return
'twilio'
;
}
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
/**
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
*/
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$accountSid
=
$config
->
get
(
'account_sid'
);
$endpoint
=
$this
->
buildEndPoint
(
$accountSid
);
$params
=
[
'To'
=>
$to
,
'To'
=>
$to
->
getUniversalNumber
()
,
'From'
=>
$config
->
get
(
'from'
),
'Body'
=>
$message
->
getContent
(
$this
),
];
...
...
src/Gateways/YunpianGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -19,7 +20,7 @@ use Overtrue\EasySms\Traits\HasHttpRequest;
/**
* Class YunpianGateway.
*
* @see https://www.yunpian.com/
api2.0/api-domestic
/single_send.html
* @see https://www.yunpian.com/
doc/zh_CN/intl
/single_send.html
*/
class
YunpianGateway
extends
Gateway
{
...
...
@@ -32,31 +33,21 @@ class YunpianGateway extends Gateway
const
ENDPOINT_FORMAT
=
'json'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'yunpian'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$endpoint
=
$this
->
buildEndpoint
(
'sms'
,
'sms'
,
'single_send'
);
$result
=
$this
->
post
(
$endpoint
,
[
'apikey'
=>
$config
->
get
(
'api_key'
),
'mobile'
=>
$to
,
'mobile'
=>
$to
->
getUniversalNumber
()
,
'text'
=>
$message
->
getContent
(
$this
),
]);
...
...
src/Gateways/YuntongxunGateway.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Traits\HasHttpRequest
;
...
...
@@ -40,25 +41,15 @@ class YuntongxunGateway extends Gateway
const
SUCCESS_CODE
=
'000000'
;
/**
* Get gateway name.
*
* @return string
*/
public
function
getName
()
{
return
'yuntongxun'
;
}
/**
* @param array|int|string $to
* @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
* @param \Overtrue\EasySms\Contracts\MessageInterface $message
* @param \Overtrue\EasySms\Support\Config $config
*
* @return array
*
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException;
* @throws \Overtrue\EasySms\Exceptions\GatewayErrorException
;
*/
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
$datetime
=
date
(
'YmdHis'
);
...
...
src/Messenger.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Exceptions\NoGatewayAvailableException
;
use
Overtrue\EasySms\Support\Config
;
...
...
@@ -42,8 +43,8 @@ class Messenger
/**
* Send a message.
*
* @param
string|array
$to
* @param
string|array|\Overtrue\EasySms\Contracts\MessageInterface
$message
* @param
\Overtrue\EasySms\Contracts\PhoneNumberInterface
$to
* @param
\Overtrue\EasySms\Contracts\MessageInterface
$message
* @param array $gateways
*
* @return array
...
...
@@ -51,10 +52,8 @@ class Messenger
* @throws \Overtrue\EasySms\Exceptions\InvalidArgumentException
* @throws \Overtrue\EasySms\Exceptions\NoGatewayAvailableException
*/
public
function
send
(
$to
,
$message
,
array
$gateways
=
[])
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
array
$gateways
=
[])
{
$message
=
$this
->
formatMessage
(
$message
);
if
(
empty
(
$gateways
))
{
$gateways
=
$message
->
getGateways
();
}
...
...
@@ -97,27 +96,6 @@ class Messenger
return
$results
;
}
/**
* @param array|string|\Overtrue\EasySms\Contracts\MessageInterface $message
*
* @return \Overtrue\EasySms\Contracts\MessageInterface
*/
protected
function
formatMessage
(
$message
)
{
if
(
!
(
$message
instanceof
MessageInterface
))
{
if
(
!
is_array
(
$message
))
{
$message
=
[
'content'
=>
strval
(
$message
),
'template'
=>
strval
(
$message
),
];
}
$message
=
new
Message
(
$message
);
}
return
$message
;
}
/**
* @param array $gateways
*
...
...
src/PhoneNumber.php
0 → 100644
浏览文件 @
27a86912
<?php
/*
* This file is part of the overtrue/easy-sms.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace
Overtrue\EasySms
;
/**
* Class PhoneNumberInterface.
*
* @author overtrue <i@overtrue.me>
*/
class
PhoneNumber
implements
\
Overtrue\EasySms\Contracts\PhoneNumberInterface
{
/**
* @var int
*/
protected
$number
;
/**
* @var int
*/
protected
$IDDCode
;
/**
* PhoneNumberInterface constructor.
*
* @param int $numberWithoutIDDCode
* @param string $IDDCode
*/
public
function
__construct
(
$numberWithoutIDDCode
,
$IDDCode
=
null
)
{
$this
->
number
=
$numberWithoutIDDCode
;
$this
->
IDDCode
=
$IDDCode
?
intval
(
ltrim
(
$IDDCode
,
'+0'
))
:
null
;
}
/**
* 86.
*
* @return int
*/
public
function
getIDDCode
()
{
return
$this
->
IDDCode
;
}
/**
* 18888888888.
*
* @return int
*/
public
function
getNumber
()
{
return
$this
->
number
;
}
/**
* +8618888888888.
*
* @return string
*/
public
function
getUniversalNumber
()
{
return
$this
->
getPrefixedIDDCode
(
'+'
)
.
$this
->
number
;
}
/**
* 008618888888888.
*
* @return string
*/
public
function
getZeroPrefixedNumber
()
{
return
$this
->
getPrefixedIDDCode
(
'00'
)
.
$this
->
number
;
}
/**
* @param string $prefix
*
* @return null|string
*/
public
function
getPrefixedIDDCode
(
$prefix
)
{
return
$this
->
IDDCode
?
$prefix
.
$this
->
IDDCode
:
null
;
}
/**
* @return string
*/
public
function
__toString
()
{
return
$this
->
getUniversalNumber
();
}
/**
* Specify data which should be serialized to JSON.
*
* @see http://php.net/manual/en/jsonserializable.jsonserialize.php
*
* @return mixed data which can be serialized by <b>json_encode</b>,
* which is a value of any type other than a resource
*
* @since 5.4.0
*/
public
function
jsonSerialize
()
{
return
$this
->
getUniversalNumber
();
}
}
tests/EasySmsTest.php
浏览文件 @
27a86912
...
...
@@ -13,10 +13,12 @@ namespace Overtrue\EasySms\Tests;
use
Overtrue\EasySms\Contracts\GatewayInterface
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\EasySms
;
use
Overtrue\EasySms\Exceptions\InvalidArgumentException
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\Messenger
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
RuntimeException
;
...
...
@@ -76,14 +78,31 @@ class EasySmsTest extends TestCase
public
function
testSend
()
{
$message
=
new
Message
([
'content'
=>
'hello'
]);
$messenger
=
\
Mockery
::
mock
(
Messenger
::
class
);
$messenger
->
allows
()
->
send
(
\
Mockery
::
on
(
function
(
$number
)
{
return
$number
instanceof
PhoneNumber
&&
!
empty
(
$number
->
getNumber
());
}),
\
Mockery
::
on
(
function
(
$message
)
{
return
$message
instanceof
MessageInterface
&&
!
empty
(
$message
->
getContent
());
}),
[])
->
andReturn
(
'send-result'
);
$easySms
=
\
Mockery
::
mock
(
EasySms
::
class
.
'[getMessenger]'
,
[[
'default'
=>
DummyGatewayForTest
::
class
]]);
$messenger
=
\
Mockery
::
mock
(
Messenger
::
class
);
$messenger
->
shouldReceive
(
'send'
)
->
with
(
'mock-number'
,
$message
,
[])
->
andReturn
(
'send-result'
);
$easySms
->
shouldReceive
(
'getMessenger'
)
->
andReturn
(
$messenger
);
$this
->
assertSame
(
'send-result'
,
$easySms
->
send
(
'mock-number'
,
$message
,
[]));
// simple
$this
->
assertSame
(
'send-result'
,
$easySms
->
send
(
'18888888888'
,
[
'content'
=>
'hello'
]));
// message object
$message
=
new
Message
([
'content'
=>
'hello'
]);
$this
->
assertSame
(
'send-result'
,
$easySms
->
send
(
'18888888888'
,
$message
,
[]));
// phone number object
$number
=
new
PhoneNumber
(
'18888888888'
,
35
);
$message
=
new
Message
([
'content'
=>
'hello'
]);
$messenger
=
\
Mockery
::
mock
(
Messenger
::
class
);
$messenger
->
expects
()
->
send
(
$number
,
$message
,
[])
->
andReturn
(
'mock-result'
);
$easySms
=
\
Mockery
::
mock
(
EasySms
::
class
.
'[getMessenger]'
,
[[
'default'
=>
DummyGatewayForTest
::
class
]]);
$easySms
->
shouldReceive
(
'getMessenger'
)
->
andReturn
(
$messenger
);
$this
->
assertSame
(
'mock-result'
,
$easySms
->
send
(
$number
,
$message
));
}
public
function
testGetMessenger
()
...
...
@@ -101,7 +120,7 @@ class DummyGatewayForTest implements GatewayInterface
return
'name'
;
}
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
return
'send-result'
;
}
...
...
tests/Gateways/AlidayuGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\AlidayuGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
AlidayuGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'alidayu'
,
(
new
AlidayuGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -43,7 +39,7 @@ class AlidayuGatewayTest extends TestCase
'sms_free_sign_name'
=>
'mock-api-sign-name'
,
'app_key'
=>
'mock-api-key'
,
'sms_template_code'
=>
'mock-template-code'
,
'rec_num'
=>
strval
(
18888888888
),
'rec_num'
=>
strval
(
new
PhoneNumber
(
18888888888
)
),
'sms_param'
=>
json_encode
([
'code'
=>
'123456'
,
'time'
=>
'15'
]),
];
$gateway
->
shouldReceive
(
'post'
)
...
...
@@ -75,12 +71,12 @@ class AlidayuGatewayTest extends TestCase
$this
->
assertSame
([
'success_response'
=>
'mock-result'
,
],
$gateway
->
send
(
18888888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
100
);
$this
->
expectExceptionMessage
(
'mock-msg'
);
$gateway
->
send
(
18888888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
);
}
}
tests/Gateways/AliyunGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\AliyunGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
AliyunGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'aliyun'
,
(
new
AliyunGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -44,7 +40,7 @@ class AliyunGatewayTest extends TestCase
// 'Timestamp' => date('Y-m-d\TH:i:s\Z'),
'Action'
=>
'SendSms'
,
'Version'
=>
'2017-05-25'
,
'PhoneNumbers'
=>
strval
(
18888888888
),
'PhoneNumbers'
=>
strval
(
new
PhoneNumber
(
18888888888
)
),
'SignName'
=>
'mock-api-sign-name'
,
'TemplateCode'
=>
'mock-template-code'
,
'TemplateParam'
=>
json_encode
([
'code'
=>
'123456'
]),
...
...
@@ -81,12 +77,12 @@ class AliyunGatewayTest extends TestCase
$this
->
assertSame
([
'Code'
=>
'OK'
,
'Message'
=>
'mock-result'
,
],
$gateway
->
send
(
18888888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
1234
);
$this
->
expectExceptionMessage
(
'mock-err-msg'
);
$gateway
->
send
(
18888888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
);
}
}
tests/Gateways/BaiduGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\BaiduGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
BaiduGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'baidu'
,
(
new
BaiduGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -62,12 +58,12 @@ class BaiduGatewayTest extends TestCase
]);
$config
=
new
Config
(
$config
);
$this
->
assertSame
([
'code'
=>
BaiduGateway
::
SUCCESS_CODE
,
'message'
=>
'success'
],
$gateway
->
send
(
18888888888
,
$message
,
$config
));
$this
->
assertSame
([
'code'
=>
BaiduGateway
::
SUCCESS_CODE
,
'message'
=>
'success'
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
100
);
$this
->
expectExceptionMessage
(
'mock-msg'
);
$gateway
->
send
(
18888888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18888888888
)
,
$message
,
$config
);
}
}
tests/Gateways/ErrorlogGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -13,6 +13,7 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Gateways\ErrorlogGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
...
...
@@ -37,7 +38,7 @@ class ErrorlogGatewayTest extends TestCase
'data'
=>
[
'foo'
=>
'bar'
],
]);
$gateway
->
send
(
18188888888
,
$message
,
new
Config
());
$gateway
->
send
(
new
PhoneNumber
(
new
PhoneNumber
(
18188888888
))
,
$message
,
new
Config
());
$this
->
assertTrue
(
file_exists
(
$this
->
logFile
));
$this
->
assertContains
(
...
...
tests/Gateways/GatewayTest.php
浏览文件 @
27a86912
...
...
@@ -12,6 +12,7 @@
namespace
Overtrue\EasySms\Tests\Gateways
;
use
Overtrue\EasySms\Contracts\MessageInterface
;
use
Overtrue\EasySms\Contracts\PhoneNumberInterface
;
use
Overtrue\EasySms\Gateways\Gateway
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
...
...
@@ -44,7 +45,7 @@ class GatewayTest extends TestCase
class
DummyGatewayForGatewayTest
extends
Gateway
{
public
function
send
(
$to
,
MessageInterface
$message
,
Config
$config
)
public
function
send
(
PhoneNumberInterface
$to
,
MessageInterface
$message
,
Config
$config
)
{
return
'mock-result'
;
}
...
...
tests/Gateways/HuaxinGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\HuaxinGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
HuaxinGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'huaxin'
,
(
new
HuaxinGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -39,7 +35,7 @@ class HuaxinGatewayTest extends TestCase
'userid'
=>
'mock-user-id'
,
'password'
=>
'mock-password'
,
'account'
=>
'mock-account'
,
'mobile'
=>
18188888888
,
'mobile'
=>
new
PhoneNumber
(
18188888888
)
,
'content'
=>
'This is a test message.'
,
'sendTime'
=>
''
,
'action'
=>
'send'
,
...
...
@@ -68,13 +64,13 @@ class HuaxinGatewayTest extends TestCase
'taskID'
=>
'1504080852350206'
,
'successCounts'
=>
'1'
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
)
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
)
);
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
400
);
$this
->
expectExceptionMessage
(
'操作失败'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/HuyiGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\HuyiGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
HuyiGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'huyi'
,
(
new
HuyiGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -34,7 +30,7 @@ class HuyiGatewayTest extends TestCase
$params
=
[
'account'
=>
'mock-api-id'
,
'mobile'
=>
strval
(
18188888888
)
,
'mobile'
=>
18188888888
,
'content'
=>
'This is a test message.'
,
'format'
=>
'json'
,
];
...
...
@@ -53,12 +49,12 @@ class HuyiGatewayTest extends TestCase
$this
->
assertSame
([
'code'
=>
HuyiGateway
::
SUCCESS_CODE
,
'msg'
=>
'mock-result'
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
1234
);
$this
->
expectExceptionMessage
(
'mock-err-msg'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/JuheGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\JuheGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
JuheGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'juhe'
,
(
new
JuheGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -60,12 +56,12 @@ class JuheGatewayTest extends TestCase
$this
->
assertSame
([
'reason'
=>
'操作成功'
,
'error_code'
=>
0
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
21000
);
$this
->
expectExceptionMessage
(
'操作失败'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/LuosimaoGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\LuosimaoGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
LuosimaoGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'luosimao'
,
(
new
LuosimaoGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -50,12 +46,12 @@ class LuosimaoGatewayTest extends TestCase
$this
->
assertSame
([
'error'
=>
0
,
'msg'
=>
'success'
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
10000
);
$this
->
expectExceptionMessage
(
'mock-err-msg'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/QcloudGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,17 +14,64 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\QcloudGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
QcloudGatewayTest
extends
TestCase
{
public
function
test
GetName
()
public
function
test
Send
()
{
$this
->
assertSame
(
'qcloud'
,
(
new
QcloudGateway
([]))
->
getName
());
$config
=
[
'sdk_app_id'
=>
'mock-sdk-app-id'
,
'app_key'
=>
'mock-api-key'
,
];
$gateway
=
\
Mockery
::
mock
(
QcloudGateway
::
class
.
'[request]'
,
[
$config
])
->
shouldAllowMockingProtectedMethods
();
$expected
=
[
'tel'
=>
[
'nationcode'
=>
'86'
,
'mobile'
=>
strval
(
new
PhoneNumber
(
18888888888
)),
],
'type'
=>
0
,
'msg'
=>
'This is a test message.'
,
'timestamp'
=>
time
(),
'extend'
=>
''
,
'ext'
=>
''
,
];
$gateway
->
shouldReceive
(
'request'
)
->
andReturn
([
'result'
=>
0
,
'errmsg'
=>
'OK'
,
'ext'
=>
''
,
'sid'
=>
3310228982
,
'fee'
=>
1
,
],
[
'result'
=>
1001
,
'errmsg'
=>
'sig校验失败'
,
])
->
twice
();
$message
=
new
Message
([
'data'
=>
[
'type'
=>
0
],
'content'
=>
'This is a test message.'
]);
$config
=
new
Config
(
$config
);
$this
->
assertSame
([
'result'
=>
0
,
'errmsg'
=>
'OK'
,
'ext'
=>
''
,
'sid'
=>
3310228982
,
'fee'
=>
1
,
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
),
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
1001
);
$this
->
expectExceptionMessage
(
'sig校验失败'
);
$gateway
->
send
(
new
PhoneNumber
(
18888888888
),
$message
,
$config
);
}
public
function
testSend
()
public
function
testSend
UsingNationCode
()
{
$config
=
[
'sdk_app_id'
=>
'mock-sdk-app-id'
,
...
...
@@ -34,8 +81,8 @@ class QcloudGatewayTest extends TestCase
$expected
=
[
'tel'
=>
[
'nationcode'
=>
'86'
,
'mobile'
=>
strval
(
18888888888
)
,
'nationcode'
=>
251
,
'mobile'
=>
18888888888
,
],
'type'
=>
0
,
'msg'
=>
'This is a test message.'
,
...
...
@@ -66,12 +113,12 @@ class QcloudGatewayTest extends TestCase
'ext'
=>
''
,
'sid'
=>
3310228982
,
'fee'
=>
1
,
],
$gateway
->
send
(
18888888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
,
251
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
1001
);
$this
->
expectExceptionMessage
(
'sig校验失败'
);
$gateway
->
send
(
18888888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18888888888
,
251
)
,
$message
,
$config
);
}
}
tests/Gateways/SendcloudGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\SendcloudGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
SendcloudGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'sendcloud'
,
(
new
SendcloudGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -35,6 +31,7 @@ class SendcloudGatewayTest extends TestCase
$expected
=
[
'smsUser'
=>
'mock-user'
,
'templateId'
=>
'mock-tpl-id'
,
'msgType'
=>
0
,
'phone'
=>
18188888888
,
'vars'
=>
json_encode
([
'%code%'
=>
1234
]),
];
...
...
@@ -81,13 +78,13 @@ class SendcloudGatewayTest extends TestCase
'message'
=>
'操作成功'
,
'result'
=>
true
,
'statusCode'
=>
200
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
400
);
$this
->
expectExceptionMessage
(
'手机号不存在'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
public
function
testTimestampConfig
()
...
...
@@ -121,8 +118,8 @@ class SendcloudGatewayTest extends TestCase
'message'
=>
'操作成功'
,
'result'
=>
true
,
'statusCode'
=>
200
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/SubmailGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\SubmailGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
SubmailGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'submail'
,
(
new
SubmailGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -37,7 +33,7 @@ class SubmailGatewayTest extends TestCase
'appid'
=>
'mock-app-id'
,
'signature'
=>
'mock-app-key'
,
'project'
=>
'mock-project'
,
'to'
=>
18188888888
,
'to'
=>
new
PhoneNumber
(
18188888888
)
,
'vars'
=>
json_encode
([
'code'
=>
'123456'
,
'time'
=>
'15'
]),
])
->
andReturn
([
'status'
=>
'success'
,
...
...
@@ -58,12 +54,12 @@ class SubmailGatewayTest extends TestCase
'send_id'
=>
'093c0a7df143c087d6cba9cdf0cf3738'
,
'fee'
=>
1
,
'sms_credits'
=>
14197
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
100
);
$this
->
expectExceptionMessage
(
'mock-err-msg'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/TwilioGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -13,16 +13,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Gateways\TwilioGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
TwilioGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'twilio'
,
(
new
TwilioGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -51,6 +47,6 @@ class TwilioGatewayTest extends TestCase
'body'
=>
'【twilio】This is a test message.'
,
'sid'
=>
'mock-api-account-sid'
,
'error_code'
=>
null
,
],
$gateway
->
send
(
'+8618888888888'
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18888888888
,
86
)
,
$message
,
$config
));
}
}
tests/Gateways/YunpianGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\YunpianGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
YunpianGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'yunpian'
,
(
new
YunpianGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -33,7 +29,7 @@ class YunpianGatewayTest extends TestCase
$gateway
->
shouldReceive
(
'post'
)
->
with
(
'https://sms.yunpian.com/v2/sms/single_send.json'
,
[
'apikey'
=>
'mock-api-key'
,
'mobile'
=>
18188888888
,
'mobile'
=>
'18188888888'
,
'text'
=>
'【overtrue】This is a test message.'
,
])
->
andReturn
([
'code'
=>
0
,
...
...
@@ -41,7 +37,7 @@ class YunpianGatewayTest extends TestCase
'count'
=>
1
,
//成功发送的短信计费条数
'fee'
=>
0.05
,
//扣费条数,70个字一条,超出70个字时按每67字一条计
'unit'
=>
'RMB'
,
// 计费单位
'mobile'
=>
'1
3200000000
'
,
// 发送手机号
'mobile'
=>
'1
8188888888
'
,
// 发送手机号
'sid'
=>
3310228982
,
// 短信ID
],
[
'code'
=>
100
,
...
...
@@ -56,14 +52,14 @@ class YunpianGatewayTest extends TestCase
'count'
=>
1
,
//成功发送的短信计费条数
'fee'
=>
0.05
,
//扣费条数,70个字一条,超出70个字时按每67字一条计
'unit'
=>
'RMB'
,
// 计费单位
'mobile'
=>
'1
3200000000
'
,
// 发送手机号
'mobile'
=>
'1
8188888888
'
,
// 发送手机号
'sid'
=>
3310228982
,
// 短信ID
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
100
);
$this
->
expectExceptionMessage
(
'发送失败'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/Gateways/YuntongxunGatewayTest.php
浏览文件 @
27a86912
...
...
@@ -14,16 +14,12 @@ namespace Overtrue\EasySms\Tests\Gateways;
use
Overtrue\EasySms\Exceptions\GatewayErrorException
;
use
Overtrue\EasySms\Gateways\YuntongxunGateway
;
use
Overtrue\EasySms\Message
;
use
Overtrue\EasySms\PhoneNumber
;
use
Overtrue\EasySms\Support\Config
;
use
Overtrue\EasySms\Tests\TestCase
;
class
YuntongxunGatewayTest
extends
TestCase
{
public
function
testGetName
()
{
$this
->
assertSame
(
'yuntongxun'
,
(
new
YuntongxunGateway
([]))
->
getName
());
}
public
function
testSend
()
{
$config
=
[
...
...
@@ -42,7 +38,7 @@ class YuntongxunGatewayTest extends TestCase
}),
\
Mockery
::
on
(
function
(
$params
)
{
return
$params
[
'json'
]
==
[
'to'
=>
18188888888
,
'to'
=>
'18188888888'
,
'templateId'
=>
5589
,
'appId'
=>
'mock-app-id'
,
'datas'
=>
[
'mock-data-1'
,
'mock-data-2'
],
...
...
@@ -61,12 +57,12 @@ class YuntongxunGatewayTest extends TestCase
$this
->
assertSame
([
'statusCode'
=>
YuntongxunGateway
::
SUCCESS_CODE
,
],
$gateway
->
send
(
18188888888
,
$message
,
$config
));
],
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
));
$this
->
expectException
(
GatewayErrorException
::
class
);
$this
->
expectExceptionCode
(
100
);
$this
->
expectExceptionMessage
(
'100'
);
$gateway
->
send
(
18188888888
,
$message
,
$config
);
$gateway
->
send
(
new
PhoneNumber
(
18188888888
)
,
$message
,
$config
);
}
}
tests/PhoneNumberTest.php
0 → 100644
浏览文件 @
27a86912
<?php
/*
* This file is part of the overtrue/easy-sms.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace
Overtrue\EasySms\Tests
;
use
Overtrue\EasySms\PhoneNumber
;
/**
* Class PhoneNumberTest.
*
* @author overtrue <i@overtrue.me>
*/
class
PhoneNumberTest
extends
TestCase
{
public
function
testOnlyNumber
()
{
$n
=
new
PhoneNumber
(
18888888888
);
$this
->
assertSame
(
18888888888
,
$n
->
getNumber
());
$this
->
assertNull
(
$n
->
getIDDCode
());
$this
->
assertSame
(
'18888888888'
,
$n
->
getUniversalNumber
());
$this
->
assertSame
(
'18888888888'
,
$n
->
getZeroPrefixedNumber
());
$this
->
assertSame
(
'18888888888'
,
\
strval
(
$n
));
}
public
function
testDiffCode
()
{
$n
=
new
PhoneNumber
(
18888888888
,
68
);
$this
->
assertSame
(
68
,
$n
->
getIDDCode
());
$n
=
new
PhoneNumber
(
18888888888
,
'+68'
);
$this
->
assertSame
(
68
,
$n
->
getIDDCode
());
$n
=
new
PhoneNumber
(
18888888888
,
'0068'
);
$this
->
assertSame
(
68
,
$n
->
getIDDCode
());
}
public
function
testJsonEncode
()
{
$n
=
new
PhoneNumber
(
18888888888
,
68
);
$this
->
assertSame
(
json_encode
([
'number'
=>
$n
->
getUniversalNumber
()]),
\
json_encode
([
'number'
=>
$n
]));
}
}
tests/TestCase.php
浏览文件 @
27a86912
...
...
@@ -12,9 +12,8 @@
namespace
Overtrue\EasySms\Tests
;
use
Mockery
;
use
PHPUnit\Framework\TestCase
as
PHPUnitTestCase
;
class
TestCase
extends
PHPUnit
TestCase
class
TestCase
extends
\
PHPUnit\Framework\
TestCase
{
public
function
setUp
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录