class Tinkoff::Request

Constants

BASE_URL

Public Class Methods

new(path, params = {}) click to toggle source
# File lib/tinkoff/request.rb, line 5
def initialize(path, params = {})
  @url = BASE_URL + path
  @params = params
end

Public Instance Methods

perform() click to toggle source
# File lib/tinkoff/request.rb, line 10
def perform
  prepare_params
  response = HTTParty.post(@url, body: @params, format: :json).parsed_response
  Tinkoff::Payment.new(response)
end

Private Instance Methods

default_params() click to toggle source
# File lib/tinkoff/request.rb, line 35
def default_params
  {
    TerminalKey: Tinkoff.config.terminal_key,
    Password: Tinkoff.config.password
  }
end
prepare_data() click to toggle source

Ключ=значение дополнительных параметров через “|”, например Email=a@test.ru|Phone=+71234567890

# File lib/tinkoff/request.rb, line 43
def prepare_data
  return unless @params[:DATA].present?
  @params[:DATA] = @params[:DATA].to_query.tr('&', '|')
end
prepare_params() click to toggle source
# File lib/tinkoff/request.rb, line 18
def prepare_params
  # Encode and join DATA hash
  prepare_data
  # Add terminal key and password
  @params.merge!(default_params)
  # Sort params by key
  @params = @params.sort.to_h
  # Add token (signature)
  @params[:Token] = token
end
token() click to toggle source

Params signature

# File lib/tinkoff/request.rb, line 30
def token
  values = @params.values.join
  Digest::SHA256.hexdigest(values)
end