2025-04-10 23:19:13 +08:00

147 lines
4.6 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @Author: fm453
* @Date: 2018-06-04 18:27:26
* @Last Modified by: fm453
* @Last Modified time: 2019-10-07 13:19:43
* @Email: fm453@lukegzs.com
*/
namespace vendor\aliyun\dysms;
require_once __DIR__ . '/darabonba-openapi/autoload.php';
//use Darabonba\OpenApi\Models\Config;
//use Darabonba\OpenApi\Models\OpenApiRequest;
//use Darabonba\OpenApi\Models\Params;
//use Darabonba\OpenApi\OpenApiClient;
use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;
require_once __DIR__ . '/Dysmsapi-20170525/autoload.php';
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
class Sms {
public $endpoint;
public $errors;
private $accessKeyId;
private $accessKeySecret;
private $sign;
/**
* Sms constructor.
* @param string $sdkName 接口名称
* @param array $option 接口的配置参数
* @param array $config 传入用户配置参数
*/
public function __construct($option=[], array $config = [])
{
$this->endpoint = isset($options['endpoint']) ? $options['endpoint'] : "dysmsapi.aliyuncs.com";
if (!isset($config['accessKeyId']) || empty($config['accessKeyId'])) {
$this->errors = '参数缺失accessKeyId必须要设置';
return false;
}
if (!isset($config['accessKeySecret']) || empty($config['accessKeySecret'])) {
$this->errors = '参数缺失accessKeySecret必须要设置';
return false;
}
if (!isset($config['sign']) || empty($config['sign'])) {
$this->errors = '参数缺失短信签名sign必须要设置';
return false;
}
$this->accessKeyId = $config['accessKeyId'];
$this->accessKeySecret = $config['accessKeySecret'];
$this->sign = $config['sign'];
}
/**
* 使用AK&SK初始化账号Client
* @return OpenApiClient Client
*/
public static function createClient(){
$config = new Config([]);
$config->accessKeyId = this->$accessKeyId;
$config->accessKeySecret = this->$accessKeySecret;
$config->endpoint = this->$endpoint;
return new OpenApiClient($config);
}
/**
* API 相关
* @return Params OpenApi.Params
*/
public static function createApiInfo(){
$params = new Params([
// 接口名称
"action" => "SendSms",
// 接口版本
"version" => "2017-05-25",
// 接口协议
"protocol" => "HTTPS",
// 接口 HTTP 方法
"method" => "POST",
"authType" => "AK",
"style" => "RPC",
// 接口 PATH
"pathname" => "/",
// 接口请求体内容格式
"reqBodyType" => "json",
// 接口响应体内容格式
"bodyType" => "json"
]);
return $params;
}
/**
* @content 数组(模板中带变量时)或文本
* @return void
*/
public static function send($phone,$tmpl,$content=[]){
// fixme 必填: 短信接收号码
if (empty($phone)) {
$msg = '电话号码phone必须要填写';
$code = 0;
$data = [];
return ['Code'=>$code,'Message'=>$msg,'data'=>$data];
}
if (empty($tmpl)) {
$msg = '短信模板编码必须填写';
$code = 0;
$data = [];
return ['Code'=>$code,'Message'=>$msg,'data'=>$data];
}
if (empty($content)) {
$msg = '短信内容或变量值必须填写';
$code = 0;
$data = [];
return ['Code'=>$code,'Message'=>$msg,'data'=>$data];
}
$client = self::createClient();
$params = self::createApiInfo();
// query params
$queries = [];
$queries["PhoneNumbers"] = $phone;
$queries["SignName"] = this->$sign;
$queries["TemplateCode"] = $tmpl;
$param = is_array($content) ? json_encode($content, JSON_UNESCAPED_UNICODE) : $content;
$queries["TemplateParam"] = $param;
// runtime options
$runtime = new RuntimeOptions([]);
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($queries)
]);
// 复制代码运行请自行打印 API 的返回值
// 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
$res = $client->callApi($params, $request, $runtime);
var_dump($res);die();
}
}