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); |
+}; |