Ahmed Ejaz
ac06126f59
replace cvv_response_message usage with redirect_auth_url
2025-09-22 11:55:43 +05:00
cyrillefr
f6df412355
Fixes NamingMethodParameterName rubocop offense
2025-05-05 10:39:15 +02:00
Feruz Oripov
9d919938f3
Group Order && OrderCycle related services and specs
2024-03-16 19:07:08 +05:00
Matt-Yorkley
abd55b2104
Move order to completed whether it's current state is payment or confirmation
2023-06-13 10:14:09 +01:00
Matt-Yorkley
47df9493ae
Fix ProcessPaymentIntent service
2023-06-13 10:14:09 +01:00
Matt-Yorkley
32a2610e7d
Refactor arguments for PaymentIntentValidator
2021-07-09 13:42:41 +01:00
Matt-Yorkley
e5a85caef6
Refactor Stripe::PaymentIntentValidator
...
This makes the interface a lot simpler and moves the fetching of the information it requires inside the service itself.
2021-07-09 13:39:52 +01:00
Andy Brett
a97b5b7c90
rename payment state machine events to be verbs
2021-06-29 11:54:51 -07:00
Andy Brett
9b1da14380
mark payment failed after failed authorization
2021-06-29 11:54:51 -07:00
Andy Brett
aa8067f96b
process payments separately from completing the order
2021-06-29 11:54:48 -07:00
Pau Pérez Fabregat
db993652c4
Merge branch 'master' into payment-states
2021-06-18 12:20:26 +02:00
Andy Brett
b41302d5d8
update state transitions for new requires_authorization state
2021-06-17 14:23:59 -07:00
Andy Brett
dd0375aed4
clear authorization url after failing the payment
2021-06-17 14:23:59 -07:00
Andy Brett
674ca3026b
change states after failure/requiring auth
2021-06-17 14:23:58 -07:00
Andy Brett
a3d9f1f3cc
create requires_authorization payment state and migration
2021-06-17 14:23:58 -07:00
Luis Ramos
23627c5453
Run rubocop -a (safe corrections) removing all exceptions so all possible fixes are applied
...
9290 issues fixed
2021-06-17 22:19:26 +01:00
Matt-Yorkley
794216713a
Ensure payment is processed if order is in completed state
2021-05-16 23:03:07 +01:00
Matt-Yorkley
a2862e604c
Find relevant payment that matches the payment intent, not the last payment
2021-05-16 23:00:31 +01:00
Matt-Yorkley
8429da3d2a
Remove unused argument from ProcessPaymentIntent
2021-05-16 22:19:01 +01:00
Matt-Yorkley
2e63cd8116
Add explanatory comment on payment processing flow
2021-05-16 20:11:45 +01:00
Matt-Yorkley
52e0d84238
Reload in-memory payment before checking it's new state
...
The state should have changed in the database if the payment was processed successfully, and the memoized version here will not know that without a reload.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
5725535715
Fix payment state checking
2021-05-16 20:11:45 +01:00
Matt-Yorkley
fd021d4778
Refactor payment intent status checking and return "ok" if the payment has already been processed successfully in a previous request
...
If the page is reloaded after the payment has already gone through, we can skip the processing and give a non-error response; the payment is already completed and Stripe's response confirms it was successful.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
e686a4f627
Move raising of errors when payment intent state != "requires_capture" out of PaymentIntentValidator service
...
When we're fetching the payment intent via PaymentIntentValidator in StripeSCA#purhcase (to capture it), we want it to fail loudly if it's not in "requires_capture" state. We're now also re-using the same PaymentIntentValidator service to check if payment processing was *successful*, in which case we need it *not* to fail loudly if the state == "succeeded", eg != "requires_capture".
2021-05-16 12:19:04 +01:00
Pau Perez
9a63f38790
I18n-ize error messages.
2021-05-06 16:34:29 +02:00
Pau Perez
69b91ea136
Wait until the end to mark payment as processed
...
This gives us the opportunity to retry the operation in case the
processing fails.
2021-05-06 16:19:01 +02:00
Pau Perez
dea6a01e61
Handle SCA payments that can't complete
2021-05-06 16:19:01 +02:00
Pau Perez
2147584daf
Validate intents against Stripe and display errors
...
Now the existing validation is redundant. It's Stripe's API who does
that now. It's up to them to decide what's a valid intent.
2021-05-06 16:19:01 +02:00
Andy Brett
3b15e0ee15
only complete the payment if it is in a completable state
2021-03-01 18:51:14 -08:00
Andy Brett
77a3649e50
documentation
2021-02-12 13:46:05 -08:00
Andy Brett
cd2b4d2fb2
advance order after processing payment intent
2021-02-12 13:36:04 -08:00
Pau Perez
23b0885f4b
Turn ivars into private attr_readers
...
This makes them more changeable and robust. Ruby will raise
NoMethodError on typos while it'll silently create a new ivar without
us noticing. Also, in my experience, a reader method gives more room to
future refactorings and eases testing because methods are easier to
stub.
2021-02-11 11:04:39 +01:00
Pau Perez
e2853b9afb
Do not load order twice
...
The controller already does so, then, we can pass it to the service and
avoid that extra round-trip to the DB and save some memory. Spree::Order
is a rather bulky object (God object code smell perhaps) and it'll
surely make a difference.
2021-02-11 11:04:21 +01:00
Andy Brett
891874995b
refactor ProcessPaymentIntent to service
2021-02-10 11:22:29 -08:00