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

Check for address on shippingData #8878

Merged
merged 1 commit into from
Mar 27, 2023
Merged

Check for address on shippingData #8878

merged 1 commit into from
Mar 27, 2023

Conversation

opr
Copy link
Contributor

@opr opr commented Mar 27, 2023

This PR fixes an issue where observers returning address in the shippingData object would not get the address applied to the order.

In #8163 we added checks to see if shippingData was used, rather than shippingAddress, and if so we would extract the address from there and use that, however we did not correctly identify that the address was stored in a property on shippingData.

Fixes #8785

Testing

Automated Tests

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

User Internal Testing

  1. Clone the Stripe plugin into your plugins directory and set it up. You will need to enter Stripe keys on the plugin's settings page to get it working.
  2. Go to this line of code: https://github.com/woocommerce/woocommerce-gateway-stripe/blob/8ffd22aff3b06eda02a1ae2fd8368b71450b36a9/client/blocks/credit-card/use-payment-processing.js#L136
  3. Modify the object returned by this function to include shippingData with an address property, like so:
return {
	type: emitResponse.responseTypes.SUCCESS,
	meta: {
		paymentMethodData: {
			stripe_source: response.source.id,
			// The billing information here is relevant to properly create the
			// Stripe Customer object.
			billing_email: ownerInfo.email,
			billing_first_name: billingData?.first_name ?? '',
			billing_last_name: billingData?.last_name ?? '',
			paymentMethod: PAYMENT_METHOD_NAME,
			paymentRequestType: 'cc',
		},
		billingData,
		shippingData: {
			address: {
				...billingData,
				first_name: 'Set by',
				last_name: 'Stripe plugin',
			},
		},
	},
};
  1. Make an order using Stripe.
  2. When it is complete, check the order in the back end. The shipping address name should be Set by Stripe plugin.
  • Do not include in the Testing Notes

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Dev note

