lib/active_merchant/billing/gateways/beanstream_interac.rb
require 'active_merchant/billing/gateways/beanstream/beanstream_core'
module ActiveMerchant #:nodoc:
module Billing #:nodoc:
class BeanstreamInteracResponse < Response
def redirect
params['pageContents']
end
end
class BeanstreamInteracGateway < Gateway
include BeanstreamCore
# Confirm a transaction posted back from the bank to Beanstream.
# Confirming a transaction does not require any credentials,
# and in an application with many merchants sharing a funded
# URL the application may not yet know which merchant the
# post back is for until the response of the confirmation is
# received, which contains the order number.
def self.confirm(transaction)
gateway = new(login: '')
gateway.confirm(transaction)
end
def purchase(money, options = {})
post = {}
add_amount(post, money)
add_invoice(post, options)
add_address(post, options)
add_interac_details(post, options)
add_transaction_type(post, :purchase)
commit(post)
end
def success?(response)
response[:responseType] == 'R' || response[:trnApproved] == '1' || response[:responseCode] == '1'
end
# Confirm a transaction posted back from the bank to Beanstream.
def confirm(transaction)
post(transaction)
end
private
def add_interac_details(post, options)
address = options[:billing_address] || options[:address] || {}
post[:trnCardOwner] = address[:name]
post[:paymentMethod] = 'IO'
end
def build_response(*args)
BeanstreamInteracResponse.new(*args)
end
end
end
end