lib/pensio_api/transaction.rb in pensio_api-0.2.3 vs lib/pensio_api/transaction.rb in pensio_api-0.3.0

- old
+ new

@@ -13,10 +13,11 @@ attr_reader :card_token attr_reader :card_masked_pan attr_reader :order_id attr_reader :merchant_currency attr_reader :card_holder_currency + attr_reader :chargeback_events # constants for transaction statuses STATUS_RECURRING_CONFIRMED = 'recurring_confirmed' STATUS_RELEASED = 'released' STATUS_CAPTURED = 'captured' @@ -41,10 +42,12 @@ @order_id = @raw['ShopOrderId'] @merchant_currency = @raw['MerchantCurrency'].to_i @card_holder_currency = @raw['CardHolderCurrency'].to_i + + map_chargeback_events end def self.find(options={}) request = Request.new('/merchant/API/payments', options) Responses::Transaction.new(request) @@ -76,9 +79,27 @@ end def billing_address @billing_address ||= if @raw.has_key?('CustomerInfo') && @raw['CustomerInfo'].has_key?('BillingAddress') BillingAddress.new(@raw['CustomerInfo']['BillingAddress']) + end + end + + private + + def map_chargeback_events + @chargeback_events = if raw_chargeback_events.is_a?(Array) + raw_chargeback_events.map { |c| PensioAPI::ChargebackEvent.new(c) } + else + [PensioAPI::ChargebackEvent.new(raw_chargeback_events)] + end + end + + def raw_chargeback_events + @raw_chargeback_events ||= if @raw['ChargebackEvents'] + @raw['ChargebackEvents']['ChargebackEvent'] + else + [] end end end end