New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 748556 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Feature



Sign in to add a comment

Integrate Native Payment Apps for Payment Request on iOS

Project Member Reported by rayraymond@google.com, Jul 25 2017

Issue description

Design doc here:

https://docs.google.com/document/d/1fS6_WqYSSKBkyQHR3H7gJ7imD1GohiJqBHTAa9cUgO0/edit


Relevant crbug number: 602666 (Implement PaymentRequest on iOS)



 
Project Member

Comment 1 by sheriffbot@chromium.org, Jul 26 2017

Labels: Hotlist-Google
Project Member

Comment 2 by sheriffbot@chromium.org, Jul 26 2017

Labels: Hotlist-Recharge-BouncingOwner
Owner: ----
Status: Untriaged (was: Started)
The assigned owner "rayraymond@google.com" is not able to receive e-mails, please re-triage.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 3 by sczs@chromium.org, Jul 26 2017

Cc: rayraymond@google.com
Owner: mahmadi@chromium.org
Status: Assigned (was: Untriaged)
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb

commit e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb
Author: Randall Raymond <rayraymond@google.com>
Date: Fri Jul 28 21:52:46 2017

[Payment Request] Add parsing functionality for sending parameters to payment app

In Payment Request for iOS we are integrating third party payment apps. When we
invoke said payment apps we must send over numerous parameters. This CL adds
ToDictionaryValue() for some of the objects that need to be converted into JSON
objects and sent to these payment apps.

