Class: PagarMe::TransactionCommon

Inherits:
Model show all
Defined in:
lib/pagarme/transaction_common.rb

Direct Known Subclasses

Subscription, Transaction

Instance Method Summary collapse

Methods inherited from Model

all, class_name, find_by, find_by_id, #save, url, #url

Methods inherited from PagarMeObject

#[], #[]=, build, #each, #to_hash, #unsaved_values, #update

Constructor Details

#initialize(response = {}) ⇒ TransactionCommon

Returns a new instance of TransactionCommon.



7
8
9
10
11
12
# File 'lib/pagarme/transaction_common.rb', line 7

def initialize(response = {})
  super(response)
  self.payment_method = 'credit_card' unless self.payment_method
  self.installments = 1  unless self.installments
  self.status = 'local' unless self.status
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class PagarMe::PagarMeObject

Instance Method Details

#card_data_parametersObject



24
25
26
27
28
29
30
31
# File 'lib/pagarme/transaction_common.rb', line 24

def card_data_parameters
  {
    :card_number => self.card_number,
    :card_holder_name => self.card_holder_name,
    :card_expiration_date => "#{self.card_expiration_month}#{self.card_expiration_year}",
    :card_cvv => self.card_cvv
  }
end

#createObject



14
15
16
17
18
19
20
21
22
# File 'lib/pagarme/transaction_common.rb', line 14

def create
  self.card_hash = generate_card_hash unless self.card_hash
  self.card_number = nil
  self.card_holder_name = nil
  self.card_expiration_year = nil
  self.card_expiration_month = nil
  self.card_cvv = nil
  super
end

#generate_card_hashObject



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pagarme/transaction_common.rb', line 33

def generate_card_hash
  request = PagarMe::Request.new("/transactions/card_hash_key", 'GET')
  response = request.run
	  card_data = {
    :card_number => self.card_number,
    :card_holder_name => self.card_holder_name,
    :card_expiration_date => "#{self.card_expiration_month}#{self.card_expiration_year}",
    :card_cvv => self.card_cvv
  }

  public_key = OpenSSL::PKey::RSA.new(response['public_key'])
  ret = "#{response['id']}_#{Base64.strict_encode64(public_key.public_encrypt(card_data.to_params))}"
end