当前位置: 首页 > news >正文

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 | 百度智能云文档

相关文章:

  • 文件操作<C语言>
  • 【Ruby爬虫01】某吃瓜网站图片数据采集
  • 全面理解-Flutter(万字长文,深度解析)
  • Java中的编译时与运行时注解
  • SQL中的DISTINCT用法总结
  • MongoDB Map-Reduce 简介
  • Selenium WebDriver - 网络元素
  • c++中string的用法
  • 通用大模型 vs垂直大模型:AI界的“宫斗大戏”
  • font-spider按需生成字体文件
  • 提升数据库性能的关键方法总结
  • starrocks进行数据的删除
  • 基于深度学习的边缘检测
  • Ubuntu开机后图像化界面消失只有命令行界面
  • Python爬虫实战:批量下载网站图片
  • [Vue CLI 3] 配置解析之 css.extract
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Bytom交易说明(账户管理模式)
  • Fundebug计费标准解释:事件数是如何定义的?
  • java中具有继承关系的类及其对象初始化顺序
  • JS变量作用域
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • SpringBoot几种定时任务的实现方式
  • text-decoration与color属性
  • Vue全家桶实现一个Web App
  • 从setTimeout-setInterval看JS线程
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 缓存与缓冲
  • 警报:线上事故之CountDownLatch的威力
  • 批量截取pdf文件
  • 什么是Javascript函数节流?
  • 突破自己的技术思维
  • ​io --- 处理流的核心工具​
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014#Day.2 T3 解方程
  • #stm32驱动外设模块总结w5500模块
  • #传输# #传输数据判断#
  • (2)STM32单片机上位机
  • (30)数组元素和与数字和的绝对差
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • .net 使用ajax控件后如何调用前端脚本
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net经典笔试题
  • @JsonFormat与@DateTimeFormat注解的使用
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [Codeforces] probabilities (R1600) Part.1
  • [DevOps云实践] 彻底删除AWS云资源
  • [HarmonyOS]第一课:从简单的页面开始
  • [HCTF 2018]WarmUp (代码审计)
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明