www_fpvone_cn/application/api/controller/Submail.php

102 lines
3.6 KiB
PHP
Raw Permalink Normal View History

2024-12-20 12:29:51 +08:00
<?php
namespace app\api\controller;
use app\common\controller\Api;
use app\common\model\User;
use fast\Random;
/**
* 验证接口
*/
class Submail extends Api
{
public static function send($mobile, $code = null, $event = 'default')
{
$code = is_null($code) ? Random::numeric(config('captcha.length')) : $code;
$time = time();
$ip = request()->ip();
$sms = \app\common\model\Sms::create(['event' => $event, 'mobile' => $mobile, 'code' => $code, 'ip' => $ip, 'createtime' => $time]);
// var_dump($sms);exit;
$result = self::test($mobile,$code);
// $result = Hook::listen('sms_send', $sms, null, true);
if (!$result) {
$sms->delete();
return false;
}
return true;
}
public static function test($mobile,$code){
/*****************
* 加密请求 示例代码
******************/
//appid参数 appkey参数在 国际短信-创建/管理AppID中获取
//手机号支持单个
//模板ID 国际短信-创建/管理国际短信模板中获得
//国际短信模板对应变量
// 若模板为【SUBMAIL】您的验证码是@var(code),请在@var(time)内输入。国际短信模板对应变量如下
// 变量名和自定义内容相对应即可
$appid = '64253'; //appid参数
$appkey = '9bcc32d7a0256162dcb47d11ad9dfd02'; //appkey参数
$to = $mobile; //收信人 手机号码
$project_id = 'kSPUL1'; //模板ID
$vars = json_encode(array( //模板对应变量
'code' => $code,
// 'time' => '三分钟'
));
//通过接口获取时间戳
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://api-v4.mysubmail.com/service/timestamp.json',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 0
));
$output = curl_exec($ch);
curl_close($ch);
$output = json_decode($output, true);
$timestamp = $output['timestamp'];
$post_data = array(
"appid" => $appid,
"to" => $to,
"project" => $project_id,
"vars" => $vars,
"timestamp" => $timestamp,
"sign_type" => 'md5',
"sign_version" => 2,
);
//整理生成签名所需参数
$temp = $post_data;
unset($temp['vars']);
ksort($temp);
reset($temp);
$tempStr = "";
foreach ($temp as $key => $value) {
$tempStr .= $key . "=" . $value . "&";
}
$tempStr = substr($tempStr, 0, -1);
//生成签名
$post_data['signature'] = md5($appid . $appkey . $tempStr . $appid . $appkey);
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://api-v4.mysubmail.com/internationalsms/xsend.json',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $post_data
));
$output = curl_exec($ch);
curl_close($ch);
$res = json_decode($output,true);
// var_dump($res);exit;
if($res['status'] != 'success'){
return false;
}
return true;
// echo json_encode($output);
}
}