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

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

});

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker (镜像分层、阿里云镜像推送/拉去)-day02

一、镜像概念 Docker 镜像是 Docker 容器的基础&#xff0c;它提供了一种可重复使用的、跨平台的部署方式&#xff0c;使得应用程序的部署和运行变得简单和高效。 把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),打包好…

ethtool工具添加并验证网口

Filesystem Packages->console->network->ethtool 命令描述&#xff1a; ethtool 是用于查询及设置网卡参数的命令。 使用命令&#xff1a; ethtool ethx //查询ethx网口基本设置&#xff0c;其中 x 是对应网卡的编号&#xff0c;如eth0、eth1等等 ethtool –…

利用 LD_PRELOAD劫持动态链接库,绕过 disable_function

目录 LD_PRELOAD 简介 程序的链接 动态链接库的搜索路径搜索的先后顺序&#xff1a; 利用LD_PRELOAD 简单的劫持 执行id命令 反弹shell 引申至 PHP 绕过disable_function 方法1&#xff1a;使用蚁剑的扩展工具绕过disable_function 方法2&#xff1a;利用 mail 函数…

推荐几款免费的智能AI伪原创工具

在当今信息快速传播的时代&#xff0c;创作者们常常为了在激烈的竞争中脱颖而出而苦苦挣扎&#xff0c;而其中的一项挑战就是创作出独具创意和独特性的内容。然而&#xff0c;时间有限的现实让很多人望而却步。在这个背景下&#xff0c;免费在线伪原创工具成为了创作者们的得力…

Windows核心编程 HOOK

目录 HOOK概述 HOOK API SetWindowsHookExA 函数(winuser.h) UnhookWindowsHookEx 函数(winuser.h) NextHookEx 函数(winuser.h) 局部钩子 全局钩子 为什么全局钩子需要用dll作为过程函数&#xff1f; HOOK概述 本质&#xff1a;Windows消系统的消息过滤器。 全局钩子…

还在愁没项目?来瞧瞧这些另类赚钱方式

客套话不多说&#xff0c;直接上案例&#xff0c;这些都是正儿八经的真实案例&#xff0c;相信大家通过这些人的案例自然能摸索整理出一套属于自己的项目&#xff01;摸索不出&#xff0c;也多多少少能受一些灵感上的启发。 小A是长期混B站的&#xff0c;大家称他为“B站搬运工…

直流负载与交流负载的作用

直流负载和交流负载都是用来消耗电能的装置或设备&#xff0c;它们的作用是将电能转化为其他形式的能量&#xff0c;以满足特定的需求。直流负载主要用于直流电路中&#xff0c;例如直流电源、电池等。它们可以将直流电能转化为热能、光能、机械能等。直流负载在很多领域都有广…

【BSP开发经验】uboot gpl框架开发经验

文章目录 uboot_gpl 隔离 的目的uboot_gpl 隔离基本原理uboot_gpl 基本框架uboot_gpl 适配新平台的方式uboot 添加hikcmd功能适配调试步骤 链接脚本语法链接脚本的格式链接脚本的简单示例设置入口点&#xff08;entry&#xff09;设置输出文件名处理目标文件格式的命令uboot_gp…

whatsapp信息群发脚本开发!

WhatsApp 作为全球广受欢迎的通讯应用&#xff0c;在我们的日常生活中扮演着重要角色&#xff0c;有时候&#xff0c;我们需要向大量联系人发送消息&#xff0c;比如营销推广、活动通知等。 一个个手动发送消息?那简直太落后了!今天&#xff0c;我们将探讨如何利用脚本开发实…

web:catcat-new(文件包含漏洞、flask_session伪造)

前提知识 /etc/passwd 该文件储存了该Linux系统中所有用户的一些基本信息&#xff0c;只有root权限才可以修改。其具体格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell&#xff08;以冒号作为分隔符&#xff09; /proc/self proc是一个伪文件系统…

项目终验的exce表格缩放,排版等经常使用

xxx个项目的验收资料 1.申请表等等很多信息 需求&#xff1a;放在一页内等办法 上述文档&#xff0c;在excel表格打印预览中都是在两页中&#xff0c;很难调节&#xff0c;这个时候采用wps专业版本即可。 wps排版经常使用的功能如下&#xff1a; 经常使用的是 1.把所有列打印…

Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门

1.概览 多源数据目录&#xff08;Multi-Catalog&#xff09;功能&#xff0c;旨在能够更方便对接外部数据目录&#xff0c;以增强Doris的数据湖分析和联邦数据查询能力。 在之前的 Doris 版本中&#xff0c;用户数据只有两个层级&#xff1a;Database 和 Table。当我们需要连…

网络视频怎么更改IP?使用静态IP更改地址有哪些好处?

随着互联网的普及&#xff0c;越来越多的人开始使用网络视频。有时候&#xff0c;我们可能会遇到需要更改网络视频的IP地址的情况。那么&#xff0c;如何更改IP地址呢&#xff1f;使用静态IP更改地址又有哪些好处呢&#xff1f; 首先&#xff0c;我们来了解一下什么是静态IP地址…

外贸行业多人文件共享云盘推荐

Zoho WorkDrive外贸行业解决方案致力于为各类外贸企业客户提供数字化转型的支持&#xff0c;全面覆盖市场调研、客户服务与管理、产品设计与制作、采购、供应商管理、财务对账、单证报关、仓储管理以及物流运输等环节。Zoho WorkDrive企业网盘提供文件资料在线存储、共享、同步…

C/C++转义符:\x

文章目录 什么是转义符使用"\x"定义char数组宏定义中的\ 什么是转义符 在C语言中&#xff0c;转义符用于将一些特殊字符表示为单个字符&#xff0c;常用的转义符有&#xff1a; \\&#xff1a;反斜杠符号\&#xff1a;单引号\"&#xff1a;双引号\a&#xff1…

动态规划--使用最小花费爬楼梯

题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…

如何有效避免七个常见的身份验证漏洞

引言 随着网络威胁的数量不断增加&#xff0c;了解学习可能会危及到客户在线身份的常见身份验证漏洞就显得格外重要。如果需要在网上满足客户的需求&#xff0c;并使用传统的身份验证机制时&#xff0c;就要对身份验证漏洞保持警惕。 只有了解了这些漏洞&#xff0c;才可以更…

vue3随机生成8位字母+数字

// 随机生成8位字母数字 export const autoPassword: any () > {// console.log("自动生成");//可获取的字符串const chars ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz0123456789;const list [];//通过随机获取八个字符串的索引下标for (let i 0;…

谁可以从使用 Amazon Lightsail 进行 VPS 托管中受益?

文章作者&#xff1a;Libai 介绍 在当今数字化的环境中&#xff0c;拥有可靠和高效的托管解决方案对于企业和个人来说至关重要。由于其灵活性、可扩展性和成本效益&#xff0c;虚拟专用服务器&#xff08;VPS&#xff09;托管已经在市场上获得了巨大的流行。Amazon Lightsail …

样品实验Fortegra202环氧树脂增韧剂TDS说明书

样品实验Fortegra202环氧树脂增韧剂TDS说明书 150克/瓶