key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gateio.ws"
prefix="/api/v4"
method="POST"
url="/withdrawals"
query_param=""
body_param='{"withdraw_order_id":"order_123456","currency":"USDT","address":"1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs","amount":"222.61","memo":"","chain":"TRX"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
####
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON qw( encode_json )
use Digest::SHA qw(hmac_sha512_hex);
use MIME::Base64;
use POSIX qw( strftime );
my $apiKey = 'demo';
my $host = "https://api.gateio.ws";
my $prefix = "/api/v4";
my $url = '/withdrawals';
my $query_param = '';
my %mas = (
"amount" => "222.61",
"currency" => "USDT",
"address" => "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"chain" => "TRX"
);
my $body = encode_json \%mas;
my $time = time;
my $timestamp = strftime("%Y%m%d %S", localtime($time));
my $sign_headers = hmac_sha512_hex('POST', $prefix . $url, $query_param, $body, $timestamp);
my %payload = (
"KEY" => $apiKey,
"Timestamp" => $timestamp,
"SIGN" => $sign_headers,
"Content-Type" => 'application/json'
);
my $ua = LWP::UserAgent->new;
my $response = $ua->post(
$host . $prefix . $url,
%payload,
Content => $body
);
if ($response->is_success) {
print $response->decoded_content;
} else {
print $response->decoded_content;
print "HTTP POST error code: ", $response->code, "\n";
print "HTTP POST error message: ", $response->message, "\n";
}
####
timestamp=$(date +%s)
####
my $time = time;
my $timestamp = strftime("%Y%m%d %S", localtime($time));
# prints example 20240924 55