TÀI LIỆU API


I. Hàm Công Cộng
1. Thông Tin Giá Thị Trường
  1. Địa Chỉ : https://api.kfchange.com/v1/ticker/<Base>/<Quote>
  2. Kết Quả : https://api.kfchange.com/v1/ticker/btc/vnd
    {
    "buy":23000000,
    "sell":14000000,
    "last":14000000,
    "low":14000000,
    "high":22000000,
    "volume":9.1,
    "time":1410143657
    }                  
2. Danh Sách Đặt Lệnh
  1. Địa Chỉ : https://api.kfchange.com/v1/depth/<Base>/<Quote>[/<Record>]
  2. Kết Quả : https://api.kfchange.com/v1/depth/btc/vnd/100
    {
    "bids":[
      {
        "price":14000000,
        "amount":0.9
      },
      ...
    ],
    "asks":[
      {
        "price":23000000,
        "amount":1
      },
      ...
    ]
    }                  
3. Lịch Sử Mua Bán
  1. Địa Chỉ : https://api.kfchange.com/api/v1/trade/<Base>/<Quote>[/<Record>]
  2. Kết Quả : https://api.kfchange.com/v1/trade/btc/vnd/100
    {
    "buy":23000000,
    "sell":14000000,
    "last":14000000,
    "low":14000000,
    "high":22000000,
    "volume":9.1,
    "time":1410143657
    }                  

II. Các Hàm Riêng Tư
1. Yêu Cầu Xác Thực Truy Vấn
  1. Bạn có thể tạo và lấy thông tin kết nối api tại địa chỉ https://www.kfchange.com/api.html
  2. Thông tin xác thực yêu cầu truy vấn gửi đến bằng phường thức HTTP Headers
  3. Địa Chỉ Tiếp Nhận : POST - https://api.kfchange.com/v1/private
  4. Khóa : Mã API công cộng - Ví dụ : 7FAOLE67-D9OD55WE-WZ06X9K0-5CG93SO9-99WU063Q
  5. Chữ Ký : Tất cả dữ liệu data "thamso1=dulieu1&thamso2=dulieu2&Nonce=1234567890" được ký bởi Mã Bí Mật sử dụng thuật toán SHA512. Ví dụ : 9c6135179f9b57624faebbaa31add9e2...bd1e227a7280b3e04e4
  6. Kết quả trả về là chuỗi với định dạng JSON.
  7. Có lỗi phát sinh thì trả về mã lỗi. Ví dụ : {"error":41}

1. Truy Vấn Số Dư Tài Khoản
  1. Phương Thức : BALANCE
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    Không có tham số
  3. Kết Quả :
    {
    "BTC":2.0958,
    "PMUSD":0,
    "WMZ":0,
    ...,
    "VND":73821055,
    }                  

2. Liệt Kê Danh Sách Đặt Lệnh
  1. Phương Thức : ORDER
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    status Chuỗi / Mảng Có Trạng thái lệnh muốn liệt kê. Danh sách trạng thái : OPEN - PARTLY - FILLED - CANCELLED
  3. Kết Quả :
    [
    {
      "id":"27",
      "type":"BUY",
      "market":"BTC-VND",
      "amount":"0.90000000",
      "price":"14000000.00000000",
      "status":"PARTLY"
    },
    {
      "id":"26",
      "type":"BUY",
      "market":"BTC-VND",
      "amount":"1.00000000",
      "price":"13000000.00000000",
      "status":"OPEN"
    },
    ...
    ]                  

3. Hủy Lệnh Đang Đặt
  1. Phương Thức : CANCEL
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    order Số Nguyên / Mảng Có Chỉ số lệnh của bạn đang ở trạng thái OPEN hoặc PARTLY.
  3. Kết Quả :
    {
    "fail":[
      [
        10,
        11,
        12
      ]
    ],
    "success":[
      [
        13,
        14,
        15
      ]
    ]
    }                  

4. Đặt Lệnh
  1. Phương Thức : TRADE
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    type Chuỗi Có Loại lệnh bạn muốn đặt. Giá trị : BUY - SELL
    market Chuỗi Có Mã thị trường. Ví dụ : BTC-VND,WMZ-VND,PMUSD-VND,...
    amount Số Có Số lượng muốn giao dịch.
    price Số Có Giá muốn giao dịch.
  3. Kết Quả :
    {
    "order":[
      {
        "id":41,
        "type":"BUY",
        "market":"BTC-VND",
        "amount":0.1,
        "price":8000000
      }
    ]
    }                  

