cxfoot/components/sms/AliSmsMsgSender.php
2023-10-27 14:25:12 +08:00

126 lines
4.4 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2020-11-3
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\components\sms;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class AliSmsMsgSender
{
public $access_key_id;
public $access_secret;
public $signname;
public $tpl_code;
/**
* 短信发送
* @param array $params 短信模板参数
*/
public function sender($mobile, $params, $mobile_prefix)
{
AlibabaCloud::accessKeyClient($this->access_key_id, $this->access_secret)
->regionId('cn-hangzhou')
->asGlobalClient();
try {
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
// ->scheme('https') // https | http
->version('2017-05-25')
->action('SendSms')
->method('POST')
->options([
'query' => [
'RegionId' => 'cn-hangzhou',
'SignName' => $this->signname,
'PhoneNumbers' => $mobile,
'TemplateCode' => $this->tpl_code,
'TemplateParam' => json_encode($params),
],
])
->request();
$res = $result->toArray();
if(isset($res['Code']) && $res['Code'] == 'OK'){
return [
'code' => 0,
'msg' => isset($res['Message']) ? $res['Message'] : 'OK',
];
} else {
return [
'code' => 1,
'msg' => isset($res['Message']) ? $res['Message'] : 'FAILED',
];
}
} catch (ClientException $e) {
return [
'code' => 1,
'msg' => $e->getErrorMessage(),
];
} catch (ServerException $e) {
return [
'code' => 1,
'msg' => $e->getErrorMessage(),
];
}
}
/**
* @TODO 短信批量发送
*/
public function batchSender($mobiles, $signname,$params, $mobile_prefix)
{
AlibabaCloud::accessKeyClient($this->access_key_id, $this->access_secret)
->regionId('cn-hangzhou')
->asGlobalClient();
try {
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
// ->scheme('https') // https | http
->version('2017-05-25')
->action('SendBatchSms')
->method('POST')
->options([
'query' => [
'RegionId' => 'cn-hangzhou',
'SignNameJson' => json_encode($signname,JSON_UNESCAPED_UNICODE),
'PhoneNumberJson' => json_encode($mobiles,JSON_UNESCAPED_UNICODE),
'TemplateCode' => $this->tpl_code,
'TemplateParamJson' => json_encode($params),
],
])
->request();
$res = $result->toArray();
if(isset($res['Code']) && $res['Code'] == 'OK'){
return [
'code' => 0,
'msg' => isset($res['Message']) ? $res['Message'] : 'OK',
];
} else {
return [
'code' => 1,
'msg' => isset($res['Message']) ? $res['Message'] : 'FAILED',
];
}
} catch (ClientException $e) {
return [
'code' => 1,
'msg' => $e->getErrorMessage(),
];
} catch (ServerException $e) {
return [
'code' => 1,
'msg' => $e->getErrorMessage(),
];
}
}
}