module EcconnectRails::BaseModel

Constants

CURRENCY

Public Instance Methods

check_data() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 32
def check_data
  @check_data ||= make_check_data
end
check_signature() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 52
def check_signature
  cert.public_key.verify OpenSSL::Digest::SHA1.new, Base64.decode64(self.income_signature), check_data
end
code() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 44
def code
  I18n.t "ecconnect_rails.codes.code_#{self.tran_code}" if self.tran_code
end
currency() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 24
def currency
  I18n.t "ecconnect_rails.currency_#{self.currency_id}"
end
ecconnect_json() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 48
def ecconnect_json
  self.as_json(except: [:income_signature, :proxy_pan, :rrn, :sd, :xid, :approval_code], methods: [:purchase_time, :signature, :code])
end
purchase_time() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 20
def purchase_time
  self.created_at.strftime("%Y%m%d%H%M%S%z") if self.created_at
end
request_data() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 28
def request_data
  @request_data ||= make_request_data
end
signature() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 36
def signature
  @signature ||= sign(request_data)
end
upc_amount() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 40
def upc_amount 
  (self.amount*100).to_i
end
update_by(params) click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 56
def update_by params
  self.update_attributes :proxy_pan => params[:ProxyPan],
                          :approval_code => params[:ApprovalCode],
                          :income_signature => params[:Signature],
                          :rrn => params[:Rrn],
                          :xid => params[:XID],
                          :email => params[:Email],
                          :sd => params[:SD],
                          :tran_code => params[:TranCode]
end

Private Instance Methods

cert() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 97
def cert
  OpenSSL::X509::Certificate.new File.read EcconnectRails.default_options[:cert_path]
end
make_check_data() click to toggle source

MerchantId;TerminalId;PurchaseTime;OrderId,Delay;Xid;CurrencyId,AltCurrencyId;Amount,AltAmount;SessionData;TranCode;ApprovalCode;

# File lib/ecconnect_rails/base_model.rb, line 102
def make_check_data
  data = ""
  data << (self.merchant_id.nil? ? "" : "#{self.merchant_id}")
  data << (self.terminal_id.nil? ? ";" : ";#{self.terminal_id}")
  data << ";#{self.purchase_time}"
  data << ";#{self.order_id}"
  data << (self.delay.nil? ? "" : ", #{self.delay}")
  data << (self.xid.nil? ? ";" : ";#{self.xid}")
  if self.currency_id.nil?
    data << ";"
  else
    data << ";#{self.currency_id}"
    data << (self.alt_currency_id.nil? ? "" : ", #{self.alt_currency_id}")
  end
  if self.amount.nil?
    data << ";"
  else
    data << ";#{self.upc_amount}"
    data << (self.alt_amount.nil? ? "" : ", #{self.alt_amount}")
  end
  data << (self.sd.nil? ? ";" : ";#{self.sd}")
  data << (self.tran_code.nil? ? ";" : ";#{self.tran_code}")
  data << (self.approval_code.nil? ? ";" : ";#{self.approval_code}")
  data << ";"
  data
end
make_request_data() click to toggle source

MerchantId;TerminalId;PurchaseTime;OrderId,Delay;CurrencyId,AltCurrencyId;Amount,AltAmount;SessionData(SD);

# File lib/ecconnect_rails/base_model.rb, line 130
def make_request_data
  data = ""
  data << (self.merchant_id.nil? ? "" : "#{self.merchant_id}")
  data << (self.terminal_id.nil? ? ";" : ";#{self.terminal_id}")
  data << ";#{self.purchase_time}"
  data << ";#{self.order_id}"
  data << (self.delay.nil? ? "" : ", #{self.delay}")
  if self.currency_id.nil?
    data << ";"
  else
    data << ";#{self.currency_id}"
    data << (self.alt_currency_id.nil? ? "" : ", #{self.alt_currency_id}")
  end
  if self.amount.nil?
    data << ";"
  else
    data << ";#{self.upc_amount}"
    data << (self.alt_amount.nil? ? "" : ", #{self.alt_amount}")
  end
  data << (self.sd.nil? ? ";" : "#{;self.sd}")
  data << ";"
  data
end
pem() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 93
def pem
  OpenSSL::PKey::RSA.new File.read EcconnectRails.default_options[:pem_path]
end
set_currency_id() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 73
def set_currency_id
  self.currency_id = EcconnectRails.default_options[:currency_id]
end
set_locale() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 69
def set_locale
  self.locale = I18n.locale.to_s
end
set_merchant_id() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 81
def set_merchant_id
  self.merchant_id = EcconnectRails.default_options[:merchant_id]
end
set_terminal_id() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 77
def set_terminal_id
  self.terminal_id = EcconnectRails.default_options[:terminal_id]
end
set_tran_code() click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 85
def set_tran_code
  self.tran_code = nil
end
sign(data) click to toggle source
# File lib/ecconnect_rails/base_model.rb, line 89
def sign data
  Base64.encode64(pem.sign(OpenSSL::Digest::SHA1.new, data)).gsub(/\n/, '')
end