5. Rút Tiền
  1. Phương Thức : WITHDRAW
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    currency Chuỗi Có Mã của các các loại tiền tệ. Ví dụ : BTC, VND, ...
    amount Số Có Số tiền bạn muốn rút. Ví dụ : 123456.78
    details Mảng Không

    - Nếu không có giá trị này thì hệ thống sẽ ngầm hiểu là bạn muốn chuyển số tiền muốn rút thành Mã Nạp Tiền.

    - Sử dụng tham số : Account ( Bạn muốn rút các loại tiền dạng tiền điện tử như PMUSD,WMZ,WME,OKPAY,....)

    - Sử dụng tham số : Address ( Bạn rút các loại tiền dạng tiền tệ mật mã - Bitcoin, Litecoin, ... )

    - Sử dụng kết hợp các tham số : Bank - Account - Name ( Bạn muốn rút tiền về tài khoản ngân hàng chỉ hỗ trợ cho VNĐ )

  3. Kết Quả :
    {"status":true}
    
    hoặc
    
    {
    "status":true,
    "voucher":{
      "currency":"VND",
      "amount":100000,
      "code":"VND-H45TOL-SHICPJ-SMNTP9-LNSHTK-VD9VEQ"
    }
    }                  

6. Sử Dụng Mã Nạp Tiền
  1. Phương Thức : REDEEM
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    voucher Chuỗi Có Mã nạp tiền trong hệ thống của bạn.
  3. Kết Quả :
    {
    "success":{
      "currency":"VND",
      "amount":"99000000.00000000",
      "voucher":"ANYTHINGE-VND-PR44AY-OJJUOL-TSZDQF-NZPRGK-IZVUFB"
    }
    }                  

6. Lịch Sử Giao Dịch
  1. Phương Thức : HISTORY
  2. Tham Số :
    Tham Số Kiểu Dữ Liệu Yêu Cầu Diễn giải / Giá trị có thể nhận
    record Số Nguyên Không Số lượng bản ghi trả về mặc định là 25 tối đa không quá 250.
  3. Kết Quả :
    [
    {
      "id":"300555",
      "type":"WITHDRAWAL",
      "currency":"VND",
      "amount":"-20863760.00000000",
      "fee":"0.00000000",
      "description":{
        "index":21864
      },
      "date":"1440067508"
    },
    ...
    {
      "id":"300544",
      "type":"TRADE",
      "currency":"BTCE",
      "amount":"-5.07000000",
      "fee":"0.00000000",
      "description":{
        "action":"SELL",
        "amount":877.5,
        "price":"22927.00000000",
        "currency":{
          "base":"BTCE",
          "quote":"VND"
        }
      },
      "date":"1440067507"
    }
    ]                  

