class PaymentRecipes::PayPal::SOAP::Action::PerformDirectPayment

Public Instance Methods

load_transaction() click to toggle source
# File lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb, line 53
def load_transaction
  store(:transaction) do
    ::PaymentRecipes::PayPal::SOAP::Transaction.find(response.transaction_id)
  end
end
modify_details() click to toggle source
# File lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb, line 27
def modify_details
  unless [:sale, :authorize].include?(intent)
    raise Exception, "Allowed values for intent: :sale, :authorize"
  end

  store(:direct_payment_details) do
    payment_action = if intent == :sale
                       'Sale'
                     elsif intent == :authorize
                       'Authorization'
                     end

    details[:DoDirectPaymentRequestDetails][:PaymentAction] = payment_action

    details
  end
end
perform() click to toggle source
# File lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb, line 9
def perform
  prepare_soap_api
  modify_details
  perform_request

  if response.success?
    load_transaction
  end

  response
end
perform_request() click to toggle source
# File lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb, line 45
def perform_request
  do_direct_payment = api.build_do_direct_payment(direct_payment_details)

  store(:response) do
    api.do_direct_payment(do_direct_payment)
  end
end
prepare_soap_api() click to toggle source
# File lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb, line 21
def prepare_soap_api
  store(:api) do
    ::PaymentRecipes::PayPal::SOAP::Settings.api
  end
end