腾讯云API3.0精简易用PHP版

发布时间:2022-01-10 来源:开发部
现在各个大厂API写的是越来越大,一个curl能解决的问题要加载一堆组件,本站主要是涉及域名类操作,完全满足。写了一个函数可以直接封装到业务类中,下列代码做了最大化精简,放

现在各个大厂API写的是越来越大,一个curl能解决的问题要加载一堆组件,本站主要是涉及域名类操作,完全满足。写了一个函数可以直接封装到业务类中,下列代码做了最大化精简,放弃了GET场景,根据官方文档和POST有点不同,请自行魔改,不罗嗦直接上代码:
脱坑指示 TX端对数据类型做了严格认证,所以提交数据时要转换类型,比如 string int 大部分情况下,手机号属于 string。
 
function api_call($api, $version, $action, $data)
{
    $secretId = "AK*****************************";
    $secretKey = "OadUD**************************";
    $host = $api . ".tencentcloudapi.com";
    $timestamp = time();
    $payload = json_encode($data);
    $date = gmdate("Y-m-d", $timestamp);
    $credentialScope = $date . "/" . $api . "/tc3_request";
    $stringToSign = "TC3-HMAC-SHA256n"
        . $timestamp . "n"
        . $credentialScope . "n"
        . hash("SHA256", "POSTn/nncontent-type:application/json; charset=utf-8n" . "host:" . $host . "nncontent-type;hostn" . hash("SHA256", $payload));
    $signature = hash_hmac("SHA256", $stringToSign, hash_hmac("SHA256", "tc3_request", hash_hmac("SHA256", $api, hash_hmac("SHA256", $date, "TC3" . $secretKey, true), true), true));
    $headers = [
        'Authorization: ' . "TC3-HMAC-SHA256 Credential=" . $secretId . "/" . $credentialScope . ", SignedHeaders=content-type;host, Signature=" . $signature,
        'Content-Type: application/json; charset=utf-8',
        'Host: ' . $host,
        'X-TC-Action: ' . $action,
        'X-TC-Timestamp: ' . $timestamp,
        'X-TC-Version: ' . $version,
        'X-TC-Region: ap-guangzhou',
    ];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://' . $host);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    $output = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $output;
}

//echo json_encode(api_call('dnspod', "2021-03-23", "DescribeRecordList", ["Domain" => "qq.cn"]));
//echo json_encode(api_call('domain', "2018-08-08", "DescribeDomainBaseInfo", ["Domain" => "qq.cn"]));

  转载请注明:https://www.yooym.com/blog/jianzhanjiaocheng/tongyongjiaocheng/2022/0110/1702.html
------分隔线----------------------------
文章分类
推荐内容
  • php通用实用文件上传类随机命名后缀限制

    不多说直接上代码,支持随机命名,路径,文件大小,后缀限制 ?php class UploadFile{ //完整实例 $upload = new UploadFile(true, '../yuming/', 'xls|xlsx'); 随机命名、路径、...

  • 解决SSL因为使用RC4密码套件或支持弱Diffie-Hellman(DH)密钥交换降级为B

    解决SSL因为使用RC4密码套件或支持弱Diffie-Hellman(DH)密钥交换降级为B 服务器环境IIS7 通过修改注册表关闭不安全的支持 复制下列文件 保存为 reg格式 直接导...

  • 实现HTTP跳转到HTTPS 的另一种方法

    1 首先在您的网站下新建一个站点,名称随意,在属性中分配 TCP 端口为 80 , SSL 不分配 然后在属性》主目录下配置 将此资源的内容来自:改为重定向到...

  • SSL证书安装指南 - Winodws 2003 Server IIS 6.0

    S SL证书安装指南 - Winodws 2003 Server IIS 6.0 一旦您申请的SSL证书成功颁发,您会收到一个邮件通知您取回证书,点击邮件中的取回证书链接,就可以得到您的...

  • SSL证书安装指南 - IIS 7.0

    一、生成证书请求 1.进入IIS控制台 进入IIS控制台,并选择服务器的服务器证书设置选项。 2.添加证书请求 进入服务器证书配置页面,并选择“创建证书申...

  • 网页启用Gzip压缩 提高浏览速度

    Gzip压缩我很早已经就启用了,不过从未与大家分享过。近期由于备案问题,临时更换服务器,结果忘了启用Gzip压缩,周末利用空余时间启用了Gzip压缩,并...