C#/Winform

[C#] 업비트 API 사용하기

kjun.kr 2022. 8. 2. 20:38
728x90
728x170

https://www.upbit.com/service_center/open_api_guide

 

업비트

디지털 자산, 비트코인, 이더리움, 리플, 에이다, 솔라나 등 알트코인 거래.

www.upbit.com

여기에서 본인 계정으로 API 를 신청한다.
신청 절차가 복잡하지 않다.
IP 는 https://nordvpn.com/ko/ip-lookup/ 여기에서 확인하면되고
중간에 카카오 인증만 잘되면 아래처럼 API 키(Access/Secret Key)가 발급된다.

아래는 C# 에서 인증절차를 거쳐 내 계좌 정보를 가져오는 방법이다.
Nuget 은 아래와같이 설치하고

using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using System.Windows;

using Newtonsoft.Json;

using RestSharp;

namespace UpBitApp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var payload = new JwtPayload
            {
                { "access_key", 발급받은ACCESSKEY },
                { "nonce", Guid.NewGuid().ToString() },
                //{ "query_hash", queryHash },
                { "query_hash_alg", "SHA512" }
            };

            byte[] keyBytes = Encoding.Default.GetBytes(발급받은SECRETKEY);
            var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(keyBytes);
            var credentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey, "HS256");
            var header = new JwtHeader(credentials);
            var secToken = new JwtSecurityToken(header, payload);

            var jwtToken = new JwtSecurityTokenHandler().WriteToken(secToken);
            var authorizationToken = "Bearer " + jwtToken;

            var client = new RestClient("https://api.upbit.com/v1/accounts");
            var request = new RestRequest();
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", authorizationToken);
            RestResponse response = client.Execute(request);
            var data = JsonConvert.DeserializeObject<List<UpBitAccountData>>(response.Content);
        }
    }
}

UpBitAccountData.cs

public class UpBitAccountData
{
    public string currency { get; set; }
    public string balance { get; set; }
    public string locked { get; set; }
    public string avg_buy_price { get; set; }
    public bool avg_buy_price_modified { get; set; }
    public string unit_currency { get; set; }
}

결과 (계좌 잔액은 없는 상태)

참고
https://docs.upbit.com/docs/create-authorization-request

 

728x90
그리드형