import { createHmac } from 'crypto';
import fetch from 'node-fetch';
import * as qs from 'qs';
const accessKey = '<Your Access Key>';
const secretKey = '<Your Secret Key>';
(async () => {
// path is request path like /api/v3/info
// nonce is a timestamp in positive integer, stands for milliseconds elapsed since Unix epoch.
// nonce must be within 30 seconds difference of server time, each nonce can be used only once
// other parameters needed in body depends on your request content const params = {
nonce: Date.now(),
// <Other parameters if needed...>
};
const paramsToBeSigned = {
...params,
path: '/api/v3/info',
};
const payload = Buffer.from(JSON.stringify(paramsToBeSigned)).toString('base64');
const signature = createHmac('sha256', secretKey).update(payload).digest('hex');
const response = await fetch(`https://max-api.maicoin.com/api/v3/info?${qs.stringify(params, {arrayFormat: 'brackets'})}`, {
method: 'GET',
headers: {
'X-MAX-ACCESSKEY': accessKey,
'X-MAX-PAYLOAD': payload,
'X-MAX-SIGNATURE': signature,
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data);
})();
(async () => {
const params = {
nonce: Date.now(),
market: 'btcusdt',
};
const paramsToBeSigned = {
...params,
path: '/api/v3/wallet/spot/orders',
};
const payload = Buffer.from(JSON.stringify(paramsToBeSigned)).toString('base64');
const signature = createHmac('sha256', secretKey).update(payload).digest('hex');
const response = await fetch('https://max-api.maicoin.com/api/v3/wallet/spot/orders', {
method: 'DELETE',
body: JSON.stringify(params),
headers: {
'X-MAX-ACCESSKEY': accessKey,
'X-MAX-PAYLOAD': payload,
'X-MAX-SIGNATURE': signature,
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data);
})();