Class: RailsCryptoPayment::BinanceDepositClient
- Inherits:
-
Object
- Object
- RailsCryptoPayment::BinanceDepositClient
- Defined in:
- lib/rails_crypto_payment/exchange_clients.rb
Constant Summary collapse
- API =
URI("https://api.binance.com")
Instance Method Summary collapse
- #find_internal_usdt(tx_id:, start_time:, end_time:) ⇒ Object
-
#initialize(key:, secret:) ⇒ BinanceDepositClient
constructor
A new instance of BinanceDepositClient.
Constructor Details
#initialize(key:, secret:) ⇒ BinanceDepositClient
Returns a new instance of BinanceDepositClient.
12 13 14 15 16 |
# File 'lib/rails_crypto_payment/exchange_clients.rb', line 12 def initialize(key:, secret:) @key = key.to_s @secret = secret.to_s raise Error, "Binance API credentials missing" if @key.empty? || @secret.empty? end |
Instance Method Details
#find_internal_usdt(tx_id:, start_time:, end_time:) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/rails_crypto_payment/exchange_clients.rb', line 18 def find_internal_usdt(tx_id:, start_time:, end_time:) params = { coin: "USDT", status: 1, startTime: start_time, endTime: end_time, includeSource: true, recvWindow: 5000, timestamp: (Time.now.to_f * 1000).to_i } query = URI.encode_www_form(params) signature = OpenSSL::HMAC.hexdigest("SHA256", @secret, query) uri = URI("#{API}/sapi/v1/capital/deposit/hisrec?#{query}&signature=#{signature}") request = Net::HTTP::Get.new(uri, "X-MBX-APIKEY" => @key) response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, open_timeout: 5, read_timeout: 15) { |http| http.request(request) } raise Error, "Binance API HTTP #{response.code}" unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body).find { |row| row["txId"].to_s.casecmp?(tx_id.to_s) && row["transferType"].to_i == 1 } rescue Error raise rescue StandardError => e raise Error, "Binance API request failed: #{e.message}" end |