php百度云账户余额查询API示例

2024-06-19 16:20

本文主要是介绍php百度云账户余额查询API示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、官方文档地址:账户余额查询

请求结构

POST /v{version}/finance/cash/balance
HTTP/1.1 
Host: billing.baidubce.com 
ContentType: application/json; charset=utf-8
Content-Length: <Content_Length>
Authorization: authorization string

响应参数

名称类型描述
cashBalanceBigDecimal用户余额

PHP完整代码示例:

<?php
//账户余额查询
class Balance {private $ak;private $sk;public function __construct($ak, $sk){$this->ak = $ak;$this->sk = $sk;if (empty($this->ak) || empty($this->sk)) {exit('请配置ak 或者 sk');}}public function getBalance(){$data = [];$res = $this->getBaiduApi($data);if (isset($res['cashBalance'])) {$result =  ['code' => 200,'cashBalance' => $res['cashBalance'],'msg' => 'ok'];} else {$result =  ['code' => 10001,'msg' => $res['message']];}return $result;}public function getBaiduApi($data = []){$host = 'billing.baidubce.com'; // 服务$uri = '/v1/finance/cash/balance'; // 接口路径$startUtc = gmdate("Y-m-d\TH:i:s\Z");  // utc 时间戳$Authorization = $this->getBaiDuAuthorization($startUtc, $uri, $host);$url = "https://" . $host . $uri;$data = json_encode($data,JSON_UNESCAPED_UNICODE);$header = ['Authorization:'.$Authorization,'Host:'.$host,'content-type:application/json','x-bce-date:'.$startUtc,'Content-Length:'.strlen($data)];return $this->getBaiDuPostCurl($url, $data, $header);}public function getBaiDuAuthorization($startUtc, $canonicalUri, $host){// 签名有效期 (秒)$validity = '1800';//签名头域(signedHeaders):加入签名算法的HTTP头域列表,为认证字符串的中间部分。$signedHeaders = 'host;x-bce-date';$Host = "host:" . $host;$BceDate = "x-bce-date:" . urlencode($startUtc);$httpRequestMethod = "POST";//规范请求(canonicalRequest):经过规范化处理后的请求信息,又称待签名串。$canonicalCan = '';$canonicalRequest = $httpRequestMethod . "\n" . $canonicalUri . "\n" . $canonicalCan . "\n" . $Host . "\n" . $BceDate;// 1: 前缀字符串  由除sk字段外的签名信息生成$authStringPrefix = "bce-auth-v1/" . $this->ak . "/" . $startUtc . "/" . $validity;// 2: 派生签名密钥 signingKey  signingKey = HMAC-SHA-256-HEX("sk", authStringPrefix)$signingKey = bin2hex(hash_hmac('sha256',  $authStringPrefix, $this->sk, true));// 3: 签名摘要 signature  signature = HMAC-SHA-256-HEX(signingKey, canonicalRequest)$signature = bin2hex(hash_hmac('sha256',  $canonicalRequest, $signingKey, true));// 4: 认证字符串 authorization  Authorization = authStringPrefix/signedHeaders/signature$Authorization = $authStringPrefix . '/' . $signedHeaders .'/' . $signature;return $Authorization;}public function getBaiDuPostCurl($url, $data = null, $header = null){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_NOBODY, false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);if (!empty($data)) {curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);}if ( !empty($header) ) {curl_setopt($ch, CURLOPT_HTTPHEADER, $header);}$res = curl_exec($ch);$errorCode = curl_errno($ch);curl_close($ch);if(0 !== $errorCode) {return false;}return json_decode($res, true);}
}$ak = '109e************************68f1';    //换成自己的Access Key
$sk = 'c5e0*************************e4e';    //换成自己的Secret Key
$balance = new Balance($ak, $sk);
$res = $balance->getBalance();
if ($res['code'] == 200) {echo '余额:' . $res['cashBalance'] . '元';
} else {echo $res['msg'];
}?>

 如何获取AKSK:如何获取AKSK - 相关参考Reference | 百度智能云文档

这篇关于php百度云账户余额查询API示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075528

相关文章

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche