Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mobile] Display 'In-Person (POS)' for transactions from mobile POS #9802

Merged
merged 7 commits into from
Dec 3, 2024

Conversation

jaclync
Copy link
Contributor

@jaclync jaclync commented Nov 25, 2024

Part of woocommerce/woocommerce-ios#14478

Changes proposed in this Pull Request

📝 This PR depends on the server-side changes in https://github.com/Automattic/transact-platform-server/pull/6898 that stores the new transaction channel value in_person_pos.

Why

More context about the changes: pdfdoF-5QB-p2.

In order to differentiate transactions from the mobile apps between POS and store management:

  • The mobile apps start including a new metadata entry ipp_channel: mobile_pos|mobile_store_management in the payment intent (iOS for now) that is recorded in the Stripe charge
  • When transforming a Stripe charge to a transaction on the server side, a new value in_person_pos is set to the channel column that indicates the transaction is from mobile POS (changes in https://github.com/Automattic/transact-platform-server/pull/6898)

For the WooPayments plugin, the impact is on how we display the channel for transactions from POS and the channel filter. Based on the decision from pdfdoF-5UW-p2 (Option 1), the proposed changes are:

  • Display In-Person (POS) for the channel value in:
    • transaction list
    • transaction details
  • For the channel filter, we will not show the option for POS as it is not a publicly available feature until after GA
How

The main changes in this PR are to separate the channel string getter from a getChargeChannel( type: string ): string to two functions because the data type is different from the transaction list and transaction details:

  • getTransactionChannel = ( channel: string ): string: used for the channel value in the transaction list, where the transaction is the data source
  • getChargeChannel = ( type: string, metadata: Record< string, any > ): string: used for the channel value in transaction details, where a Stripe charge and metadata are the data source instead of a transaction

Testing instructions

Prerequisites:

  • Being able to run WCiOS in a simulator, more info on how you can use the mobile app p1674057969318029/1674054134.309279-slack-C04DN7Q51KK and P91TBi-6Sn-p2. Xcode 16.1 is recommended as the version on CI.
  • Have a site with WooPayments that:
WCiOS
  • Pull the latest trunk to include changes in Send ipp_channel metadata in payment intent from store management/POS use cases woocommerce/woocommerce-ios#14479
  • In Xcode, edit the WooCommerce scheme to enable simulated card readers PdfdoF-D-p2#simulated-card-readers
  • Build the app to any type of iPhone/iPad simulator
  • Log in to a site in the prerequisite using store credentials
  • Create at least one purchasable products if needed
  • Go to the Menu tab > Point of Sale mode
  • Add at least one product to cart, then proceed to check out
  • Tap Connect to reader --> it should proceed to connect to a simulated reader and make a simulated payment successfully
  • Exit POS, then go to the orders tab --> note the order ID created in POS
  • Tap + to create an order, add a custom amount or product, recalculate then collect payment using a card reader --> it should proceed to make a simulated payment successfully. Note the order ID
WooPayments side
  • In the store website, place an order so that the store has 3 orders from mobile POS, mobile store management, and online
  • In wp-admin > Payments > Transactions --> the 3 orders should have the expected channel value in the transaction list: In-Person (POS) for the POS order, In-Person for the IPP order, and Online for the online order
  • Tap on each of the 3 orders to see transaction details -> the channel value should be the same as in the transaction list
  • Tap All Transactions > Advanced filters > Add a filter > Channel --> the options should only have Online and In-Person
  • Tap on each channel filter option --> only online/in-person transactions should be displayed

Example screenshots

Channel filter
Screenshot 2024-11-26 at 12 46 13 PM
Transaction list
Screenshot 2024-11-26 at 12 46 41 PM
Transaction details
Screenshot 2024-11-26 at 12 48 17 PM
  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

…annel for individual transaction from Stripe charge and metadata, and getTransactionChannel for transaction list from transactions.
@botwoo
Copy link
Collaborator

botwoo commented Nov 25, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 9802 or branch name mobile/tpv-tracking-channel in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 9314dc2
  • Build time: 2024-12-03 07:43:53 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Nov 25, 2024

Size Change: +234 B (0%)

Total Size: 1.34 MB

Filename Size Change
release/woocommerce-payments/dist/index.js 303 kB +234 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.37 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.37 kB
release/woocommerce-payments/assets/css/success.css 182 B
release/woocommerce-payments/assets/css/success.rtl.css 184 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.65 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.65 kB
release/woocommerce-payments/dist/blocks-checkout.js 54.6 kB
release/woocommerce-payments/dist/cart-block.js 16.9 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 939 B
release/woocommerce-payments/dist/checkout.css 939 B
release/woocommerce-payments/dist/checkout.js 33.2 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/express-checkout.css 229 B
release/woocommerce-payments/dist/express-checkout.js 15 kB
release/woocommerce-payments/dist/frontend-tracks.js 854 B
release/woocommerce-payments/dist/index-rtl.css 52.6 kB
release/woocommerce-payments/dist/index.css 52.6 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 4.46 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.6 kB
release/woocommerce-payments/dist/multi-currency.css 4.46 kB
release/woocommerce-payments/dist/multi-currency.js 57.3 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
release/woocommerce-payments/dist/order.js 42 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 386 B
release/woocommerce-payments/dist/plugins-page.css 386 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.2 kB
release/woocommerce-payments/dist/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 kB
release/woocommerce-payments/dist/settings.js 224 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.3 kB
release/woocommerce-payments/dist/tokenized-express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.js 16.3 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB
release/woocommerce-payments/dist/woopay-express-button.js 24.7 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.31 kB
release/woocommerce-payments/dist/woopay.css 4.28 kB
release/woocommerce-payments/dist/woopay.js 71 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 767 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/react-jsx-runtime.js 553 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.2 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 417 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 584 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 621 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

* develop:
  Wait for Stripe js to load before using it (#9770)
  Remove redundant stripe payment elements mount for pay for order (#9813)
  Enforce proper return types for methods get_order_from_event_body (#9761)
  Update phpcompatibility to develop version to get sniffs for PHP 8 (#9697)
  Enable ECE Tracks Events when WooPay is disabled (#9793)
  chore: rename PRB constants to ECE (#9768)
  Amend changelog entries for release 8.5.1
  fix: remove 'test mode' badge from shortcode checkout (#9800)
  Update version and add changelog entries for release 8.5.1
* develop:
  Ensure ECE button load events are triggered for multiple buttons on the same page (#9845)
  Payouts: Add payout bank reference key to payout reports and CSV (#9832)
  Fix WooPay component spacing (#9748)
  Use paragraph selector instead of label for pmme appearance (#9840)
  Allow redirect to the settings page from WCPay connect (#9827)
  Update references to woocommerce_payments_server (#9824)
  Fix return types in DocBlocks (#9815)
  Fix WooPay trial subscriptions purchases (#9778)
Copy link
Contributor

@zmaglica zmaglica 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 to me. :shipit:

* develop:
  Remove payout timing notice and update the help tooltip. (#9812)
  Fix styling on payment details page in mobile view. (#9790)
  Prevent browser error on dispute evidence submission (#9847)
  Update inquiry order notes to use inquiry specific content (#9828)
  Restrict Stripe Link to credit card payment method and improve cleanup (#9822)
@jaclync jaclync enabled auto-merge December 3, 2024 07:40
@jaclync jaclync added this pull request to the merge queue Dec 3, 2024
Merged via the queue into develop with commit 137745e Dec 3, 2024
24 checks passed
@jaclync jaclync deleted the mobile/tpv-tracking-channel branch December 3, 2024 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants