Constants

DEFAULT_TIMEOUT

DEFAULT_TIMEOUT = 5.0

ENDPOINT_ACTION

ENDPOINT_ACTION = 'SendSms'

ENDPOINT_VERSION

ENDPOINT_VERSION = '2020-01-01'

ENDPOINT_CONTENT_TYPE

ENDPOINT_CONTENT_TYPE = 'application/json; charset=utf-8'

ENDPOINT_ACCEPT

ENDPOINT_ACCEPT = 'application/json'

ENDPOINT_USER_AGENT

ENDPOINT_USER_AGENT = 'overtrue/easy-sms'

ENDPOINT_SERVICE

ENDPOINT_SERVICE = 'volcSMS'

Algorithm

Algorithm = 'HMAC-SHA256'

ENDPOINT_DEFAULT_REGION_ID

ENDPOINT_DEFAULT_REGION_ID = 'cn-north-1'

Properties

$endpoints

$endpoints

$config

$config : \Overtrue\EasySms\Support\Config

Type

Config

$options

$options : array

Type

array

$timeout

$timeout : float

Type

float

$requestDate

$requestDate

$regionId

$regionId

Methods

__construct()

__construct(array  $config) : mixed

Gateway constructor.

Parameters

array $config

Returns

mixed —

getTimeout()

getTimeout() : int|mixed

Return timeout.

Returns

int|mixed —

setTimeout()

setTimeout(int  $timeout) : $this

Set timeout.

Parameters

int $timeout

Returns

$this —

getConfig()

getConfig() : \Overtrue\EasySms\Support\Config

Returns

\Overtrue\EasySms\Support\Config —

setConfig()

setConfig(\Overtrue\EasySms\Support\Config  $config) : $this

Parameters

\Overtrue\EasySms\Support\Config $config

Returns

$this —

setGuzzleOptions()

setGuzzleOptions( $options) : $this

Parameters

$options

Returns

$this —

getGuzzleOptions()

getGuzzleOptions() : array

Returns

array —

getName()

getName() : string

Get gateway name.

Returns

string —

send()

send(\Overtrue\EasySms\Contracts\PhoneNumberInterface  $to, \Overtrue\EasySms\Contracts\MessageInterface  $message, \Overtrue\EasySms\Support\Config  $config) : mixed

Parameters

\Overtrue\EasySms\Contracts\PhoneNumberInterface $to
\Overtrue\EasySms\Contracts\MessageInterface $message
\Overtrue\EasySms\Support\Config $config

Returns

mixed —

getPayloadHash()

getPayloadHash(\Psr\Http\Message\RequestInterface  $request) : mixed

Parameters

\Psr\Http\Message\RequestInterface $request

Returns

mixed —

getRegionId()

getRegionId() : mixed

Returns

mixed —

getEndpoint()

getEndpoint() : mixed

Returns

mixed —

getRequestDate()

getRequestDate() : mixed

Returns

mixed —

getCredentialScope()

getCredentialScope() : string

指代信任状,格式为:YYYYMMDD/region/service/request

Returns

string —

getStringToSign()

getStringToSign(mixed  $canonicalRequest) : string

创建签名字符串 签名字符串主要包含请求以及正规化请求的元数据信息,由签名算法、请求日期、信任状和正规化请求哈希值连接组成,伪代码如下: StringToSign = Algorithm + '\n' + RequestDate + '\n' + CredentialScope + '\n' + HexEncode(Hash(CanonicalRequest))

Parameters

mixed $canonicalRequest

Returns

string —

getAccessKeySecret()

getAccessKeySecret() : string

Returns

string —

getAccessKeyId()

getAccessKeyId() : string

Returns

string —

getCanonicalHeaders()

getCanonicalHeaders(\Psr\Http\Message\RequestInterface  $request) : array

指代正规化后的Header。 其中伪代码如下: CanonicalHeaders = CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN 其中CanonicalHeadersEntry = Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\n' Lowcase代表将Header的名称全部转化成小写,Trimall表示去掉Header的值的前后多余的空格。 特别注意:最后需要添加"\n"的换行符,header的顺序是以headerName的小写后ascii排序。

Parameters

\Psr\Http\Message\RequestInterface $request

Returns

array —

getCanonicalQueryString()

getCanonicalQueryString(array  $query) : string

urlencode(注:同RFC3986方法)每一个querystring参数名称和参数值。 按照ASCII字节顺序对参数名称严格排序,相同参数名的不同参数值需保持请求的原始顺序。 将排序好的参数名称和参数值用=连接,按照排序结果将“参数对”用&连接。 例如:CanonicalQueryString = "Action=ListUsers&Version=2018-01-01"

Parameters

array $query

Returns

string —

getCanonicalURI()

getCanonicalURI() : string

指代正规化后的URI。 如果URI为空,那么使用"/"作为绝对路径。 在火山引擎中绝大多数接口的URI都为"/"。 如果是复杂的path,请通过RFC3986规范进行编码。

Returns

string —

get()

get(string  $endpoint, array  $query = [], array  $headers = []) : \Psr\Http\Message\ResponseInterface|array|string

Make a get request.

Parameters

string $endpoint
array $query
array $headers

Returns

\Psr\Http\Message\ResponseInterface|array|string —

post()

post(string  $endpoint, array  $params = [], array  $headers = []) : \Psr\Http\Message\ResponseInterface|array|string

Make a post request.

Parameters

string $endpoint
array $params
array $headers

Returns

\Psr\Http\Message\ResponseInterface|array|string —

postJson()

postJson( $endpoint, array  $params = [], array  $headers = []) : \Psr\Http\Message\ResponseInterface|array|string

Make a post request with json params.

Parameters

$endpoint
array $params
array $headers

Returns

\Psr\Http\Message\ResponseInterface|array|string —

request()

request(string  $method, string  $endpoint, array  $options = []) : \Psr\Http\Message\ResponseInterface|array|string

Make a http request.

Parameters

string $method
string $endpoint
array $options

http://docs.guzzlephp.org/en/latest/request-options.html

Returns

\Psr\Http\Message\ResponseInterface|array|string —

getBaseOptions()

getBaseOptions() : array

Return base Guzzle options.

Returns

array —

getHttpClient()

getHttpClient(array  $options = []) : \GuzzleHttp\Client

Return http client.

Parameters

array $options

Returns

\GuzzleHttp\Client —

unwrapResponse()

unwrapResponse(\Psr\Http\Message\ResponseInterface  $response) : \Psr\Http\Message\ResponseInterface|array|string

Convert response contents to json.

Parameters

\Psr\Http\Message\ResponseInterface $response

Returns

\Psr\Http\Message\ResponseInterface|array|string —

signHandle()

signHandle() : mixed

Returns

mixed —

getSigningKey()

getSigningKey() : string

计算签名密钥 在计算签名前,首先从私有访问密钥(Secret Access Key)派生出签名密钥(signing key),而不是直接使用私有访问密钥。具体计算过程如下: kSecret = *Your Secret Access Key* kDate = HMAC(kSecret, Date) kRegion = HMAC(kDate, Region) kService = HMAC(kRegion, Service) kSigning = HMAC(kService, "request") 其中Date精确到日,与RequestDate中YYYYMMDD部分相同。

Returns

string —

parseRequest()

parseRequest(\Psr\Http\Message\RequestInterface  $request) : mixed

Parameters

\Psr\Http\Message\RequestInterface $request

Returns

mixed —