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

news2024/11/24 13:49:19

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";

        // 设置时区为UTC
        date_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控制器类

<?php

namespace 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 = "f5890ab2-a9c8-45bf-a91d-6010be64efbe";
        $secret_key = "ADC1875DA3B14F1BF650EF29BF652E43";
        $passphrase = "XQBxqb123@";

        // 设置时区为UTC
        date_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");

});

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1273507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试的测试文档怎么编写?

在软件测试中的流程中&#xff0c;测试文档也是一个重要的流程&#xff0c;所以测试人员也需要学习测试文档的编写和阅读。 一定义&#xff1a; 测试文档&#xff08;TestingDocumentation&#xff09;记录和描述了整个测试流程&#xff0c;它是整个测试活动中非常重要的文件。…

预约系统源码解析:打造智能定制化预约服务的技术奇迹

在当今数字化时代&#xff0c;预约系统的重要性日益凸显&#xff0c;而预约系统源码的开放将为各行业带来更加灵活、智能的预约解决方案。本文将深入探讨预约系统源码的技术内幕&#xff0c;为开发者提供实用的代码示例&#xff0c;助力打造智能定制化的预约服务。 技术栈概览…

泛域名SSL证书是什么?泛域名SSL证书价格多少钱?

泛域名SSL证书是一种SSL证书类型&#xff0c;也被称为通配符SSL证书。SSL证书是保护网站数据传输安全及服务器身份可信的数字证书产品&#xff0c;通常绑定域名或IP&#xff0c;配置到网站服务器上。SSL证书根据保护域名数量及域名类型的不同&#xff0c;可以分为单域名SSL证书…

分布式系统:CAP 定理

欢迎来到分布式系统系列。在本文中&#xff0c;我们将学习并理解什么是 CAP 定理。CAP 代表一致性、可用性和分区容错性。当我们谈论CAP定理时&#xff0c;我们主要谈论的是分布式系统。首先&#xff0c;让我们了解一下什么是分布式系统。分布式系统是由运行在单台或多台机器上…

