Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Unified Diff: third_party/WebKit/public/platform/modules/payments/payment_request.mojom

Issue 1753543002: PaymentRequest Mojo bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@interface
Patch Set: haraken@'s + esprehn@'s comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/public/platform/modules/payments/payment_request.mojom
diff --git a/third_party/WebKit/public/platform/modules/payments/payment_request.mojom b/third_party/WebKit/public/platform/modules/payments/payment_request.mojom
new file mode 100644
index 0000000000000000000000000000000000000000..e42dd6d658ea66206dba9e1bbe1c67d18ce43b96
--- /dev/null
+++ b/third_party/WebKit/public/platform/modules/payments/payment_request.mojom
@@ -0,0 +1,105 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[JavaPackage="org.chromium.mojom.payments"]
+module mojom;
+
+// The shipping address that the browser process provides to the renderer
+// process. Built either by the browser or a payment app.
+struct ShippingAddress {
+ // ISO 3166 country code. Two upper case ASCII letters.
+ string region_code;
+
+ array<string> address_line;
+ string administrative_area;
+ string locality;
+ string dependent_locality;
+ string postal_code;
+ string sorting_code;
+
+ // Optional shortest ISO 639 language code. Two or three lower case ASCII
+ // letters.
+ string language_code;
+
+ // Optional ISO 1524 script code. Four ASCII letters. The first letter is
+ // upper case; the rest are lower case.
+ string script_code;
+
+ string organization;
+ string recipient;
+};
+
+struct PaymentResponse {
+ string method_name;
+
+ // Payment method specific JSON string that is built either by the browser or
+ // a payment app, for example Android Pay. Browser ensures that the string can
+ // be successfully parsed into base::JSONParser. Renderer parses this string
+ // via v8::JSON::Parse() and hands off the result to the merchant website.
+ // There's no one format for this object, so richer types cannot be used. A
+ // simple example:
+ //
+ // {"nameOnCard": "Jon Doe", "pan": "4111 1111 1111 1111"}
+ string stringified_details;
+};
+
+interface PaymentRequestClient {
+ OnShippingAddressChange(ShippingAddress address);
+ OnShippingOptionChange(string shipping_option_id);
+ OnPaymentResponse(PaymentResponse response);
+ OnError();
+ OnComplete();
+};
+
+// The currency amount that the renderer provides to the browser process. The
+// browser shows the amount in UI and forwards it on to the payment app, if it
+// requires the amount.
+struct CurrencyAmount {
+ // ISO 4217 currency code. Three upper case ASCII letters.
+ string currency_code;
+
+ // ISO 20022 CurrencyAnd30Amount. Up to 30 total digits. Up to 10 fraction
+ // digits. Separated by a dot.
+ string value;
+};
+
+struct PaymentItem {
+ string id;
+ string label;
+ CurrencyAmount amount;
+};
+
+struct ShippingOption {
+ string id;
+ string label;
+ CurrencyAmount amount;
+};
+
+struct PaymentDetails {
+ array<PaymentItem> items;
+ array<ShippingOption> shipping_options;
+};
+
+struct PaymentOptions {
+ bool request_shipping;
+};
+
+interface PaymentRequest {
+ SetClient(PaymentRequestClient client);
+ Show(array<string> supported_methods,
+ PaymentDetails details,
+ PaymentOptions options,
+ // A JSON string built by the renderer from a JavaScript object that the
+ // merchant website provides. The renderer uses
+ // blink::JSONObject::toJSONString() to generate this string. The browser
+ // parses the string via base::JSONParser and passes a part of the JSON
+ // object to the payment app, for example Android Pay. There's no one
+ // format for this object, so richer types cannot be used. A simple
+ // example:
+ //
+ // {"https://android.com/pay": {"gateway": "stripe"}}
+ string stringified_data);
+ Abort();
+ Complete(bool success);
+};

Powered by Google App Engine
This is Rietveld 408576698