class ActiveMerchant::Billing::FirstGivingGateway
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
ActiveMerchant::Billing::Gateway::new
# File lib/active_merchant/billing/gateways/first_giving.rb, line 15 def initialize(options = {}) requires!(options, :application_key, :security_token, :charity_id) super end
Public Instance Methods
purchase(money, creditcard, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 20 def purchase(money, creditcard, options = {}) post = {} add_invoice(post, options) add_creditcard(post, creditcard) add_address(post, options) add_customer_data(post, options) add_donation_data(post, money, options) commit('/donation/creditcard', post) end
refund(money, identifier, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 30 def refund(money, identifier, options = {}) get = {} get[:transactionId] = identifier get[:tranType] = 'REFUNDREQUEST' commit("/transaction/refundrequest?" + encode(get)) end
Private Instance Methods
add_address(post, options)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 51 def add_address(post, options) if(billing_address = (options[:billing_address] || options[:address])) post[:billToAddressLine1] = billing_address[:address1] post[:billToCity] = billing_address[:city] post[:billToState] = billing_address[:state] post[:billToZip] = billing_address[:zip] post[:billToCountry] = billing_address[:country] end end
add_creditcard(post, creditcard)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 65 def add_creditcard(post, creditcard) post[:billToFirstName] = creditcard.first_name post[:billToLastName] = creditcard.last_name post[:ccNumber] = creditcard.number post[:ccType] = creditcard_brand(creditcard.brand) post[:ccExpDateMonth] = creditcard.month post[:ccExpDateYear] = creditcard.year post[:ccCardValidationNum] = creditcard.verification_value end
add_customer_data(post, options)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 46 def add_customer_data(post, options) post[:billToEmail] = (options[:email] || "activemerchant@example.com") post[:remoteAddr] = (options[:ip] || "127.0.0.1") end
add_donation_data(post, money, options)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 39 def add_donation_data(post, money, options) post[:amount] = amount(money) post[:charityId] = @options[:charity_id] post[:description] = (options[:description] || "Purchase") post[:currencyCode] = (options[:currency] || currency(money)) end
add_invoice(post, options)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 61 def add_invoice(post, options) post[:orderId] = options[:order_id] end
commit(action, post=nil)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 92 def commit(action, post=nil) url = (test? ? self.test_url : self.live_url) + action begin if post response = parse(ssl_post(url, post_data(post), headers)) else response = parse(ssl_get(url, headers)) end rescue ResponseError => e response = parse(e.response.body) end Response.new( (response["acknowledgement"] == "Success"), (response["friendlyErrorMessage"] || response["verboseErrorMessage"] || response["acknowledgement"]), response, authorization: response["transactionId"], test: test?, ) end
creditcard_brand(brand)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 122 def creditcard_brand(brand) case brand when "visa" then "VI" when "master" then "MC" when "discover" then "DI" when "american_express" then "AX" else raise "Unhandled credit card brand #{brand}" end end
encode(hash)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 118 def encode(hash) hash.collect{|(k,v)| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"}.join('&') end
headers()
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 133 def headers { "User-Agent" => "ActiveMerchantBindings/#{ActiveMerchant::VERSION}", "JG_APPLICATIONKEY" => "#{@options[:application_key]}", "JG_SECURITYTOKEN" => "#{@options[:security_token]}" } end
parse(body)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 75 def parse(body) response = {} xml = Nokogiri::XML(body) element = xml.xpath("//firstGivingDonationApi/firstGivingResponse").first element.attributes.each do |name, attribute| response[name] = attribute.content end element.children.each do |child| next if child.text? response[child.name] = child.text end response end
post_data(post)
click to toggle source
# File lib/active_merchant/billing/gateways/first_giving.rb, line 114 def post_data(post) post.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&") end