php请求okx接口获取比特币价格数据、k线数据

2024-01-15 10:59

本文主要是介绍php请求okx接口获取比特币价格数据、k线数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

php请求okx接口获取比特币价格数据

      • 环境
      • 配置请求头、签名
        • 设置签名
        • 配置代理
      • 全部代码

环境

我本地用的是thinkphp框架和guzzle

安装guzzle

composer require guzzlehttp/guzzle 

配置请求头、签名

我们需要准备api_key,secret_key,passphrase

api_key,secret_key,passphrase需要我们自己注册账号去申请

官方文档

这是官方的要求
发起请求
所有REST私有请求头都必须包含以下内容:

OK-ACCESS-KEY字符串类型的APIKey。

OK-ACCESS-SIGN使用HMAC SHA256哈希函数获得哈希值,再使用Base-64编码(请参阅签名)。

OK-ACCESS-TIMESTAMP发起请求的时间(UTC),如:2020-12-08T09:08:57.715Z

OK-ACCESS-PASSPHRASE您在创建API密钥时指定的Passphrase。

所有请求都应该含有application/json类型内容,并且是有效的JSON。

签名
生成签名

OK-ACCESS-SIGN的请求头是对timestamp + method + requestPath + body字符串(+表示字符串连接),以及SecretKey,使用HMAC SHA256方法加密,通过Base-64编码输出而得到的。

如:sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp + ‘GET’ + ‘/api/v5/account/balance?ccy=BTC’, SecretKey))

其中,timestamp的值与OK-ACCESS-TIMESTAMP请求头相同,为ISO格式,如2020-12-08T09:08:57.715Z。

method是请求方法,字母全部大写:GET/POST。

requestPath是请求接口路径。如:/api/v5/account/balance

body是指请求主体的字符串,如果请求没有主体(通常为GET请求)则body可省略。如:{“instId”:“BTC-USDT”,“lever”:“5”,“mgnMode”:“isolated”}

设置签名
$api_key = "xxxx";$secret_key = "xxxx";$passphrase = "xxxx";// 设置时区为UTCdate_default_timezone_set('UTC');// 获取当前时间的 DateTime 对象$dateTime = new DateTime();// 格式化时间戳为指定的格式(ISO 8601)$timestamp = $dateTime->format('Y-m-d\TH:i:s.u\Z');$url = "";$body = "";$string = $timestamp . "GET" . $url . $body;$signature = base64_encode(hash_hmac('sha256', $string, $secret_key));$headers = ["OK-ACCESS-KEY" => $api_key,"OK-ACCESS-SIGN" => $signature,"OK-ACCESS-TIMESTAMP" => $timestamp,"OK-ACCESS-PASSPHRASE" => $passphrase];
配置代理

请求国外接口需要配置一个代理,我这边本地配置了VPN,所以用的是本地的代理

  		$this->client = new Client(["proxy" => "http://127.0.0.1:23457","headers" => $headers]);

全部代码

Res是一个返回类
res.php

<?php
namespace app\util;class Res{function success($msg,$data){return json(["code"=>200,"msg"=>$msg,"data"=>$data]);}function error($msg){return json(["code"=>400,"msg"=>$msg,"data"=>null]);}
}

okx.php控制器类

<?phpnamespace app\controller;use app\BaseController;
use DateTime;
use think\Request;
use GuzzleHttp\Client;
use app\util\Res;class Okx extends BaseController
{private $client;private $result;public function __construct(\think\App $app){$api_key = "...";$secret_key = "...";$passphrase = "...";// 设置时区为UTCdate_default_timezone_set('UTC');// 获取当前时间的 DateTime 对象$dateTime = new DateTime();// 格式化时间戳为指定的格式(ISO 8601)$timestamp = $dateTime->format('Y-m-d\TH:i:s.u\Z');$url = "";$body = "";$string = $timestamp . "GET" . $url . $body;$signature = base64_encode(hash_hmac('sha256', $string, $secret_key));$headers = ["OK-ACCESS-KEY" => $api_key,"OK-ACCESS-SIGN" => $signature,"OK-ACCESS-TIMESTAMP" => $timestamp,"OK-ACCESS-PASSPHRASE" => $passphrase];$this->result = new Res();$this->client = new Client(["proxy" => "http://127.0.0.1:23457","verify" => false,"headers" => $headers]);}public function getPrice($type){$style = strtoupper($type);$url = "https://www.okx.com/api/v5/public/mark-price?instType=SWAP&instId={$style}-USDT-SWAP";$res = $this->client->get($url)->getBody()->getContents();return $this->result->success("获取数据成功", json_decode($res));}
}

配置路由
route/app.php


Route::group("/okx",function(){Route::get("/price/:type","okx/getPrice");});

返回结果
在这里插入图片描述

其他的接口我们只需要在官方文档中对应即可

这篇关于php请求okx接口获取比特币价格数据、k线数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau