Commit Graph

3832 Commits

Author SHA1 Message Date
Matt-Yorkley
1b459b2491 Extract #processing_failed 2022-01-14 19:41:08 +00:00
Matt-Yorkley
c1defdb1ff Extract #order_processing_error 2022-01-14 19:41:08 +00:00
Matt-Yorkley
5c44614a8d Extract and standardise payment/checkout #processing_succeeded 2022-01-14 19:41:08 +00:00
Matt-Yorkley
96f30133a7 Don't reset order for split checkout
The various places where we "reset" an order to cart state if a checkout submission does not succeed are an artifact of the process-all-the-steps-at-once approach of the current checkout.
2022-01-14 19:41:08 +00:00
Matt-Yorkley
1e21a6a32f Extract and standardise use of #handle_insufficient_stock 2022-01-14 19:41:08 +00:00
Matt-Yorkley
b6cf6483f2 Extract and standardise use of order loading around checkout processing 2022-01-14 19:41:08 +00:00
Matt-Yorkley
4d6c4f850f Remove pointless callbacks in CheckoutController
These exact same checks are already made in #load_order (and #order_invalid_for_checkout?), which is called before these other two (later) callbacks.
2022-01-14 19:41:08 +00:00
Matt-Yorkley
77d89ec7d0 Extract and standardise use of #order_completion_route 2022-01-14 19:41:08 +00:00
Matt-Yorkley
4c1fc2b326 Standardise use of #order_completion_reset 2022-01-14 19:41:08 +00:00
Matt-Yorkley
124b63fad0 Remove unused flash assignment 2022-01-14 19:41:08 +00:00
Matt-Yorkley
01bd77e437 Remove duplicate translation key 2022-01-14 19:41:08 +00:00
Matt-Yorkley
e58b1b1094 Tidy up before and after callbacks 2022-01-14 19:41:08 +00:00
Matt-Yorkley
9b6d4da8d5 Pull related lines into OrderCompletion#order_completion_reset 2022-01-14 19:41:08 +00:00
Matt-Yorkley
02995530e2 Pull apart OrderCompletionReset service 2022-01-14 19:41:08 +00:00
Matt-Yorkley
67b8a55273 Separate OrderCompletionReset from Checkout::PostCheckoutActions and don't pass controller objects to Checkout::PostCheckoutActions
We need to separate some of these bits to make them easier to call in different contexts. Also there's some weird stuff happening here with the controller being passed in to the service, and it seems like a code smell to me...
2022-01-14 19:41:08 +00:00
Matt-Yorkley
ad60f2392a Delete unused return statement 2022-01-14 19:41:08 +00:00
Matt-Yorkley
06eb98bdf4 Extract #valid_order_line_items? 2022-01-14 19:41:08 +00:00
Matt-Yorkley
1d4803c31a Whitelist valid step param values 2022-01-13 13:55:33 +00:00
Matt-Yorkley
18cdf98aa1 Set terms and conditions accepted when completing checkout 2022-01-12 22:17:22 +00:00
Matt-Yorkley
f2c506a292 Update and extract summary_step? check 2022-01-12 22:17:22 +00:00
Jean-Baptiste Bellet
36db396fe5 Do not redirect if user is logged in 2022-01-10 10:02:08 +01:00
Jean-Baptiste Bellet
9a74934f79 Do not redirect to /guest if step is specified 2022-01-10 09:40:16 +01:00
Jean-Baptiste Bellet
b1524aa0bd Guard clause: redirect to /guest when POST
When there is no connected user, and when the distributor doesn't allow guest orders, redirect on POST method
2022-01-10 09:39:46 +01:00
Jean-Baptiste Bellet
f2c3a380ac Redirect to /guest if distributor doesn't allow guest order 2022-01-10 09:39:46 +01:00
Jean-Baptiste Bellet
2929b6278d Redirect to /guest if no step required and no current connected user 2022-01-10 09:39:45 +01:00
Matt-Yorkley
99b75c9a6a Adjust usage of remote-method links on credit card deletion 2022-01-08 16:54:23 +00:00
Matt-Yorkley
3ad17aedd4 Merge pull request #8634 from Matt-Yorkley/order-tokens
Clarify use of order tokens
2022-01-04 13:05:41 +00:00
Filipe
13d04c367d Merge pull request #8636 from Matt-Yorkley/stripe-auth-emails
Stripe auth email sending; quick tidy up
2022-01-04 11:01:47 +00:00
Filipe
750411fd15 Merge pull request #8592 from openfoodfoundation/gateway-redirects
Refactor payment gateway redirects handling
2021-12-23 21:35:45 +00:00
Filipe
20c0195584 Merge pull request #8017 from cillian/hide-variants-with-no-stock
When creating backoffice orders hide variants with no stock by default
2021-12-23 21:34:06 +00:00
Filipe
b256696544 Merge pull request #8549 from mkllnk/deprecate-stripe-connect
Hide old "Stripe" (StripeConnect) payment method type, keep new Stripe SCA
2021-12-23 21:33:42 +00:00
Matt-Yorkley
f0d54dd083 Tidy up #redirect_to_payment_gateway 2021-12-22 09:58:08 +00:00
Matt-Yorkley
8016e90e07 Ensure payment method is actually selected 2021-12-20 18:47:22 +00:00
Maikel Linke
6d1e984af7 Enable testers to activate StripeConnect
This will make it easier to test the removal of StripeConnect.
2021-12-20 17:16:39 +11:00
Maikel Linke
470fc92825 Fix old, confusing typo 2021-12-20 17:13:40 +11:00
Maikel Linke
22de357724 Hide deprecated StripeConnect payment gateway
StripeConnect has been replaced by StripeSCA but some people still use
the old StripeConnect. Let's prevent people from creating deprecated
payment methods before migrating existing data.
2021-12-20 17:12:19 +11:00
Maikel Linke
6966dea0f5 Extract changing Stripe method selection logic
It will change and it's clearer in a separate method.
2021-12-20 17:09:57 +11:00
Cillian O'Ruanaidh
401cc19532 Fix Rubocop LineTooLong violation in spree/admin/variants_controller 2021-12-17 15:40:51 +00:00
Matt-Yorkley
542e3ad1aa Reuse StripeScaPaymentAuthorize in Admin::PaymentsController 2021-12-16 20:42:19 +00:00
Matt-Yorkley
fb2c0a253b Remove reference to params[:token] in Admin::Orders::CustomerDetailsController
params[:token] and session[:access_token] are only really used in the context of guest users in the customer-facing parts of the app. Here the user should be fully authenticated already to view the page. There aren't any URL that point at this controller which append a token to the params.
2021-12-16 14:02:50 +00:00
Matt-Yorkley
ec3dadfe68 Remove reference to params[:token] in PaymentsController
There seemingly shouldn't be any case where this controller actually receives a token param. There's only one place that creates urls that direct to this controller (Stripe authorization emails), and they do not attach any kind of token to the URL.

