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.to_json, # debug_output: $stdout, :headers => {'Content-Type' => 'application/json'} ) Tinkoff::Payment.new(response.parsed_response) end
Private Instance Methods
prepare_data()
click to toggle source
Ключ=значение дополнительных параметров через “|”, например Email=a@test.ru|Phone=+71234567890
# File lib/tinkoff/request.rb, line 45 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 25 def prepare_params # Encode and join DATA hash # prepare_data # # Add terminal key and password @params.merge!({TerminalKey: Tinkoff.tinkoff_params[:TerminalKey]}) # Sort params by key @params = @params.sort.to_h # Add token (signature) @params[:Token] = token end
token()
click to toggle source
Params signature: oplata.tinkoff.ru/landing/develop/documentation/request_sign
# File lib/tinkoff/request.rb, line 38 def token values = @params.except(:DATA, :Receipt).merge({Password: Tinkoff.tinkoff_params[:Password]}) .stringify_keys.sort.to_h.values.join Digest::SHA256.hexdigest(values) end