class Twoctwop::Request

Attributes

data[RW]
digest[RW]
token[RW]

Public Class Methods

new(data: {}, token: nil) click to toggle source
# File lib/twoctwop/request.rb, line 13
def initialize(data: {}, token: nil)
  raise "Set end point"      if Twoctwop::Config.endpoint.nil?
  raise "Merchant ID is nil" if Twoctwop::Config.merchant_id.nil?
  raise "Secret key is nil"  if Twoctwop::Config.secret_key.nil?

  @token = token
  @digest = OpenSSL::Digest.new('sha1')

  @data = data
end

Public Instance Methods

endpoint() click to toggle source
# File lib/twoctwop/request.rb, line 24
def endpoint
  Twoctwop::Config.endpoint
end
make_non_3ds_payment!() click to toggle source
# File lib/twoctwop/request.rb, line 32
def make_non_3ds_payment!
  body = RestClient.post endpoint, :paymentRequest => payload
  Response.new(body).decrypt_body
end
payload() click to toggle source
# File lib/twoctwop/request.rb, line 28
def payload
  Base64.strict_encode64(build_request)
end

Private Instance Methods

build_final_hash() click to toggle source
# File lib/twoctwop/request.rb, line 49
def build_final_hash
  data.merge({
    version: '8.0',
    merchantID: Twoctwop::Config.merchant_id,
    hashValue: calculate_hash_data_digest,
  }).merge(store_card_token)
end
build_request() click to toggle source
# File lib/twoctwop/request.rb, line 39
def build_request
  final_hash = build_final_hash

  Builder::XmlMarkup.new.PaymentRequest do |p|
    final_hash.keys.each do |k|
      p.tag!(k, final_hash[k]) 
    end
  end
end
calculate_hash_data_digest() click to toggle source
# File lib/twoctwop/request.rb, line 61
def calculate_hash_data_digest
  hash_data = [Twoctwop::Config.merchant_id, data[:uniqueTransactionCode], data[:amt]].join
  OpenSSL::HMAC.hexdigest(digest, Twoctwop::Config.secret_key, hash_data)
end
store_card_token() click to toggle source
# File lib/twoctwop/request.rb, line 57
def store_card_token
  token ? { storeCard: 'Y', storeCardUniqueID: token } : {}
end