In Check for address on shippingData (#8878) we fixed a regression with our payment processing observers. Previously, payment processing observers that returned a shippingData object with an address property would overwrite the customer's shipping address with the supplied address, however in #8163 this was inadvertently removed.

This has now been changed so that these extensions work as they did (but passing the address via shippingData.address is still deprecated, and the preferred method is to pass it via shippingAddress which should be a flat address object).

To migrate away from the deprecated shippingData property to using the new shippingAddress property, you will need to update your observer's return value. The address, previously stored the in shippingData.address should be moved into shippingAddress which will be a flat object containing only the address data.

Old observer response value

return {
  shippingData: {
    address: {
      first_name: 'John',
      last_name: 'Doe',
    }
}

New observer response value - note the shippingAddress value is a flat object

return {
  shippingAddress: {
    first_name: 'John',
    last_name: 'Doe',
  }
}

Changelog

Fixed an issue where extensions were unable to programatically set the shipping address during payment processing.

@opr opr added type: bug The issue/PR concerns a confirmed bug. category: extensibility Work involving adding or updating extensibility. Useful to combine with other scopes impacted. block: checkout Issues related to the checkout block. labels Mar 27, 2023
@woocommercebot woocommercebot requested review from a team and mikejolley and removed request for a team March 27, 2023 14:16
@github-actions
Copy link
Contributor

github-actions bot commented Mar 27, 2023

The release ZIP for this PR is accessible via:

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

Script Dependencies Report

There is no changed script dependency between this branch and trunk.

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

TypeScript Errors Report

  • Files with errors: 451
  • Total errors: 2214

🎉 🎉 This PR does not introduce new TS errors.

comments-aggregator

@github-actions
Copy link
Contributor

Size Change: +12 B (0%)

Total Size: 1.07 MB

Filename Size Change
build/wc-blocks-data.js 21.8 kB +12 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 7.98 kB
build/active-filters-wrapper-frontend.js 5.97 kB
build/active-filters.js 7.49 kB
build/all-products-frontend.js 11.8 kB
build/all-products.js 37.1 kB
build/all-reviews.js 7.65 kB
build/attribute-filter-frontend.js 22.4 kB
build/attribute-filter-wrapper-frontend.js 7.1 kB
build/attribute-filter.js 13.2 kB
build/blocks-checkout.js 44 kB
build/breadcrumbs.js 2.04 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.38 kB
build/cart-blocks/cart-cross-sells-frontend.js 253 B
build/cart-blocks/cart-cross-sells-products-frontend.js 9.71 kB
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.2 kB
build/cart-blocks/cart-express-payment-frontend.js 718 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.36 kB
build/cart-blocks/cart-line-items-frontend.js 1.07 kB
build/cart-blocks/cart-order-summary-frontend.js 1.24 kB
build/cart-blocks/cart-totals-frontend.js 307 B
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/filled-cart-frontend.js 655 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.62 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-heading-frontend.js 455 B
build/cart-blocks/order-summary-shipping-frontend.js 10.7 kB
build/cart-blocks/order-summary-subtotal-frontend.js 273 B
build/cart-blocks/order-summary-taxes-frontend.js 433 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.32 kB
build/cart-frontend.js 29.3 kB
build/cart.js 48.1 kB
build/catalog-sorting.js 1.7 kB
build/checkout-blocks/actions-frontend.js 1.85 kB
build/checkout-blocks/billing-address-frontend.js 4.18 kB
build/checkout-blocks/contact-information-frontend.js 2.05 kB
build/checkout-blocks/express-payment-frontend.js 1.14 kB
build/checkout-blocks/fields-frontend.js 331 B
build/checkout-blocks/order-note-frontend.js 1.14 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.68 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.79 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-frontend.js 1.24 kB
build/checkout-blocks/order-summary-shipping-frontend.js 10.8 kB
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-taxes-frontend.js 433 B
build/checkout-blocks/payment-frontend.js 8.39 kB
build/checkout-blocks/pickup-options-frontend.js 4.11 kB
build/checkout-blocks/shipping-address-frontend.js 4.14 kB
build/checkout-blocks/shipping-method-frontend.js 2.6 kB
build/checkout-blocks/shipping-methods-frontend.js 4.82 kB
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/totals-frontend.js 309 B
build/checkout-frontend.js 30.9 kB
build/checkout.js 45.8 kB
build/customer-account.js 3.16 kB
build/featured-category.js 14 kB
build/featured-product.js 14.4 kB
build/filter-wrapper-frontend.js 14 kB
build/filter-wrapper.js 2.4 kB
build/general-style-rtl.css 1.31 kB
build/general-style.css 1.31 kB
build/handpicked-products.js 7.92 kB
build/legacy-template.js 5.57 kB
build/mini-cart-component-frontend.js 28.2 kB
build/mini-cart-contents-block/cart-button-frontend.js 816 B
build/mini-cart-contents-block/checkout-button-frontend.js 818 B
build/mini-cart-contents-block/empty-cart-frontend.js 360 B
build/mini-cart-contents-block/filled-cart-frontend.js 268 B
build/mini-cart-contents-block/footer-frontend.js 3.18 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 589 B
build/mini-cart-contents-block/shopping-button-frontend.js 705 B
build/mini-cart-contents-block/title-frontend.js 368 B
build/mini-cart-contents.js 17.2 kB
build/mini-cart-frontend.js 2.02 kB
build/mini-cart.js 4.49 kB
build/price-filter-frontend.js 13.9 kB
build/price-filter-wrapper-frontend.js 6.96 kB
build/price-filter.js 8.4 kB
build/price-format.js 1.19 kB
build/product-add-to-cart-frontend.js 6.43 kB
build/product-add-to-cart.js 178 B
build/product-best-sellers.js 8.26 kB
build/product-button-frontend.js 1.91 kB
build/product-categories.js 2.36 kB
build/product-category.js 9.25 kB
build/product-image-frontend.js 1.77 kB
build/product-image.js 178 B
build/product-new.js 8.26 kB
build/product-on-sale.js 8.59 kB
build/product-price-frontend.js 2.08 kB
build/product-query.js 11 kB
build/product-rating-frontend.js 1.34 kB
build/product-results-count.js 1.66 kB
build/product-sale-badge-frontend.js 977 B
build/product-search.js 2.63 kB
build/product-sku-frontend.js 453 B
build/product-stock-indicator-frontend.js 1.01 kB
build/product-summary-frontend.js 1.29 kB
build/product-tag.js 8.74 kB
build/product-title-frontend.js 1.37 kB
build/product-title.js 178 B
build/product-top-rated.js 8.5 kB
build/products-by-attribute.js 9.58 kB
build/rating-filter-frontend.js 20.8 kB
build/rating-filter-wrapper-frontend.js 5.58 kB
build/rating-filter.js 6.99 kB
build/reviews-by-category.js 11.9 kB
build/reviews-by-product.js 13 kB
build/reviews-frontend.js 7.11 kB
build/stock-filter-frontend.js 21 kB
build/stock-filter-wrapper-frontend.js 5.82 kB
build/stock-filter.js 7.7 kB
build/store-notices.js 1.69 kB
build/vendors--attribute-filter-wrapper--cart-blocks/cart-cross-sells-products--cart-blocks/order-summary--ef6753df-frontend.js 6.85 kB
build/vendors--attribute-filter-wrapper--rating-filter-wrapper--stock-filter-wrapper-frontend.js 7.7 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-cross-sells-products--cart-blocks/order-summary-shipping--checkout-blocks--18f9376a-frontend.js 19.4 kB
build/vendors--cart-blocks/cart-cross-sells-products--product-add-to-cart-frontend.js 7.25 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/order-summary-shipping--checkout-block--24d3fc0c-frontend.js 8.25 kB
build/vendors--checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 5.44 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12 kB
build/wc-blocks-editor-style-rtl.css 5.79 kB
build/wc-blocks-editor-style.css 5.79 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 930 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.73 kB
build/wc-blocks-style-rtl.css 27 kB
build/wc-blocks-style.css 27 kB
build/wc-blocks-vendors-style-rtl.css 1.96 kB
build/wc-blocks-vendors-style.css 1.96 kB
build/wc-blocks-vendors.js 64.2 kB
build/wc-blocks.js 2.63 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 29.9 kB
build/woo-directives-runtime.js 2.73 kB
build/woo-directives-vendors.js 7.91 kB

compressed-size-action

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.

@opr code checks out and aligns with what we had previously. I have not tested with a real Stripe account—Ill trust you there as I don't have keys any more :p

We should include a dev note.

@opr opr added the needs: dev note PR that has some text that needs to be included in the release notes. label Mar 27, 2023
@opr
Copy link
Contributor Author

opr commented Mar 27, 2023

The failing test is related to

FAIL tests/e2e/specs/shopper/filter-products-by-attribute.test.ts

I don't think it is caused by this PR.

Thanks for the review Mike.

@opr opr merged commit a727305 into trunk Mar 27, 2023
@opr opr deleted the fix/shipping-address-observer branch March 27, 2023 16:33
@Aljullu Aljullu modified the milestones: 9.8.3, 9.9.0 Mar 28, 2023
@Aljullu Aljullu added the release: cherry-pick Cherry picked into the relevant release branch. label Mar 28, 2023
Aljullu pushed a commit that referenced this pull request Mar 28, 2023
Aljullu pushed a commit that referenced this pull request Mar 28, 2023
Aljullu added a commit that referenced this pull request Mar 28, 2023
* Empty commit for release pull request

* Update version numbers to 9.8.3

* Add 9.8.3 changelog

* Fix save changes bug in Firefox browser (#8754)

* Fix border styles not visible in the editor in Featured Product and Featured Category blocks in core (#8838)

* Check for address on shippingData (#8878)

* Add 9.8.3 testing steps

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Saad Tarhi <saad.trh@gmail.com>
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
tarunvijwani pushed a commit that referenced this pull request Mar 29, 2023
opr added a commit that referenced this pull request Apr 3, 2023
* Empty commit for release pull request

* Add WC Blocks 9.9.0 changelog

* Update supported versions for WC Blocks 9.9.0

* Update versions for WC Blocks 9.9.0

* Add testing notes for 9.90 release

* Update testing instructions

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>

* Remove active the latest trunk part from the testing instructions

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>

* Add instructions to activate WP release candidates

- Add the editor type for each reference.
- Add instructions to activate WP release candidate

* Fix readme file reference

* Fix unlinked border widths in WP 6.2 (#8893)

* Check for address on shippingData (#8878)

* Make a Single Product conversion enabled in Core, but keep the Product Archive behind experimental flag (#8907)

* Remove `isExperimentalBuild` Checks in Classic Template Block (#8902)

* Remove isExperimentalBuild checks.

By removing the `isExperimentalBuild` conditional checks in the Classic
Template block, we can ensure the features added in #8324 will land in
WooCommerce Core and are not limited to the feature plugin.

See p1680000654295729-slack-C02UBB1EPEF for additional context.

* Revert isExperimentalBuild removal on registration

The conditional `isExperimentalBuild` conditional check that was
wrapping some conditional registration of the classic template
block seems to be  unrelated to the template conversion/migration.

This is something we can revisit and test separately but should not be
included in this changeset.

* Update changelog and testing instructions to include cherry-picked PRs

* Update release zip

* Update readme to be in correct order

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Tarun Vijwani <tarun.vijwani@automattic.com>
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: kmanijak <karol.manijak@automattic.com>
Co-authored-by: Daniel W. Robert <danielwrobert@users.noreply.github.com>
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
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. category: extensibility Work involving adding or updating extensibility. Useful to combine with other scopes impacted. needs: dev note PR that has some text that needs to be included in the release notes. release: cherry-pick Cherry picked into the relevant release branch. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

__internalEmitPaymentProcessingEvent not mapping shippingData property
3 participants