III. Bảng Mã Lỗi
Mã Lỗi Diễn Giải
1 Số dư tài khoản không đủ để thực hiện giao dịch mua.
2 Số lượng vào lệnh quá hạn mức.
3 Số tiền đặt mua nhỏ hơn mức tối thiểu quy định.
4 Mã thị trường không hợp lệ.
5 Thiếu tham số thị trường ( market ).
6 Giá mua ( price ) không đúng.
7 Giá mua ( price ) không đúng.
8 Số lượng ( amount ) không đúng.
9 Tài khoản của bạn đã bị khóa chức năng này.
10 Loại giao dịch ( type ) không đúng. Chỉ nhận giá trị BUY hoặc SELL.
11 API của bạn không cho phép thực hiện chức năng đặt lệnh.
12 Trạng thai lệnh ( status ) không đúng. Chỉ nhận giá trị OPEN - PARTLY - FILLED - CANCELLED
13 Trạng thai lệnh ( status ) không đúng. Chỉ nhận giá trị OPEN - PARTLY - FILLED - CANCELLED
14 API của bạn không cho phép thực hiện chức năng liệt kê lệnh.
15 Thiếu tham số ( order ) trong yêu cầu hủy lệnh.
16 API của bạn không cho phép thực hiện chức năng hủy lệnh.
17 Tài khoản của bạn đã bị khóa chức năng này.
18 API của bạn không cho phép thực hiện chức nạp tiền.
19 Tài khoản của bạn đã bị khóa chức năng này.
20 Số tiền muốn rút vượt quá giới hạn một ngày.
21 Số tiền muốn rút vượt quá giới hạn một tuần.
22 Số tiền muốn rút vượt quá giới hạn một tháng.
23 Số dư tài khoản không đủ để giao dịch.
24 Số dư tài khoản không đủ để giao dịch.
25 Số tiền muốn rút nhỏ hơn mức quy định.
26 Số tiền muốn rút không đúng.
27 Loại tiền tệ muốn rút không đúng.
28 API của bạn không cho phép thực hiện chức rút tiền.
29 Số tiền trong tài khoản của bạn đang bị đóng băng.
30 Tài khoản của bạn đã bị khóa chức năng này.
31 Có lỗi hệ thống trong quá trình sử dụng mã nạp tiền.
32 Mã nạp tiền đã được sử dụng.
33 Mã nạp tiền không tồn tại.
34 Thiếu tham số mã nạp tiền.
35 Tài khoản của bạn đã bị khóa chức năng này.
36 API của bạn không cho phép thực hiện chức xem lịch sử giao dịch.
37 Tài khoản của bạn đã bị khóa chức năng này.
38 API của bạn không cho phép thực hiện chức xem số dư.
39 Tài khoản của bạn đã bị khóa chức năng này.
40 Hàm muốn gọi không tồn tại.
41 Chữ ký không hợp lệ.
42 Tham số Nonce lần sau phải lớn hơn lần trước.
43 API này đang tạm khóa.
44 Tài khoản của bạn đang tạm khóa.
45 IP truy cập không có trong danh sách cho phép.
46 Khóa API không đúng.
47 Thiếu tham số Khóa hoặc Chữ ký.

IV. Mã Nguồn Mẫu
<?php
define('api_KEY','7FAOLE67-D9OD55WE-WZ06X9K0-5CG93SO9-99WU063Q');
define('api_SECRET','10d5e71f251902fdacd1fa4a8f76655dffd0e29d7dd1703b41c798a2bed42f07');

function doQuery($Method,array $Request = array())
{
$Request['Method'] = $Method;
$Request['Nonce'] = microtime(true) * 10000;
$Data = http_build_query($Request, '', '&');

$Object = curl_init();
curl_setopt($Object, CURLOPT_RETURNTRANSFER, true);
curl_setopt($Object, CURLOPT_USERAGENT, 'Mozilla/4.0'.php_uname('s').'; PHP/'.phpversion().')');
curl_setopt($Object, CURLOPT_URL, 'https://api.kfchange.com/v1/private');
curl_setopt($Object, CURLOPT_POSTFIELDS, $Data);
curl_setopt($Object, CURLOPT_HTTPHEADER, array('KEY: '.api_KEY,'SIGNATURE: '.hash_hmac('sha512', $Data, api_SECRET)));
curl_setopt($Object, CURLOPT_SSL_VERIFYPEER, FALSE);

if($Response = curl_exec($Object))
{
  return $Response;
}
return false;
}
/*
var_dump(doQuery('balance'));
var_dump(doQuery('order',array('status' => array('open','partly'))));
var_dump(doQuery('cancel',array('order' => array(11,12,13))));
var_dump(doQuery('trade',array('type' => 'BUY','market' => 'BTC-VND','amount' => 0.1,'price' => 8000000)));
var_dump(doQuery('trade',array('type' => 'SELL','market' => 'BTC-VND','amount' => 1,'price' => 16000000)));
var_dump(doQuery('withdraw',array('currency' => 'BTC','amount' => 1,'details' => array('Address' => '1MgcFUsNUUgLict99hkv6S9Evt83YzuL9a'))));
var_dump(doQuery('withdraw',array('currency'=>'VND','amount'=>100000,'details'=>array(
'Bank'=>'DAB',
'Account'=>'0102030405',
'Name'=>'LE DUONG SY MY'))));
var_dump(doQuery('withdraw',array('currency' => 'VND','amount' => 100000)));
var_dump(doQuery('redeem',array('voucher' => 'VND-PR44AY-OJJUOL-TSZDQF-NZPRGK-IZVUFB')));
var_dump(doQuery('history',array('record' => 5)));
*/
?>