module OffsitePayments::Integrations::Klarna

Constants

REQUIRED_FIELDS

Public Class Methods

cart_items_payload(fields, cart_items) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 17
def self.cart_items_payload(fields, cart_items)
  check_required_fields!(fields)

  payload = ""
  REQUIRED_FIELDS.sort.each do |field|
     payload << fields[field].to_s
  end

  payload
end
check_required_fields!(fields) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 40
def self.check_required_fields!(fields)
  REQUIRED_FIELDS.each do |required_field|
    raise ArgumentError, "Missing required field #{required_field}" if fields[required_field].nil?
  end
end
digest(payload, shared_secret) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 34
def self.digest(payload, shared_secret)
  Digest::SHA256.base64digest(payload + shared_secret.to_s)
end
notification(post_body, options = {}) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 9
def self.notification(post_body, options = {})
  Notification.new(post_body, options)
end
return(query_string, options = {}) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 13
def self.return(query_string, options = {})
  Return.new(query_string, options)
end
sign(fields, cart_items, shared_secret) click to toggle source
# File lib/offsite_payments/integrations/klarna.rb, line 28
def self.sign(fields, cart_items, shared_secret)
  payload = cart_items_payload(fields, cart_items)

  digest(payload, shared_secret)
end