Sha256: 8c1d27a8b8c5bdad3f8a4767fae2e4ce928ae0705d7041ff951db4f8f66fbfc4
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
module Spree class Order < Spree::Base module Payments # processes any pending payments and must return a boolean as it's # return value is used by the checkout state_machine to determine # success or failure of the 'complete' event for the order # # Returns: # # - true if all pending payments processed successfully # # - true if a payment failed, ie. raised a GatewayError # which gets rescued and converted to TRUE when # :allow_checkout_gateway_error is set to true # # - false if a payment failed, ie. raised a GatewayError # which gets rescued and converted to FALSE when # :allow_checkout_on_gateway_error is set to false # def process_payments! process_payments_with(:process!) end def authorize_payments! process_payments_with(:authorize!) end def capture_payments! process_payments_with(:purchase!) end def unprocessed_payments payments.select(&:checkout?) end private def process_payments_with(method) # Don't run if there is nothing to pay. return true if payment_total >= total unprocessed_payments.each do |payment| break if payment_total >= total payment.public_send(method) if payment.completed? self.payment_total += payment.amount end end rescue Core::GatewayError => e result = !!Spree::Config[:allow_checkout_on_gateway_error] errors.add(:base, e.message) && (return result) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
solidus_core-2.0.0.beta1 | app/models/spree/order/payments.rb |
solidus_core-1.4.0.beta1 | app/models/spree/order/payments.rb |