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