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