If the user is not logged in here (or doesn't have an access_token in their session), they get asked to log in.

Note to future devs: see previous commit for additional context.
2021-12-16 13:41:04 +00:00
Matt-Yorkley
9f49a84e7f Clarify use of access tokens used for viewing order details as a guest user
There are 4 or 5 different places in the app where we reference a :token and params[:token] for completely different purposes (they're not even vaguely the *same* token).

This is an attempt to clarify the places in the app where we use params[:token] in relation to *orders*, for allowing guest users (who are not logged in) to view details of an order they have placed (like after checkout completion), and differentiate it from the various other places where params[:token] can actually be used for something entirely different!
2021-12-16 13:35:55 +00:00
Matt-Yorkley
b77ff346a3 Replace #raise with #return in Checkout::StripeRedirect
The (potential) unhappy code path here was raising an error which would not be explicitly handled, and would in theory not return a useful message / response.
2021-12-15 21:20:58 +00:00
Matt-Yorkley
0fc4b851f2 Refactor payment gateway redirects handling
The checkout was holding a lot of responsibility for knowing which kinds of payment gateways are available and how to initiate the process of redirecting to the external payment page (if needed). This was being hidden somewhat by the way the logic was tucked away in services.

PaymentMethod objects now know whether or not they require an external payment process, and know how that process should be started and how to build the required URL.

So we can now *ask* any payment method if it requires external payment processing or not, and *tell* it to start the process and return the relevant URL (if needed).
2021-12-15 21:20:58 +00:00
Filipe
f6385215d3 Merge pull request #8568 from Matt-Yorkley/paypal-controller
Move paypal controller
2021-12-15 18:12:27 +00:00
Filipe
c4f4d67fc0 Merge pull request #8503 from jibees/split-checkout-payment-forms
Split checkout payment forms
2021-12-15 12:57:03 +00:00
Matt-Yorkley
6d2521bf5f Remove Spree.user_class
This construct was previously used in Spree to switch out the user class with a dummy class during certain tests. We don't use this any more, so it's just mess.

🔥
2021-12-10 18:18:20 +00:00
Matt-Yorkley
f101b06226 Update all references to paypal routes 2021-12-10 11:46:53 +00:00
Matt-Yorkley
0d620aac94 Move paypal_controller out of spree namespace 2021-12-10 11:46:52 +00:00
Jean-Baptiste Bellet
a80818d2b6 Fix rubocop warning
Extra empty line detected at module body end.
2021-12-09 11:30:57 +01:00