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

Add an endpoint for processing pay for order orders #10287

Merged
merged 26 commits into from Jul 25, 2023

Conversation

hsingyuc
Copy link
Contributor

@hsingyuc hsingyuc commented Jul 20, 2023

Add an endpoint for processing pay-for-order orders so we can pay for the orders.

Fixes #9312

Other Checks

  • This PR adds/removes a feature flag & I've updated this doc.
  • This PR adds/removes an experimental interfaces and I've updated this doc.
  • I tagged two reviewers because this PR makes queries to the database or I think it might have some security impact.

Testing instructions

  • Test checkout as a guest
Screen Shot 2023-07-20 at 8 33 51 AM
  1. Install and activate a plugin with pay-for-order flow. ex WooCommerce-Bookings
  2. Create a product that needs confirmation and purchase the product
  3. Go to WooCommerce -> Orders
  4. Make sure the Customer is Guest
  5. Click the Customer payment page to go to the pay-for-order page
  6. Copy the key from the URL
  7. Use Postman to test this endpoint http://merchant.local/wp-json/wc/store/checkout/YOUR_ORDER_NUMBER?key=YOUR_KEY&billing_email=YOUR_BILLING_EMAIL
  8. Make sure on Postman the authorization type set to No Auth
  9. POST to checkout the order. ex:
{
  "billing_address": {
        "first_name": "Test",
        "last_name": "TestBilling",
        "company": "",
        "address_1": "123 test",
        "address_2": "",
        "city": "San Diego",
        "state": "CA",
        "postcode": "92103",
        "country": "US",
        "email": "test@hacker.com",
        "phone": ""
    },
    "shipping_address": {
        "first_name": "Test",
        "last_name": "Test Last",
        "company": "",
        "address_1": "123 test",
        "address_2": "",
        "city": "San Diego",
        "state": "CA",
        "postcode": "92103",
        "country": "US",
        "email": "test@hacker.com",
        "phone": ""
    },
  "payment_method": "cod"
}
  • Test checkout as an existing customer
Screen Shot 2023-07-20 at 8 34 30 AM
  1. Go back to WooCommerce->Orders and use the same order you created above
  2. Set status: Pending payment and Customer: Existing customer
  3. Go to WooCommerce -> Settings -> Advanced -> Rest API
  4. Add key with the customer email, read/write permission, copy the Consumer key and secret to Postman
  5. On Postman, change the authorization type to OAuth 1.0, and paste the key and secret
  6. Remove the key and billing_emailparams and send the request
  7. Send the request again and should see below message
Screen Shot 2023-07-20 at 11 22 39 AM

Automated Tests

  • Changes in this PR are covered by Automated Tests.

    • Unit tests
    • E2E tests
  • Do not include in the Testing Notes

Changelog

Add an endpoint for processing pay-for-order orders.

@github-actions
Copy link
Contributor

github-actions bot commented Jul 20, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-10287.zip

Script Dependencies Report

The compare-assets action has detected some changed script dependencies between this branch and trunk. Please review and confirm the following are correct before merging.

Script Handle Added Removed
reviews-frontend.js wc-settings, wp-a11y, wp-api-fetch, wp-compose, wp-element, wp-i18n, wp-is-shallow-equal, wp-polyfill ⚠️
active-filters-frontend.js wc-blocks-data-store, wc-price-format, wc-settings, wp-data, wp-element, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-polyfill, wp-primitives, wp-url ⚠️
all-products-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-blocks-registry, wc-blocks-shared-context, wc-blocks-shared-hocs, wc-price-format, wc-settings, wp-a11y, wp-api-fetch, wp-autop, wp-blocks, wp-components, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-polyfill, wp-primitives, wp-style-engine, wp-url, wp-warning, wp-wordcount ⚠️
attribute-filter-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-settings, wp-a11y, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-primitives, wp-url, wp-warning ⚠️
cart-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-blocks-registry, wc-blocks-shared-context, wc-blocks-shared-hocs, wc-price-format, wc-settings, wp-a11y, wp-api-fetch, wp-autop, wp-blocks, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-plugins, wp-polyfill, wp-primitives, wp-style-engine, wp-url, wp-warning, wp-wordcount ⚠️
checkout-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-blocks-registry, wc-blocks-shared-hocs, wc-price-format, wc-settings, wp-a11y, wp-api-fetch, wp-autop, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-plugins, wp-polyfill, wp-primitives, wp-url, wp-warning, wp-wordcount ⚠️
filter-wrapper-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-blocks-registry, wc-price-format, wc-settings, wp-a11y, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-primitives, wp-style-engine, wp-url, wp-warning ⚠️
mini-cart-frontend.js wc-price-format, wc-settings, wp-i18n, wp-polyfill ⚠️
price-filter-frontend.js react, wc-blocks-data-store, wc-price-format, wc-settings, wp-data, wp-element, wp-i18n, wp-is-shallow-equal, wp-polyfill, wp-url ⚠️
rating-filter-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-settings, wp-a11y, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-primitives, wp-url, wp-warning ⚠️
stock-filter-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-settings, wp-a11y, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-primitives, wp-url, wp-warning ⚠️
mini-cart-component-frontend.js lodash, react, wc-blocks-checkout, wc-blocks-data-store, wc-blocks-registry, wc-price-format, wc-settings, wp-a11y, wp-autop, wp-compose, wp-data, wp-deprecated, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-primitives, wp-style-engine, wp-url, wp-warning, wp-wordcount ⚠️

