class Workarea::Klarna::Gateway
Public Instance Methods
cancel(tender)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 36 def cancel(tender) request = CancelRequest.new(tender) send_transaction_request(request) end
capture(tender, amount)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 26 def capture(tender, amount) request = CaptureRequest.new(tender, amount) send_transaction_request(request) end
create_session(order)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 6 def create_session(order) request = CreateSessionRequest.new(order) send_request(request) end
purchase(tender, amount)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 21 def purchase(tender, amount) request = PlaceOrderRequest.new(order, amount, auto_capture: true) send_transaction_request(request) end
refund(tender, amount)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 31 def refund(tender, amount) request = RefundRequest.new(tender, amount) send_transaction_request(request) end
send_request(request)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 46 def send_request(request) request.validate! raw_response = Faraday.send(request.method, request.url) do |req| req.headers['Authorization'] = auth_header(request) req.headers['User-Agent'] = "Workarea/#{Workarea::VERSION::STRING}" if request.body.present? req.headers['Content-Type'] = 'application/json' req.body = request.body.to_json end end Response.new(request, raw_response) rescue ContinentNotSupported unsupported_continent_response(request) end
send_transaction_request(request)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 64 def send_transaction_request(request) response = send_request(request) ActiveMerchant::Billing::Response.new( response.success?, response.message, response.params ) end
update_session(order, session_id = nil)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 11 def update_session(order, session_id = nil) request = UpdateSessionRequest.new(order, session_id) send_request(request) end
Private Instance Methods
auth_header(request)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 76 def auth_header(request) "Basic #{Base64.encode64([request.username, request.password].join(':'))}" end
unsupported_continent_response(request)
click to toggle source
# File lib/workarea/klarna/gateway.rb, line 80 def unsupported_continent_response(request) OpenStruct.new( success?: false, message: I18n.t( 'workarea.klarna.gateway.unsupported_continent', continent: request.continent ), params: {} ) end