Bug: 748556
Change-Id: I323d1966323f2ef3f0fdf9ea7616c162d4c4970c
Reviewed-on: https://chromium-review.googlesource.com/590096
Reviewed-by: mahmadi <mahmadi@chromium.org>
Commit-Queue: Randall Raymond <rayraymond@google.com>
Cr-Commit-Position: refs/heads/master@{#490521}
[modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/payments/payment_request.cc
[modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/payments/payment_request_unittest.cc
[modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/public/payments/payment_request.h

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/581d1dd33208f786dc37fe13bae2afb08d7dd7ca

commit 581d1dd33208f786dc37fe13bae2afb08d7dd7ca
Author: Randall Raymond <rayraymond@google.com>
Date: Tue Aug 01 14:07:57 2017

[Payment Request] Creates IOSPaymentInstrumentFinder class to get Payment App details

This new class is used to find and validate the payment apps that can handle a
a set of url payment method identifiers. In the short term, iOS will be
working under the assumption that there is only one payment app that can
handle a specified payment method. This however will change in the long
run to match Android/Desktop implementations such that any number of
payment apps can handle a payment method identifier as specified by payment
method manifest.

Most of the unittests and parsing are based off of the parsing code originally
written here:

https://cs.chromium.org/chromium/src/components/payments/content/utility/payment_manifest_parser.cc?rcl=6a53ba2305e2d0196d8f46f8590e0ad1fa45d636
This is another component of this CL that for the short term works fine but in
the long term will need to be refactored to avoid code duplication.

Bug: 748556
Change-Id: Ib0ce3be91830555cb9a3e1fc919d98b6ad9898f4
Reviewed-on: https://chromium-review.googlesource.com/582494
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Ryan Sturm <ryansturm@chromium.org>
Reviewed-by: Scott Little <sclittle@chromium.org>
Reviewed-by: mahmadi <mahmadi@chromium.org>
Reviewed-by: Rouslan Solomakhin <rouslan@chromium.org>
Reviewed-by: Mathieu Perreault <mathp@chromium.org>
Commit-Queue: Randall Raymond <rayraymond@google.com>
Cr-Commit-Position: refs/heads/master@{#490983}
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/BUILD.gn
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/DEPS
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/android/payment_manifest_downloader_android.h
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/BUILD.gn
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/DEPS
[rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader.cc
[rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader.h
[rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader_unittest.cc
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/BUILD.gn
[modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument.mm
[add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder.h
[add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder.mm
[add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder_unittest.mm

Project Member

Comment 6 by bugdroid1@chromium.org, Aug 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad

commit 6a85ba0ab73e0d91e2f791defba339dcf7cc59ad
Author: Randall Raymond <rayraymond@google.com>
Date: Fri Aug 04 23:11:54 2017

[Payment Request] Setup before adding UI for Payment Request Native Apps

This CL adds some necessary cleanup and setup before adding the UI for
integrating native apps in Payment Request.

1) Adds AlicePay as a testable payment method
2) Ensures that the payment app icon is of the right dimensions
3) Correctly gets the payment app icon if the source path is relative to the
web app manifest URL
4) Gives the IOSPaymentInstrumentFinder class the ability to search for multiple
payment apps per payment method
5) Changes all instances of "std::string" for url payment method identifiers to
GURLs.

TBR=mahmadi@chromium.org

Bug: 748556
Change-Id: I02c9ed4f670fb9cbf1638a63c950aab0d4b0761e
Reviewed-on: https://chromium-review.googlesource.com/592851
Commit-Queue: Randall Raymond <rayraymond@google.com>
Reviewed-by: Mathieu Perreault <mathp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492165}
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/chrome/browser/ui/views/payments/payment_request_browsertest.cc
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/chrome/test/BUILD.gn
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/BUILD.gn
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/payment_request_spec.cc
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/payment_request_spec.h
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/core/payment_request_data_util.cc
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/core/payment_request_data_util.h
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/BUILD.gn
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument.mm
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder.h
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder.mm
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder_unittest.mm
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/payment_request.h
[modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/payment_request_unittest.mm

Project Member

Comment 7 by bugdroid1@chromium.org, Aug 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59766ac083f4270500c1d5df7abaf225356f7708

commit 59766ac083f4270500c1d5df7abaf225356f7708
Author: Randall Raymond <rayraymond@google.com>
Date: Wed Aug 09 16:28:58 2017

[Payment Request] UI for iOS Payment Request Native Apps

This CL puts together all the UI requirements for displaying native apps for
users on Payment Request:

1) Shows a spinner in Payment Request UI until all payment methods are loaded
2) Populates the payment method page with both autofill payment instruments and
iOS payment instruments
3) Displays the appropriate icon if the instrument is an iOS payment instrument.
4) Adds a flag such that native payment app UI is only visible when this flag
is enabled.

Bug: 748556
Change-Id: Ie94db646af5c115bbc3f5a67edfcfaf1be056f60
Reviewed-on: https://chromium-review.googlesource.com/602500
Commit-Queue: Randall Raymond <rayraymond@google.com>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Reviewed-by: Mathieu Perreault <mathp@chromium.org>
Reviewed-by: mahmadi <mahmadi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493013}
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/components/payments/core/features.cc
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/components/payments/core/features.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/about_flags.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ios_chrome_flag_descriptions.cc
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ios_chrome_flag_descriptions.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/ios_payment_instrument.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request_unittest.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/test_payment_request.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/test_payment_request.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/BUILD.gn
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_coordinator.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_coordinator.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_manager.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_mediator.mm
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_view_controller.h
[modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_view_controller.mm

Project Member

Comment 8 by bugdroid1@chromium.org, Aug 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/80a001ccc8803cb3bc4615c740563621b000a1bd

commit 80a001ccc8803cb3bc4615c740563621b000a1bd
Author: Randall Raymond <rayraymond@google.com>
Date: Wed Aug 09 20:31:00 2017

[Payment Request] Does not reset url method identifiers if native apps flag is off

This small change makes it so that the url payment method identifiers vector
in PaymentRequest is not reset if WebPaymentNativeApps flag is set to false.
This is important so that tests that do not need the WebPaymentsNativeApps flag
do not incorrectly break.

Bug: 748556
Change-Id: I68c1cc1bef446e8766f25fd7413d135cb8180993
Reviewed-on: https://chromium-review.googlesource.com/609219
Reviewed-by: mahmadi <mahmadi@chromium.org>
Commit-Queue: Randall Raymond <rayraymond@google.com>
Cr-Commit-Position: refs/heads/master@{#493126}
[modify] https://crrev.com/80a001ccc8803cb3bc4615c740563621b000a1bd/ios/chrome/browser/payments/payment_request.mm
[modify] https://crrev.com/80a001ccc8803cb3bc4615c740563621b000a1bd/ios/chrome/browser/ui/payments/payment_request_manager.mm

Project Member

Comment 9 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/784b24f244613c5964bdffcac8c49dbc75c63472

commit 784b24f244613c5964bdffcac8c49dbc75c63472
Author: Randall Raymond <rayraymond@google.com>
Date: Thu Aug 10 22:52:31 2017

[Payment Request] Revert Itunes JSON Request class

This class is no longer needed anymore. IOS Payment App details are now
being parsed from the Web App Manifest rather than the response returned
from using the iTunes Search API.

Bug: 748556
Change-Id: Ib5ebc89cc22d259fcc6a20831c417b27eb12279d
Reviewed-on: https://chromium-review.googlesource.com/609320
Reviewed-by: mahmadi (Moe) <mahmadi@chromium.org>
Commit-Queue: Randall Raymond <rayraymond@google.com>
Cr-Commit-Position: refs/heads/master@{#493579}
[modify] https://crrev.com/784b24f244613c5964bdffcac8c49dbc75c63472/ios/chrome/browser/payments/BUILD.gn
[delete] https://crrev.com/bd3df550c43a23c45e2b7381a564447655739dd7/ios/chrome/browser/payments/itunes_json_request.cc
[delete] https://crrev.com/bd3df550c43a23c45e2b7381a564447655739dd7/ios/chrome/browser/payments/itunes_json_request.h

Project Member

Comment 10 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d057ba0b9d1c83848eea1527231c41bfeb008893

commit d057ba0b9d1c83848eea1527231c41bfeb008893
Author: Randall Raymond <rayraymond@google.com>
Date: Fri Aug 11 16:11:41 2017

[Payment Request] Makes the link between Payment Request and Third Party Native Apps

This CL creates an IOSPaymentInstrumentLauncher object that launches a third
party iOS payment app and receives the response back from this payment app.
Communication is done via Universal Link where data is passed using the link's
query parameters.

Bug: 748556
Change-Id: Ie4ca21d1f67846174d0f2222ab29390298fff0da
Reviewed-on: https://chromium-review.googlesource.com/598313
Reviewed-by: Mathieu Perreault <mathp@chromium.org>
Reviewed-by: mahmadi (Moe) <mahmadi@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Commit-Queue: Randall Raymond <rayraymond@google.com>
Cr-Commit-Position: refs/heads/master@{#493766}
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/chrome/test/BUILD.gn
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/BUILD.gn
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/DEPS
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/BUILD.gn
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/mock_tab_opener.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/tab_opening.h
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/user_activity_handler.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/BUILD.gn
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters.h
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters.mm
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters_unittest.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/BUILD.gn
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument.h
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_finder.mm
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher.h
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher.mm
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_factory.h
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_factory.mm
[add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_unittest.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_request.h
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper.h
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper_unittest.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/ui/payments/payment_request_manager.mm
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/web/payments/payment_request.cc
[modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/web/public/payments/payment_request.h

Sign in to add a comment