This comment was automatically generated by the ./github/compare-assets action.

TypeScript Errors Report

  • Files with errors: 470
  • Total errors: 2246

🎉 🎉 This PR does not introduce new TS errors.

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Jul 20, 2023

Size Change: +1.2 kB (0%)

Total Size: 1.36 MB

Filename Size Change
build/active-filters-wrapper--mini-cart-contents-block/cart-button--mini-cart-contents-block/checkout-but--e791dc6c-style.js 957 B -2 B (0%)
build/active-filters.js 7.59 kB +1 B (0%)
build/all-products-rtl.css 4.24 kB +40 B (+1%)
build/all-products.css 4.24 kB +41 B (+1%)
build/all-products.js 41.8 kB -2 B (0%)
build/all-reviews.js 7.87 kB -2 B (0%)
build/attribute-filter-frontend.js 23 kB -13 B (0%)
build/attribute-filter-wrapper-frontend.js 7.69 kB -11 B (0%)
build/attribute-filter.js 13.3 kB -25 B (0%)
build/breadcrumbs.js 2.14 kB -3 B (0%)
build/cart-blocks/cart-items-style.js 229 B +1 B (0%)
build/cart-blocks/cart-order-summary-style.js 322 B +1 B (0%)
build/cart-blocks/order-summary-coupon-form-style.js 137 B +1 B (+1%)
build/cart-blocks/order-summary-discount-style.js 136 B -1 B (-1%)
build/cart-blocks/order-summary-taxes-style.js 177 B -1 B (-1%)
build/cart-blocks/proceed-to-checkout-style.js 1.09 kB -1 B (0%)
build/cart-rtl.css 9.59 kB -10 B (0%)
build/cart.css 9.58 kB -12 B (0%)
build/cart.js 45.2 kB +10 B (0%)
build/checkout-blocks/actions--checkout-blocks/terms-style.js 485 B -2 B (0%)
build/checkout-blocks/contact-information-style.js 608 B -1 B (0%)
build/checkout-blocks/fields-style.js 260 B -1 B (0%)
build/checkout-blocks/order-summary-cart-items-style.js 136 B -1 B (-1%)
build/checkout-blocks/order-summary-style.js 320 B -1 B (0%)
build/checkout-blocks/order-summary-taxes-style.js 177 B -1 B (-1%)
build/checkout-blocks/payment-style.js 461 B +2 B (0%)
build/checkout-blocks/pickup-options-style.js 443 B -1 B (0%)
build/checkout-blocks/shipping-address-style.js 475 B -3 B (-1%)
build/checkout-blocks/shipping-method-style.js 1.37 kB -1 B (0%)
build/checkout-blocks/shipping-methods-style.js 417 B -1 B (0%)
build/checkout-blocks/terms-style.js 677 B +2 B (0%)
build/checkout-rtl.css 9.22 kB -5 B (0%)
build/checkout.css 9.21 kB -6 B (0%)
build/checkout.js 47.8 kB +2 B (0%)
build/customer-account.js 3.19 kB -2 B (0%)
build/featured-category.js 15.1 kB +3 B (0%)
build/featured-product.js 15.3 kB -2 B (0%)
build/filter-wrapper.js 2.4 kB +1 B (0%)
build/handpicked-products.js 8.11 kB -4 B (0%)
build/legacy-template.js 8.93 kB -6 B (0%)
build/mini-cart-component-frontend.js 30.9 kB +38 B (0%)
build/mini-cart-contents-block/cart-button--mini-cart-contents-block/checkout-button--mini-cart-contents---358acf4e-style.js 293 B -1 B (0%)
build/mini-cart-contents-block/cart-button-style.js 388 B +1 B (0%)
build/mini-cart-contents-block/footer-style.js 2.4 kB +3 B (0%)
build/mini-cart-contents-block/products-table-style.js 5.45 kB +1 B (0%)
build/mini-cart-contents-block/shopping-button-style.js 403 B -1 B (0%)
build/mini-cart-contents-block/title-items-counter-style.js 302 B +1 B (0%)
build/mini-cart-contents-block/title-label-style.js 301 B +1 B (0%)
build/mini-cart-contents-block/title-style.js 445 B +2 B (0%)
build/mini-cart-contents.js 17.9 kB +1 B (0%)
build/mini-cart.js 6.37 kB +274 B (+4%)
build/price-filter.js 8.58 kB -2 B (0%)
build/product-add-to-cart.js 8.71 kB -2 B (0%)
build/product-best-sellers.js 8.45 kB -1 B (0%)
build/product-categories.js 2.71 kB -5 B (0%)
build/product-category.js 9.47 kB -1 B (0%)
build/product-collection.js 13.9 kB -2 B (0%)
build/product-gallery-large-image.js 2.01 kB +1 B (0%)
build/product-new.js 8.75 kB -1 B (0%)
build/product-price.js 1.67 kB -1 B (0%)
build/product-query.js 12.9 kB +190 B (+1%)
build/product-results-count.js 1.67 kB +1 B (0%)
build/product-search.js 2.63 kB +1 B (0%)
build/product-stock-indicator.js 729 B +1 B (0%)
build/product-summary.js 1.01 kB +1 B (0%)
build/product-tag.js 8.95 kB -2 B (0%)
build/product-top-rated.js 9.01 kB -2 B (0%)
build/rating-filter.js 6.94 kB -3 B (0%)
build/reviews-by-category.js 12.2 kB -3 B (0%)
build/reviews-by-product.js 13.4 kB -4 B (0%)
build/single-product.js 11.3 kB -8 B (0%)
build/stock-filter.js 7.64 kB -2 B (0%)
build/store-notices.js 1.69 kB -1 B (0%)
build/vendors--active-filters-wrapper--attribute-filter-wrapper--mini-cart-contents-block/cart-button--mi--d6bb29e6-style.js 606 B +1 B (0%)
build/vendors--cart-blocks/proceed-to-checkout-style.js 179 B +1 B (+1%)
build/vendors--checkout-blocks/shipping-method-style.js 11.7 kB -9 B (0%)
build/wc-blocks-editor-style-rtl.css 6.39 kB -9 B (0%)
build/wc-blocks-editor-style.css 6.4 kB -8 B (0%)
build/wc-blocks-rtl.css 2.54 kB +2 B (0%)
build/wc-blocks-vendors.js 65.5 kB -3 B (0%)
build/wc-blocks.css 2.54 kB +3 B (0%)
build/add-to-cart-form-rtl.css 380 B +380 B (new file) 🆕
build/add-to-cart-form.css 378 B +378 B (new file) 🆕
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 8.7 kB
build/active-filters-rtl.css 2.02 kB
build/active-filters-wrapper-frontend.js 7.64 kB
build/active-filters-wrapper-rtl.css 1.88 kB
build/active-filters-wrapper.css 1.88 kB
build/active-filters.css 2.02 kB
build/all-products-frontend.js 10.1 kB
build/all-reviews-rtl.css 1.84 kB
build/all-reviews.css 1.84 kB
build/attribute-filter-rtl.css 4.19 kB
build/attribute-filter-wrapper-rtl.css 4.06 kB
build/attribute-filter-wrapper.css 4.06 kB
build/attribute-filter.css 4.19 kB
build/blocks-checkout.js 35.1 kB
build/breadcrumbs-rtl.css 253 B
build/breadcrumbs.css 253 B
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.38 kB
build/cart-blocks/cart-accepted-payment-methods-style.js 137 B
build/cart-blocks/cart-cross-sells-frontend.js 253 B
build/cart-blocks/cart-cross-sells-products--product-price-frontend.js 2.91 kB
build/cart-blocks/cart-cross-sells-products-frontend.js 3.83 kB
build/cart-blocks/cart-cross-sells-products-style.js 137 B
build/cart-blocks/cart-cross-sells-style.js 253 B
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.17 kB
build/cart-blocks/cart-express-payment-frontend.js 719 B
build/cart-blocks/cart-express-payment-style.js 136 B
build/cart-blocks/cart-items-frontend.js 301 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.47 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-line-items-style.js 137 B
build/cart-blocks/cart-order-summary-frontend.js 1.28 kB
build/cart-blocks/cart-totals-frontend.js 307 B
build/cart-blocks/cart-totals-style.js 238 B
build/cart-blocks/empty-cart-frontend.js 347 B
build/cart-blocks/empty-cart-style.js 339 B
build/cart-blocks/filled-cart-frontend.js 655 B
build/cart-blocks/filled-cart-style.js 313 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.63 kB
build/cart-blocks/order-summary-discount-frontend.js 2.12 kB
build/cart-blocks/order-summary-fee-frontend.js 272 B
build/cart-blocks/order-summary-fee-style.js 137 B
build/cart-blocks/order-summary-heading-frontend.js 333 B
build/cart-blocks/order-summary-heading-style.js 335 B
build/cart-blocks/order-summary-shipping-frontend.js 17 kB
build/cart-blocks/order-summary-shipping-style.js 178 B
build/cart-blocks/order-summary-subtotal-frontend.js 273 B
build/cart-blocks/order-summary-subtotal-style.js 136 B
build/cart-blocks/order-summary-taxes-frontend.js 434 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.43 kB
build/cart-frontend.js 29.9 kB
build/catalog-sorting-rtl.css 277 B
build/catalog-sorting.css 276 B
build/catalog-sorting.js 1.71 kB
build/checkout-blocks/actions-frontend.js 1.88 kB
build/checkout-blocks/actions-style.js 685 B
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.7 kB
build/checkout-blocks/billing-address-frontend.js 1.18 kB
build/checkout-blocks/billing-address-style.js 532 B
build/checkout-blocks/contact-information-frontend.js 2.04 kB
build/checkout-blocks/express-payment-frontend.js 1.13 kB
build/checkout-blocks/fields-frontend.js 318 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.75 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.79 kB
build/checkout-blocks/order-summary-coupon-form-style.js 137 B
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-discount-style.js 137 B
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-fee-style.js 137 B
build/checkout-blocks/order-summary-frontend.js 1.28 kB
build/checkout-blocks/order-summary-shipping-frontend.js 17 kB
build/checkout-blocks/order-summary-shipping-style.js 137 B
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-subtotal-style.js 137 B
build/checkout-blocks/order-summary-taxes-frontend.js 435 B
build/checkout-blocks/payment-frontend.js 9.28 kB
build/checkout-blocks/pickup-options-frontend.js 4.84 kB
build/checkout-blocks/shipping-address-frontend.js 1.18 kB
build/checkout-blocks/shipping-method-frontend.js 2.62 kB
build/checkout-blocks/shipping-methods-frontend.js 6.41 kB
build/checkout-blocks/terms-frontend.js 1.55 kB
build/checkout-blocks/totals-frontend.js 347 B
build/checkout-blocks/totals-style.js 285 B
build/checkout-frontend.js 31.8 kB
build/customer-account-rtl.css 406 B
build/customer-account.css 406 B
build/featured-category-rtl.css 986 B
build/featured-category.css 987 B
build/featured-product-rtl.css 1.03 kB
build/featured-product.css 1.03 kB
build/filter-wrapper-frontend.js 14.3 kB
build/filter-wrapper-rtl.css 399 B
build/filter-wrapper.css 397 B
build/legacy-template-rtl.css 258 B
build/legacy-template.css 257 B
build/mini-cart-contents-block/cart-button-frontend.js 1.73 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.81 kB
build/mini-cart-contents-block/checkout-button-style.js 470 B
build/mini-cart-contents-block/empty-cart-frontend.js 360 B
build/mini-cart-contents-block/empty-cart-style.js 358 B
build/mini-cart-contents-block/filled-cart-frontend.js 267 B
build/mini-cart-contents-block/filled-cart-style.js 268 B
build/mini-cart-contents-block/footer-frontend.js 3.83 kB
build/mini-cart-contents-block/footer-rtl.css 419 B
build/mini-cart-contents-block/footer.css 418 B
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/items-style.js 237 B
build/mini-cart-contents-block/products-table--product-image--product-title-style.js 352 B
build/mini-cart-contents-block/products-table-frontend.js 582 B
build/mini-cart-contents-block/products-table-rtl.css 2.19 kB
build/mini-cart-contents-block/products-table.css 2.18 kB
build/mini-cart-contents-block/shopping-button-frontend.js 538 B
build/mini-cart-contents-block/title-frontend.js 1.9 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 1.59 kB
build/mini-cart-contents-block/title-label-frontend.js 1.53 kB
build/mini-cart-contents-rtl.css 2.73 kB
build/mini-cart-contents.css 2.73 kB
build/mini-cart-frontend.js 2.85 kB
build/mini-cart-rtl.css 2.61 kB
build/mini-cart.css 2.61 kB
build/packages-style-rtl.css 3.59 kB
build/packages-style.css 3.59 kB
build/price-filter-frontend.js 14.6 kB
build/price-filter-rtl.css 2.71 kB
build/price-filter-wrapper-frontend.js 6.75 kB
build/price-filter-wrapper-rtl.css 2.56 kB
build/price-filter-wrapper.css 2.56 kB
build/price-filter.css 2.7 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-average-rating--product-button--product-image--product-price--product---1d132d69.js 272 B
build/product-add-to-cart--product-button--product-rating--product-rating-counter--product-rating-stars.js 151 B
build/product-add-to-cart--product-image--product-title.js 351 B
build/product-add-to-cart-frontend.js 8.67 kB
build/product-add-to-cart-rtl.css 1.39 kB
build/product-add-to-cart.css 1.4 kB
build/product-average-rating--product-button--product-image--product-price--product-rating--product-ratin--e23975b5.js 954 B
build/product-average-rating-frontend.js 1.72 kB
build/product-average-rating.js 397 B
build/product-button-frontend.js 4.96 kB
build/product-button-rtl.css 889 B
build/product-button.css 891 B
build/product-button.js 3.95 kB
build/product-categories-rtl.css 671 B
build/product-categories.css 670 B
build/product-details-rtl.css 413 B
build/product-details.css 410 B
build/product-gallery-large-image-rtl.css 314 B
build/product-gallery-large-image.css 313 B
build/product-gallery.js 2.3 kB
build/product-image-frontend.js 2.72 kB
build/product-image-gallery-rtl.css 322 B
build/product-image-gallery.css 322 B
build/product-image-rtl.css 951 B
build/product-image.css 949 B
build/product-image.js 1.57 kB
build/product-on-sale.js 8.76 kB
build/product-price-frontend.js 248 B
build/product-price-rtl.css 696 B
build/product-price.css 695 B
build/product-query-rtl.css 367 B
build/product-query.css 365 B
build/product-rating-counter-frontend.js 2.03 kB
build/product-rating-counter.js 687 B
build/product-rating-frontend.js 2.37 kB
build/product-rating-rtl.css 262 B
build/product-rating-stars-frontend.js 2.27 kB
build/product-rating-stars-rtl.css 914 B
build/product-rating-stars.css 916 B
build/product-rating-stars.js 937 B
build/product-rating.css 262 B
build/product-rating.js 1.04 kB
build/product-results-count-rtl.css 248 B
build/product-results-count.css 247 B
build/product-reviews-rtl.css 474 B
build/product-reviews.css 473 B
build/product-sale-badge-frontend.js 1.81 kB
build/product-sale-badge-rtl.css 392 B
build/product-sale-badge.css 389 B
build/product-sale-badge.js 665 B
build/product-search-rtl.css 435 B
build/product-search.css 434 B
build/product-sku-frontend.js 1.87 kB
build/product-sku-rtl.css 258 B
build/product-sku.css 258 B
build/product-sku.js 535 B
build/product-stock-indicator-frontend.js 2.06 kB
build/product-stock-indicator-rtl.css 250 B
build/product-stock-indicator.css 250 B
build/product-summary-frontend.js 2.28 kB
build/product-summary-rtl.css 571 B
build/product-summary.css 572 B
build/product-template-rtl.css 439 B
build/product-template.css 437 B
build/product-template.js 3.35 kB
build/product-title-frontend.js 2.23 kB
build/product-title-rtl.css 718 B
build/product-title.css 719 B
build/product-title.js 973 B
build/products-by-attribute.js 9.8 kB
build/rating-filter-frontend.js 21.4 kB
build/rating-filter-rtl.css 4.25 kB
build/rating-filter-wrapper-frontend.js 6.23 kB
build/rating-filter-wrapper-rtl.css 4.11 kB
build/rating-filter-wrapper.css 4.11 kB
build/rating-filter.css 4.24 kB
build/reviews-by-category-rtl.css 1.84 kB
build/reviews-by-category.css 1.84 kB
build/reviews-by-product-rtl.css 1.84 kB
build/reviews-by-product.css 1.84 kB
build/reviews-frontend.js 7.18 kB
build/single-product-rtl.css 399 B
build/single-product.css 397 B
build/stock-filter-frontend.js 21.6 kB
build/stock-filter-rtl.css 4.06 kB
build/stock-filter-wrapper-frontend.js 6.45 kB
build/stock-filter-wrapper-rtl.css 3.93 kB
build/stock-filter-wrapper.css 3.93 kB
build/stock-filter.css 4.06 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-coupon-form--cart-blocks/order-summary--48e1e4bb-frontend.js 6.84 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-shipping--checkout-blocks/billing-addr--d9f38f9d-frontend.js 4.2 kB
build/vendors--attribute-filter-wrapper-frontend.js 5.11 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/cart-line-items--cart-blocks/cart-order--3c5fe802-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.57 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--decc3dc6-frontend.js 19.4 kB
build/vendors--checkout-blocks/pickup-options--checkout-blocks/shipping-methods-frontend.js 8.25 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12.4 kB
build/vendors--mini-cart-contents-block/products-table--price-filter-wrapper--product-price-style.js 5.27 kB
build/vendors--mini-cart-contents-block/products-table-style.js 3.16 kB
build/vendors--price-filter-wrapper-frontend.js 2.2 kB
build/vendors--product-add-to-cart-frontend.js 7.25 kB
build/vendors--rating-filter-wrapper-frontend.js 5.11 kB
build/vendors--stock-filter-wrapper-frontend.js 5.11 kB
build/wc-blocks-data.js 22.4 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 934 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.1 kB
build/wc-blocks-shared-hocs.js 1.75 kB
build/wc-blocks.js 3.75 kB
build/wc-interactivity.js 10.4 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.6 kB
build/wc-shipping-method-pickup-location.js 30.4 kB

