require 'payment/errors' require_relative '../../../paratika/lib/paratika' class Payment::ParatikaGateway include ::Paratika ERROR_MAP = Paratika::ERROR_MAP include Payment::Errors def self.active? Paratika.config.active end def self.connection request = yield response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.charge_from_card(payment, customer, card, pre_auth, saved_card) klass = pre_auth ? Paratika::PreAuth : Paratika::Sale card = saved_card ? { token: card } : card request = klass.new(payment, customer, card) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.cancel_transaction(payment) request = Paratika::Void.new(payment) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.refund_money(payment) request = Paratika::Refund.new(payment) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.query_saved_cards(customer) request = Paratika::QueryCard.new(customer[:id]) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.delete_card(token) request = Paratika::EWalletDeleteCard.new(token) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.currency_exchange(from, to, amount) request = Paratika::CurrencyExchange.new(from, to, amount) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end def self.query_bin_number(bin_number) request = Paratika::QueryBin.new(bin_number) response = request.send [request.data, response.data] rescue => e Payment.debug_message(request, response, e) end end