Class: GenesisRuby::Api::Requests::Financial::Cards::Threeds::V2::MethodContinue

Inherits:
GenesisRuby::Api::Request show all
Includes:
Mixins::Requests::Financial::PaymentAttributes
Defined in:
lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb

Overview

Method Continue API request

Constant Summary

Constants inherited from GenesisRuby::Api::Request

GenesisRuby::Api::Request::AUTH_TYPE_BASIC, GenesisRuby::Api::Request::AUTH_TYPE_TOKEN, GenesisRuby::Api::Request::METHOD_DELETE, GenesisRuby::Api::Request::METHOD_GET, GenesisRuby::Api::Request::METHOD_PATCH, GenesisRuby::Api::Request::METHOD_POST, GenesisRuby::Api::Request::METHOD_PUT, GenesisRuby::Api::Request::PORT_HTTPS, GenesisRuby::Api::Request::PROTOCOL_HTTPS

Instance Attribute Summary collapse

Attributes included from Mixins::Requests::Financial::PaymentAttributes

#amount, #currency

Attributes inherited from GenesisRuby::Api::Request

#api_config

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from GenesisRuby::Api::Request

#build_document

Constructor Details

#initialize(configuration, _builder_interface = nil) ⇒ MethodContinue

Override default constructor with FORM Builder Interface



53
54
55
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 53

def initialize(configuration, _builder_interface = nil)
  super(configuration, Builder::FORM)
end

Instance Attribute Details

#signatureObject

SHA512 of а concatenated string (unique_id, amount, timestamp, merchant_api_password)



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 73

def signature
  return @signature unless @signature.nil?

  payment_amount = @currency.nil? ? amount : transform_amount(amount, currency)

  Utils::Threeds::V2.generate_signature(
    unique_id: transaction_unique_id,
    amount: payment_amount,
    timestamp: transaction_timestamp,
    merchant_password: @configuration.password
  )
end

#transaction_unique_idObject

Equivalent to the value of the unique_id, received from the response of the initial transaction request



66
67
68
69
70
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 66

def transaction_unique_id
  return extract_unique_id_from_url @url if @transaction_unique_id.nil?

  @transaction_unique_id
end

#urlObject

A link between the customer's browser and the card issuer must be opened with a hidden iframe



58
59
60
61
62
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 58

def url
  return @url = generate_endpoint_url if @url.nil?

  @url
end

Class Method Details

.build_from_response_object(configuration, response_object) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 21

def build_from_response_object(configuration, response_object)
  if response_object[:threeds_method_continue_url].nil? ||
     response_object[:unique_id].nil? ||
     response_object[:amount].nil? || response_object[:currency].nil? ||
     response_object[:timestamp].nil? || !response_object[:timestamp].is_a?(DateTime)

    raise ParameterError, 'Response object is incomplete or required attributes are missing!'
  end

  build_method_continue_request configuration, response_object
end

Instance Method Details

#transaction_timestampObject

The timestamp from the initial transaction response



87
88
89
90
91
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 87

def transaction_timestamp
  @transaction_timestamp&.strftime(
    GenesisRuby::Api::Constants::DateTimeFormats::YYYY_MM_DD_H_I_S_ZULU
  )
end

#transaction_timestamp=(value) ⇒ Object

The timestamp from the initial transaction response



94
95
96
# File 'lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb', line 94

def transaction_timestamp=(value)
  parse_date attribute: __method__, value: value, allow_empty: true
end