class PaymentRecipes::PayPal::SOAP::Transaction

Attributes

correlation_id[R]
fee_amount[R]
gross_amount[R]
id[R]
parent_transaction_id[R]
payment_date[R]
payment_item_amount[R]
payment_status[R]
payment_type[R]
pending_reason[R]
raw_transaction[R]
tax_amount[R]
timestamp[R]
transaction_type[R]

Public Class Methods

find(id) click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 87
def find(id)
  paypal_transaction = find_raw(id)

  if paypal_transaction
    new(paypal_transaction, id: id)
  else
    nil
  end
end
find_raw(id) click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 97
def find_raw(id)
  api = ::PaymentRecipes::PayPal::SOAP::Settings.api

  begin
    get_transaction_details = api.build_get_transaction_details({
      :TransactionID => id })

    response = api.get_transaction_details(get_transaction_details)

    response

  rescue Exception
    nil
  end
end
new(paypal_transaction, id: nil) click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 27
def initialize(paypal_transaction, id: nil)
  unless paypal_transaction.is_a?(::PayPal::SDK::Merchant::DataTypes::GetTransactionDetailsResponseType)
    raise Exception, "#{ self.class.name } must be initialized with a PayPal Transaction" 
  end

  extract_and_store(paypal_transaction)
end

Public Instance Methods

complete?() click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 66
def complete?
  @payment_status == "Completed"
end
extract_and_store(paypal_transaction) click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 35
def extract_and_store(paypal_transaction)
  @raw_transaction = paypal_transaction

  @id = id || paypal_transaction.payment_transaction_details.payment_info.transaction_id
  @correlation_id = paypal_transaction.correlation_id
  @timestamp = paypal_transaction.timestamp.to_time

  @transaction_type = paypal_transaction.payment_transaction_details.payment_info.transaction_type.to_s
  @payment_type = paypal_transaction.payment_transaction_details.payment_info.payment_type.to_s
  @payment_status = paypal_transaction.payment_transaction_details.payment_info.payment_status.to_s
  @pending_reason = paypal_transaction.payment_transaction_details.payment_info.pending_reason.to_s
  @parent_transaction_id = paypal_transaction.payment_transaction_details.payment_info.parent_transaction_id.to_s
  @payment_date = paypal_transaction.payment_transaction_details.payment_info.payment_date.to_time

  paypal_gross_amount = paypal_transaction.payment_transaction_details.payment_info.gross_amount
  @gross_amount = convert_to_money(amount: paypal_gross_amount.value, currency: paypal_gross_amount.currencyID)

  paypal_fee_amount = paypal_transaction.payment_transaction_details.payment_info.fee_amount
  @fee_amount = convert_to_money(amount: paypal_fee_amount.value, currency: paypal_fee_amount.currencyID)

  paypal_tax_amount = paypal_transaction.payment_transaction_details.payment_info.tax_amount
  @tax_amount = convert_to_money(amount: paypal_tax_amount.value, currency: paypal_tax_amount.currencyID)

  payment_item_amount = paypal_transaction.payment_transaction_details.payment_item_info.payment_item.first.amount
  @payment_item_amount = convert_to_money(amount: payment_item_amount.value, currency: payment_item_amount.currencyID)
end
inspect() click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 70
def inspect
  to_str
end
pending?() click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 62
def pending?
  @payment_status == "Pending"
end
to_s() click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 74
def to_s
  to_str
end
to_str() click to toggle source
# File lib/payment_recipes/paypal/soap/transaction.rb, line 78
def to_str
  if pending?
    "<#{ self.class.name } type=#{ @transaction_type } payment_type=#{ @payment_type } payment_status=#{ @payment_status } [#{ @pending_reason }] id=#{ @id }>"
  else
    "<#{ self.class.name } type=#{ @transaction_type } payment_type=#{ @payment_type } payment_status=#{ @payment_status } id=#{ @id }>"
  end
end