compressed-size-action

@hsingyuc hsingyuc marked this pull request as ready for review July 20, 2023 16:12
@hsingyuc hsingyuc requested review from a team and opr and removed request for a team July 20, 2023 16:12
@@ -271,8 +271,8 @@ public function get_item_response( $order ) {
'coupons' => $this->get_item_responses_from_schema( $this->coupon_schema, $order->get_items( 'coupon' ) ),
'fees' => $this->get_item_responses_from_schema( $this->fee_schema, $order->get_items( 'fee' ) ),
'totals' => (object) $this->prepare_currency_response( $this->get_totals( $order ) ),
'shipping_address' => (object) $this->shipping_address_schema->get_item_response( new \WC_Customer( $order->get_customer_id() ) ),
'billing_address' => (object) $this->billing_address_schema->get_item_response( new \WC_Customer( $order->get_customer_id() ) ),
'shipping_address' => (object) $this->shipping_address_schema->get_item_response( $order ),
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is because an order does not necessarily have a customer. This will also get guest details.

@mikejolley mikejolley self-requested a review July 21, 2023 16:08
@alefesouza alefesouza self-assigned this Jul 21, 2023
Copy link
Member

@alefesouza alefesouza left a comment

Choose a reason for hiding this comment

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

Works as expected, just a comment for the requires_nonce method that maybe is not needed, also Checkout.php and CheckoutOrder.php share many methods with the exact same code, why not move it to a trait or something like a CheckoutRouteUtils class?

src/StoreApi/Routes/V1/CheckoutOrder.php Outdated Show resolved Hide resolved
Copy link
Member

@mikejolley mikejolley left a comment

Choose a reason for hiding this comment

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

Thanks for working on this. I made some suggestions inline, and I think we could avoid quite a bit of duplication by extending the current route/schema, since there is quite a bit of overlap.

src/StoreApi/Utilities/OrderAuthorizationTrait.php Outdated Show resolved Hide resolved
src/StoreApi/Schemas/V1/CheckoutOrderSchema.php Outdated Show resolved Hide resolved
src/StoreApi/Routes/V1/CheckoutOrder.php Outdated Show resolved Hide resolved
$order_id = absint( $request['id'] );
$this->order = wc_get_order( $order_id );

if ( $this->order->get_status() !== 'pending' ) {
Copy link
Member

Choose a reason for hiding this comment

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

Can failed orders be paid for? What about the checkout-draft status?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Can failed orders be paid for?

Thank you! Updated here 461be20.

What about the checkout-draft status?

The checkout-draft status, do you mean the draft status in WC->orders?

Copy link
Member

Choose a reason for hiding this comment

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

Yeah, the status checkout block creates. But maybe its not needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ok, I just tested and we can pay for draft. Checkout order should not have draft but do we want to make them consistent?

src/StoreApi/Routes/V1/CheckoutOrder.php Show resolved Hide resolved
Copy link
Member

@mikejolley mikejolley left a comment

Choose a reason for hiding this comment

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

Changes look good. I also tested by editing an order to pending.

I am pre-approving, but I found the following things which may need resolving here or as a follow up:

  1. When you don't have auth (e.g. no billing email) you see the following API error:

This order belongs to a different customer. Please log in to the correct account.

We should drop the log in part because that doesn't apply to the API calls.

  1. If you provide a different billing email to that in the query string, the next request will fail. Not sure if this is a problem or not, but should the request fail for payment reasons, it breaks retries unless you change the provided email.

  2. Do we need to support logged out user providing valid ID, key, and billing email? My requests failed because I was not authed and logged in.

Thanks

@github-actions github-actions bot added this to the 10.8.0 milestone Jul 25, 2023
@hsingyuc
Copy link
Contributor Author

@mikejolley

We should drop the log in part because that doesn't apply to the API calls.

Updated here b88fe53.

  1. If you provide a different billing email to that in the query string, the next request will fail. Not sure if this is a problem or not, but should the request fail for payment reasons, it breaks retries unless you change the provided email.

I don't quite understand what you mean here. The request will fail and it breaks retries, do you mean you'll see Invalid billing email provided. message, or how does it fail or break? I think this is expected if an invalid email is provided.

  1. Do we need to support logged out user providing valid ID, key, and billing email? My requests failed because I was not authed and logged in.

For security purposes, I think we should ask the logged-out user to log in for non-guest orders.

@hsingyuc hsingyuc requested a review from alefesouza July 25, 2023 15:36
@mikejolley
Copy link
Member

I don't quite understand what you mean here. The request will fail and it breaks retries, do you mean you'll see Invalid billing email provided. message, or how does it fail or break? I think this is expected if an invalid email is provided.

  1. POST to wp-json/wc/store/checkout/572?key=XXXXX&billing_email=test@test.com with a payload including a different billing address and a payment method that rejects the order e.g. COD with some settings that would make it invalid.
  2. You get the failure back from API due to payment
  3. If you attempt the same request again, you get a user error because the billing email is no longer test@test.com

Thats it. It may be expected.

@hsingyuc
Copy link
Contributor Author

Let me know if I'm following.

Screen.Recording.2023-07-25.at.8.54.36.AM.mov

Copy link
Member

@alefesouza alefesouza left a comment

Choose a reason for hiding this comment

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

LGTM

@hsingyuc
Copy link
Contributor Author

@mikejolley Since we need to make it to the 10.8.0 release, I'm going to merge this PR first so it doesn't block the rest three PRs. I can open another PR if the issue needs to be fixed. Let me know. Thank you!

@hsingyuc hsingyuc merged commit a9a9e64 into trunk Jul 25, 2023
31 checks passed
@hsingyuc hsingyuc deleted the add/an-endpoint-for-process-pay-for-order-orders branch July 25, 2023 20:00
@mikejolley mikejolley restored the add/an-endpoint-for-process-pay-for-order-orders branch July 26, 2023 10:12
@imanish003 imanish003 added the type: task The issue is an internally driven task (e.g. from another A8c team). label Jul 31, 2023
@mikejolley mikejolley deleted the add/an-endpoint-for-process-pay-for-order-orders branch November 20, 2023 13:13
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
type: task The issue is an internally driven task (e.g. from another A8c team).
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add an endpoint for processing pay-for-order orders
4 participants