Class: FatZebra::Models::Purchase
- Defined in:
- lib/fat_zebra/models/purchase.rb
Class Method Summary collapse
-
.create(amount, card_data, reference, customer_ip, currency = "AUD") ⇒ Response
Performs a purchase transaction against the gateway.
-
.find(options = {}) ⇒ Array<Purchase>
Retrieves purchases specified by the options hash.
Instance Method Summary collapse
-
#refund(amount, reference) ⇒ Object
Refunds the current transaction.
Methods inherited from Base
attribute, #initialize, #inspect, #to_s
Constructor Details
This class inherits a constructor from FatZebra::Models::Base
Class Method Details
.create(amount, card_data, reference, customer_ip, currency = "AUD") ⇒ Response
Performs a purchase transaction against the gateway
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/fat_zebra/models/purchase.rb', line 31 def create(amount, card_data, reference, customer_ip, currency = "AUD") params = { :amount => amount, :card_holder => card_data.delete(:card_holder), :card_number => card_data.delete(:number), :card_expiry => extract_date(card_data.delete(:expiry)), :cvv => card_data.delete(:cvv), :card_token => card_data.delete(:token), :reference => reference, :customer_ip => customer_ip, :currency => currency } params.delete_if {|key, value| value.nil? } # If token is nil, remove, otherwise, remove card values validate_params!(params) response = FatZebra.gateway.make_request(:post, "purchases", params) Response.new(response) end |
.find(options = {}) ⇒ Array<Purchase>
Retrieves purchases specified by the options hash
- from (Date)
- to (Date)
- offset (defaults to 0) - for pagination
- limit (defaults to 10) for pagination
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/fat_zebra/models/purchase.rb', line 61 def find( = {}) id = .delete(:id) .merge!({:offets => 0, :limit => 10}) # Format dates for the request [:from] = [:from].strftime("%Y%m%dT%H%M") if [:from] [:to] = [:to].strftime("%Y%m%dT%H%M") if [:to] if id.nil? response = FatZebra.gateway.make_request(:get, "purchases", ) if response["successful"] purchases = [] response["response"].each do |purchase| purchases << Purchase.new(purchase) end purchases.size == 1 ? purchases.first : purchases else # TODO: This should raise a defined exception raise StandardError, "Unable to query purchases, #{response["errors"].inspect}" end else response = FatZebra.gateway.make_request(:get, "purchases/#{id}.json") if response["successful"] Purchase.new(response["response"]) else raise StandardError, "Unable to query purchases, #{response["errors"].inspect}" end end end |