class Sofort::Client

Public Class Methods

new() click to toggle source
# File lib/sofort/client.rb, line 11
def initialize
  @options = {}
  @options[:basic_auth] = {
    username: Sofort.user_id,
    password: Sofort.api_key
  }
  @options[:headers] = {
    'Accept' => 'application/xml',
    'Content-Type' => 'application/xml'
  }
end

Public Instance Methods

details(token) click to toggle source
# File lib/sofort/client.rb, line 30
def details(token)
  xml = details_xml(token)
  results = self.class.post(Sofort.base_url, @options.merge(body: xml))
  transactions = results['transactions']
  if transactions && transactions['transaction_details']
    transactions['transaction_details']
  else
    results
  end
end
details_xml(token) click to toggle source
# File lib/sofort/client.rb, line 41
    def details_xml(token)
      <<-eos
      <transaction_request version="2">
      <transaction>#{token}</transaction>
      </transaction_request>
      eos
    end
pay(amount, name, *args) click to toggle source
# File lib/sofort/client.rb, line 23
def pay(amount, name, *args)
  opts = args.extract_options!.symbolize_keys!
  xml = pay_xml(amount, name, opts)
  results = self.class.post(Sofort.base_url,  @options.merge(body: xml))
  results['new_transaction'].present? ? results['new_transaction'] : results
end
pay_xml(amount, name, opts) click to toggle source
# File lib/sofort/client.rb, line 49
def pay_xml(amount, name, opts)
  reason = opts['reason'] || Sofort.reason
  currency_code = opts['currency_code'] || Sofort.currency_code
  country_code = opts['country_code'] ||  Sofort.country_code
  success_url = opts['success_url'] ||  Sofort.success_url
  abort_url = opts['abort_url'] ||  Sofort.abort_url

  {
    amount: amount,
    currency_code: currency_code,
    reasons: {
      reason: reason
    },
    sender: {
      holder: name,
      country_code: country_code
    },
    email_customer: Sofort.email_customer,
    notification_emails: {
      notification_email: Sofort.notification_email
    },
    success_url: success_url,
    abort_url: abort_url,
    su: '',
    project_id: Sofort.project_id
  }.to_xml(root: 'multipay', skip_types: true, dasherize: false)
  
end