Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Handle orders that do not require payment methods without errors #5720

Merged
merged 1 commit into from
Feb 7, 2022

Conversation

mikejolley
Copy link
Member

@mikejolley mikejolley commented Feb 4, 2022

When an order does not require payment, the client does not send a payment method ID. Because this parameter was required in the API, it broke the request. To fix this we can make the property optional.

After fixing this, the validation failed because the provided payment method was blank, which resulted in an error message being thrown. To fix this we only validate payment method if payment is required.

Fixes #5713

Testing

Automated Tests

  • Changes in this PR are covered by Automated Tests.
    • Unit tests
    • E2E tests

Manual Testing

How to test the changes in this Pull Request:

  1. Create a coupon for 100% of the order total.
  2. Add items to cart.
  3. Apply the coupon. The order total should be 0 and the payment section hidden during checkout.
  4. Place the order. Confirm it goes through without errors.

Changelog

Fixed an issue where orders would break if they did not require a payment

@mikejolley mikejolley self-assigned this Feb 4, 2022
@mikejolley mikejolley added focus: rest api Work impacting REST api routes. block: checkout Issues related to the checkout block. labels Feb 4, 2022
@rubikuserbot rubikuserbot requested review from a team and opr and removed request for a team February 4, 2022 14:14
@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2022

Size Change: 0 B

Total Size: 812 kB

ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 6.22 kB
build/active-filters.js 6.9 kB
build/all-products-frontend.js 18.6 kB
build/all-products.js 33.7 kB
build/all-reviews.js 8.08 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---8f355022.js 238 B
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.67 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.48 kB
build/atomic-block-components/add-to-cart-frontend.js 6.9 kB
build/atomic-block-components/add-to-cart.js 6.46 kB
build/atomic-block-components/button-frontend.js 1.48 kB
build/atomic-block-components/button.js 852 B
build/atomic-block-components/category-list-frontend.js 458 B
build/atomic-block-components/category-list.js 459 B
build/atomic-block-components/image-frontend.js 1.37 kB
build/atomic-block-components/image.js 1.05 kB
build/atomic-block-components/price-frontend.js 1.74 kB
build/atomic-block-components/price.js 1.69 kB
build/atomic-block-components/rating-frontend.js 698 B
build/atomic-block-components/rating.js 700 B
build/atomic-block-components/sale-badge-frontend.js 624 B
build/atomic-block-components/sale-badge.js 622 B
build/atomic-block-components/sku-frontend.js 386 B
build/atomic-block-components/sku.js 385 B
build/atomic-block-components/stock-indicator--atomic-block-components/summary--atomic-block-components/title.js 465 B
build/atomic-block-components/stock-indicator-frontend.js 942 B
build/atomic-block-components/stock-indicator.js 625 B
build/atomic-block-components/summary-frontend.js 1.24 kB
build/atomic-block-components/summary.js 926 B
build/atomic-block-components/tag-list-frontend.js 458 B
build/atomic-block-components/tag-list.js 459 B
build/atomic-block-components/title-frontend.js 1.21 kB
build/atomic-block-components/title.js 934 B
build/attribute-filter-frontend.js 16.8 kB
build/attribute-filter.js 13 kB
build/blocks-checkout.js 17.6 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.14 kB
build/cart-blocks/checkout-button-frontend.js 1.14 kB
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/express-payment-frontend.js 5.18 kB
build/cart-blocks/filled-cart-frontend.js 767 B
build/cart-blocks/items-frontend.js 298 B
build/cart-blocks/line-items-frontend.js 5.5 kB
build/cart-blocks/order-summary-frontend.js 8.95 kB
build/cart-blocks/totals-frontend.js 321 B
build/cart-frontend.js 45.5 kB
build/cart.js 43.7 kB
build/checkout-blocks/actions-frontend.js 1.39 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.23 kB
build/checkout-blocks/billing-address-frontend.js 887 B
build/checkout-blocks/contact-information-frontend.js 2.94 kB
build/checkout-blocks/express-payment-frontend.js 5.47 kB
build/checkout-blocks/fields-frontend.js 343 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-frontend.js 11.4 kB
build/checkout-blocks/payment-frontend.js 7.72 kB
build/checkout-blocks/shipping-address-frontend.js 974 B
build/checkout-blocks/shipping-methods-frontend.js 4.93 kB
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 323 B
build/checkout-frontend.js 47.5 kB
build/checkout.js 45.2 kB
build/featured-category.js 8.51 kB
build/featured-product.js 9.62 kB
build/handpicked-products.js 7.09 kB
build/legacy-template.js 2.19 kB
build/mini-cart-component-frontend.js 14.2 kB
build/mini-cart-contents.js 3.82 kB
build/mini-cart-frontend.js 1.76 kB
build/mini-cart.js 6.39 kB
build/price-filter-frontend.js 12.6 kB
build/price-filter.js 8.48 kB
build/price-format.js 1.18 kB
build/product-best-sellers.js 7.36 kB
build/product-categories.js 3.17 kB
build/product-category.js 8.49 kB
build/product-new.js 7.66 kB
build/product-on-sale.js 7.98 kB
build/product-search.js 2.18 kB
build/product-tag.js 7.81 kB
build/product-top-rated.js 7.9 kB
build/products-by-attribute.js 8.38 kB
build/reviews-by-category.js 11.5 kB
build/reviews-by-product.js 12.6 kB
build/reviews-frontend.js 7.37 kB
build/single-product-frontend.js 22.1 kB
build/single-product.js 10 kB
build/stock-filter-frontend.js 6.83 kB
build/stock-filter.js 6.55 kB
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 7.51 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--8a3571de-frontend.js 5.71 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.74 kB
build/wc-blocks-data.js 8.84 kB
build/wc-blocks-editor-style-rtl.css 4.79 kB
build/wc-blocks-editor-style.css 4.79 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 949 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 21.9 kB
build/wc-blocks-style.css 21.9 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 69.7 kB
build/wc-blocks.js 2.62 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.61 kB

compressed-size-action

@senadir
Copy link
Member

senadir commented Feb 7, 2022

I feel like we fixed this before 🤔

@mikejolley
Copy link
Member Author

@senadir There were some changes from Transact which changed this code to store payment method for free orders. I think this is what you are remembering.

Copy link
Contributor

@opr opr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, works well, thanks Mike!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: checkout Issues related to the checkout block. focus: rest api Work impacting REST api routes. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Missing parameter(s): payment_method
4 participants