diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index d16e428922..91fa765b1e 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -144,6 +144,10 @@ module Spree I18n.t('payment_method_fee') end + def mark_as_processed + update_attribute(:cvv_response_message, nil) + end + private # Don't charge fees for invalid or failed payments. diff --git a/app/services/process_payment_intent.rb b/app/services/process_payment_intent.rb index 90d41fd3e0..86dd0b08c4 100644 --- a/app/services/process_payment_intent.rb +++ b/app/services/process_payment_intent.rb @@ -33,12 +33,12 @@ class ProcessPaymentIntent validate_intent! return Result.new(ok: false) unless valid? - mark_as_processed - OrderWorkflow.new(order).next if last_payment.can_complete? last_payment.complete! + last_payment.mark_as_processed + Result.new(ok: true) else Result.new(ok: false, error: "The payment could not be completed") @@ -64,10 +64,6 @@ class ProcessPaymentIntent last_payment&.state == "pending" && last_payment&.response_code == payment_intent end - def mark_as_processed - last_payment.update_attribute(:cvv_response_message, nil) - end - def stripe_account_id StripeAccount.find_by(enterprise_id: preferred_enterprise_id).stripe_user_id end diff --git a/spec/models/spree/payment_spec.rb b/spec/models/spree/payment_spec.rb index 03eb892b53..635578ba68 100644 --- a/spec/models/spree/payment_spec.rb +++ b/spec/models/spree/payment_spec.rb @@ -926,4 +926,13 @@ describe Spree::Payment do end end end + + describe "#mark_as_processed" do + let(:payment) { create(:payment, cvv_response_message: "message") } + + it "removes the cvv_response_message" do + payment.mark_as_processed + expect(payment.cvv_response_message).to eq(nil) + end + end end