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

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下: