Sha256: 23d9f37abf6e1ff9156eb913b35beced2aca7a854c6108d9204a7f4000a7036e
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
# frozen_string_literal: true module SolidusStripe class IntentsController < Spree::BaseController include Spree::Core::ControllerHelpers::Order def create_intent @intent = create_payment_intent generate_payment_response end def create_payment create_payment_service = SolidusStripe::CreateIntentsPaymentService.new( params[:stripe_payment_intent_id], stripe, self ) if create_payment_service.call render json: { success: true } else render json: { error: "Could not create payment" }, status: :internal_server_error end end private def stripe @stripe ||= Spree::PaymentMethod::StripeCreditCard.find(params[:spree_payment_method_id]) end def generate_payment_response response = @intent.params # Note that if your API version is before 2019-02-11, 'requires_action' # appears as 'requires_source_action'. if %w[requires_source_action requires_action].include?(response['status']) && response['next_action']['type'] == 'use_stripe_sdk' render json: { requires_action: true, stripe_payment_intent_client_secret: response['client_secret'] } elsif response['status'] == 'requires_capture' render json: { success: true, requires_capture: true, stripe_payment_intent_id: response['id'] } else render json: { error: response['error']['message'] }, status: :internal_server_error end end def create_payment_intent stripe.create_intent( (current_order.total * 100).to_i, params[:stripe_payment_method_id], description: "Solidus Order ID: #{current_order.number} (pending)", currency: current_order.currency, confirmation_method: 'automatic', capture_method: 'manual', confirm: true, setup_future_usage: 'off_session', metadata: { order_id: current_order.id } ) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
solidus_stripe-4.4.1 | app/controllers/solidus_stripe/intents_controller.rb |
solidus_stripe-4.4.0 | app/controllers/solidus_stripe/intents_controller.rb |