Sha256: ff0c6982f1b9e2154280f3b068738dd076f127b5c4838c1847423d0e6280e741

Contents?: true

Size: 1.4 KB

Versions: 10

Compression:

Stored size: 1.4 KB

Contents

module Spree
  module SolidusSixSaferpay

    class InitializePayment

      attr_reader :order, :payment_method, :redirect_url, :success

      def self.call(order, payment_method)
        new(order, payment_method).call
      end

      def initialize(order, payment_method)
        @order = order
        @payment_method = payment_method
        @success = false
      end

      def call
        gateway_response = gateway.initialize_payment(order, payment_method)

        if gateway_response.success?

          saferpay_payment = build_saferpay_payment(gateway_response.api_response)

          @redirect_url = saferpay_payment.redirect_url
          @success = saferpay_payment.save!
        end

        self
      end

      def success?
        @success
      end

      def gateway
        raise NotImplementedError, "Must be implemented in InitializePaymentPage or InitializeTransaction by including UsePaymentPageGateway or UseTransactionGateway"
      end

      private

      def build_saferpay_payment(api_response)
        Spree::SixSaferpayPayment.new(saferpay_payment_attributes(api_response))
      end

      def saferpay_payment_attributes(api_response)
        {
          order: order,
          payment_method: payment_method,
          token: api_response.token,
          expiration: DateTime.parse(api_response.expiration),
          response_hash: api_response.to_h
        }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
solidus_six_saferpay-0.1.8.1 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.2.0 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.8 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.7 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.5 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.4 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.3 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.2 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.1 app/services/spree/solidus_six_saferpay/initialize_payment.rb
solidus_six_saferpay-0.1.0 app/services/spree/solidus_six_saferpay/initialize_payment.rb