Sha256: b4cd14d1e27ec348cc54c20217268e9262572b0ce118833afc576f86369ee5a5

Contents?: true

Size: 1.46 KB

Versions: 18

Compression:

Stored size: 1.46 KB

Contents

module Spree
  class MollieController < BaseController
    skip_before_action :verify_authenticity_token, :only => [:update_payment_status]

    # When the user is redirected from Mollie back to the shop, we can check the
    # mollie transaction status and set the Spree order state accordingly.
    def validate_payment
      order_number, payment_number = split_payment_identifier params[:order_number]
      payment = Spree::Payment.find_by_number payment_number
      order = Spree::Order.find_by_number order_number
      mollie = Spree::PaymentMethod.find_by_type 'Spree::Gateway::MollieGateway'
      mollie.update_payment_status payment

      MollieLogger.debug("Redirect URL visited for order #{params[:order_number]}")

      redirect_to order.reload.paid? ? order_path(order) : checkout_state_path(:payment)
    end

    # Mollie might send us information about a transaction through the webhook.
    # We should update the payment state accordingly.
    def update_payment_status
      MollieLogger.debug("Webhook called for payment #{params[:id]}")

      payment = Spree::MolliePaymentSource.find_by_payment_id(params[:id]).payments.first
      mollie = Spree::PaymentMethod.find_by_type 'Spree::Gateway::MollieGateway'
      mollie.update_payment_status payment

      head :ok
    end

    private

    # Payment identifier is a combination of order_number and payment_id.
    def split_payment_identifier(payment_identifier)
      payment_identifier.split '-'
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
spree_mollie_gateway-2.1.5 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.4 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.4.pre.alpha app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.3 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.2 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.1 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.1.pre.beta app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.1.0 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-2.0.0 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.7 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.6 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.5 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.4 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.3 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.2 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.0 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.0.pre.beta4 app/controllers/spree/mollie_controller.rb
spree_mollie_gateway-1.0.0.pre.beta3 app/controllers/spree/mollie_controller.rb