(免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐

摘 要 随着时代的不断更新&#xff0c;社会的不断变换&#xff0c;信息技术的飞速发展&#xff0c;计算机科技技术也逐步走向成熟。图书馆管理系统对于当今社会来说是必不可少的一个信息组成部分&#xff0c;它可以管理大量图书、大量读者、让读者有条不紊的进行借阅图书&#…

易石无代码开发:电商平台连接CRM与客服系统,实现营销自动化

易石无代码开发的优势 易石软件以其强大的无代码开发平台&#xff0c;为电商企业提供了一种全新的业务集成手段。在激烈的市场竞争中&#xff0c;电商平台必须不断优化其运营效率和客户服务质量。易石无需复杂的API开发&#xff0c;通过简单的配置就能实现电商平台与CRM、客服…

Linux Centos系统安装Mysql8.0详解

本文是基于服务器Linux Centos 8.0系统 安装 Mysql8.0真实运维工作实战为例&#xff0c;详细讲解安装的全过程。 1&#xff0c;检查卸载mariadb Mariadb数据库是mysql的分支&#xff0c;mariadb和mysql会有冲突&#xff0c;所以安装Mysql前&#xff0c;首先要检查是否安装了m…

Xilinx FPGA——ISE的UCF时序约束

时序约束是我们对FPGA设计的要求和期望&#xff0c;例如&#xff0c;我们希望FPGA设计可以工作在多快的时钟频率下等等。 设计是要求系统中的每一个时钟都进行时序约束。 一、分组约束语法&#xff08;NET、PIN、INST&#xff09; TNM是最基本的分组约束语法&#xff0c;其语法…

如何去选择合适的线缆测试仪?CAT8网线认证测试

如何去选择合适的线缆测试仪? 如果你是第三方检测单位&#xff0c;系统集成商&#xff0c;或者线缆生产厂家&#xff0c;我个人建议选择福禄克DSX系列无疑是比较保险的做法&#xff0c;因为考虑到福禄克在国内耕耘多年所积累起来的品牌知名度和口碑&#xff0c;选择一款大家都…

又一张图片,还单纯吗-MISC-bugku-解题步骤

——CTF解题专栏—— 题目信息&#xff1a; 题目&#xff1a; 又一张图片&#xff0c;还单纯吗 作者&#xff1a;harry 提示&#xff1a;falg{} 解题附件&#xff1a; 解题思路&#xff1a; ok图片隐写问题&#xff0c;老三样儿&#xff1a;binwalk、010Editor、Stegsolve …

电话销售如何提高成功率

电话销售是一种非常有效的销售方式&#xff0c;睡着通信技术&#xff0c;互联网的发展&#xff0c;现在电话销售已经成为一种重要的销售方式&#xff0c;很多行业和领域都有使用。 虽然最终目的都是为了将产品卖出去&#xff0c;但是对于电话销售来说&#xff0c;前期寻找客户…

你知道功能测试和非功能测试有什么区别么?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

增加3~4个独立数字脉冲发生器通道!数字化仪和AWG新增DPG功能

数字脉冲升级功能 德思特Spectrum系列全部在售数字化仪和AWG产品&#xff08;包括TS-M2p&#xff0c;TS-M4i&#xff0c;TS-DN2&#xff0c;TS-DN6型号产品&#xff09;&#xff0c;发布了新增的数字脉冲&#xff08;DPG&#xff09;升级功能&#xff0c;于11月15日正式推出。…

VM17 启用复制粘贴

一、方法1 1、关闭虚拟机 2、右击虚拟机&#xff0c;选择设置 3、点击选项&#xff0c;选择客户机隔离&#xff0c;勾选启动复制粘贴 二、方法2 1、下载VMware Tools CDS Repository - /var/www/public/stage/session-89/cds/vmw-desktop/ws 选择对应版本的VMware Tools …

哪个软件消除笔好用?我来告诉你

全民自媒体时代&#xff0c;人人都是自媒体人&#xff0c;越来越多的人接触到修图&#xff0c;剪辑&#xff0c;制作&#xff0c;常常在社交媒体上分享美食制作教程&#xff0c;居家好物&#xff0c;影视混剪&#xff0c;小说解说等各种各样的精彩照片,但是在网上找的图片素材往…

msvcp140.dll的解决方法有哪些。详细解析五种可以修复msvcp140.dll丢失的方法

引言&#xff1a; 在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。那么&#xff0c;什么是msvcp140.dll文件&#xff1f;它的作用是什么&#xff1f;当它丢失时会对电脑产生什么影响&#xff1f;本文将详细介绍…

windows配置使用supervisor

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用步骤1.安装supervisor-win2.配置supervisord3.配置program4.启动supervisord.exe5.supervisorctl.exe管控 二、后台启动总结 前言 windows使用supervi…

一篇博客读懂完全二叉树——堆

目录 一、二叉树的概念及结构 2.1 二叉树概念 2.2 特殊的二叉树&#xff1a; 2.3 二叉树的存储结构 二、二叉树的顺序结构 2.1 二叉树的顺序结构 2.2 堆的概念及结构 三、堆的实现 3.1 插入数据 3.1.1向上调整算法 3.1.2向下调整算法 3.2 删除数据 3.2.1向下调整…

防火墙补充NAT

目录 1.iptables保存规则 2.自定义链 3.NAT NAT的实现分为下面类型&#xff1a; SNAT实验操作 DNAT实验操作 1.iptables保存规则 永久保存方法一&#xff1a; iptables -save > /data/iptables_rule //输出重定向备份 iptables -restore < /data/iptables_r…

使用canvas实现代码雨高级升阶版【附带源码和使用方法】

文章目录 前言基本绿色的彩色版本飘散雪花状后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端面试 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&…