You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.3 KiB
95 lines
2.3 KiB
<?php
|
|
|
|
namespace app\service\user;
|
|
|
|
use app\service\BaseService;
|
|
use fast\FuncException;
|
|
|
|
class SmsService extends BaseService
|
|
{
|
|
protected $smsUsername;
|
|
protected $smsPassword;
|
|
protected $sendUrl;
|
|
protected $content_prefix = '【大工业区水司】';
|
|
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->smsUsername = env('sms.username');
|
|
$this->smsPassword = env('sms.password');
|
|
$this->sendUrl = env('sms.api_url');
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param $code
|
|
* @return string
|
|
*/
|
|
public function smsCodeTemplate($code):string
|
|
{
|
|
return '您的短信验证码为:'.$code.',用于手机号绑定,10分钟内有效。若非本人操作,请勿泄露,谨防被骗。';
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param $mobile
|
|
* @param $message
|
|
* @throws FuncException
|
|
*/
|
|
public function sendSms($mobile,$message)
|
|
{
|
|
$content = $this->content_prefix . $message;
|
|
|
|
$param = [
|
|
'userName' => $this->smsUsername,
|
|
'sign' => md5($this->smsUsername . $this->smsPassword . $mobile . $content),
|
|
'mobile' => $mobile,
|
|
'content' => $content,
|
|
];
|
|
|
|
$json = json_encode($param);
|
|
|
|
$result = $this->curl($json);
|
|
if ($result['resultCode'] != 1) {
|
|
throw new FuncException('发送失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param $json
|
|
* @return bool|string
|
|
* @throws FuncException
|
|
*/
|
|
public function curl($json)
|
|
{
|
|
// 初始化cURL会话
|
|
$ch = curl_init();
|
|
|
|
// 设置cURL选项
|
|
curl_setopt($ch, CURLOPT_URL, $this->sendUrl); // 目标URL
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是输出
|
|
curl_setopt($ch, CURLOPT_POST, true); // 发送POST请求
|
|
|
|
// 设置POST字段
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); // 设置HTTP头
|
|
|
|
// 执行cURL会话
|
|
$response = curl_exec($ch);
|
|
|
|
// 检查是否有错误发生
|
|
if (curl_errno($ch)) {
|
|
throw new FuncException('发送失败');
|
|
}
|
|
|
|
// 关闭cURL会话
|
|
curl_close($ch);
|
|
|
|
return json_decode($response,true);
|
|
}
|
|
|
|
|
|
|
|
}
|