Похоже, что вы звоните get_time
дважды, так что это может быть вашей проблемой, поскольку документация с подписанным запросом указывает, что подпись должна содержать все ваши параметры запроса и тело запроса сцеплено.Когда вы звоните get_time
во 2-й раз, отметка времени изменилась ПОСЛЕ того, как вы создали подпись с 1-й отметкой времени.
Попробуйте вместо этого
def get_amount
timestamp = get_time
query = URI.encode_www_form("timestamp"=> timestamp)
signature = sig(query)
query = URI.encode_www_form("timestamp"=> timestamp, "signature" => signature)
endpoint = "/api/v3/account"
uri = @url + endpoint + '?' + query
uri = URI(uri)
req = Net::HTTP::Get.new(uri)
req['X-MBX-APIKEY'] = @api_key
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(req)
end
puts "Sig: #{signature}"
puts "www: #{uri}"
res.body
end
В примечании, ваше get_time
метод может быть в 1 строку:
def get_time
(Time.now.to_f * 1000).to_i.to_s
end