| Index: components/payments/mojom/payment_request.mojom
|
| diff --git a/components/payments/mojom/payment_request.mojom b/components/payments/mojom/payment_request.mojom
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..600838286adf210199a922a77ae0151e83c2dcf3
|
| --- /dev/null
|
| +++ b/components/payments/mojom/payment_request.mojom
|
| @@ -0,0 +1,223 @@
|
| +// 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.payments.mojom"]
|
| +module payments.mojom;
|
| +
|
| +// The shipping address that the browser process provides to the renderer
|
| +// process. Built either by the browser or a payment app.
|
| +struct PaymentAddress {
|
| + // ISO 3166 country code. Two upper case ASCII letters.
|
| + string country;
|
| +
|
| + array<string> address_line;
|
| + string region;
|
| + string city;
|
| + 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 15924 script code. Four ASCII letters. The first letter is
|
| + // upper case; the rest are lower case.
|
| + string script_code;
|
| +
|
| + string organization;
|
| + string recipient;
|
| + string phone;
|
| +};
|
| +
|
| +// 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 PaymentCurrencyAmount {
|
| + // The most common identifiers are three-letter alphabetic codes as defined
|
| + // by [ISO4217] (for example, "USD" for US Dollars), however any string of at
|
| + // most 2048 characters is considered valid.
|
| + string currency;
|
| +
|
| + // ISO 20022 CurrencyAnd30Amount. Up to 30 total digits. Up to 10 fraction
|
| + // digits. Separated by a dot.
|
| + string value;
|
| +
|
| + // currency_system is a URL that indicates the currency system that the
|
| + // currency identifier belongs to. By default, the value is
|
| + // urn:iso:std:iso:4217 indicating that currency is defined by [ISO4217]
|
| + // (for example, USD for US Dollars).
|
| + string currency_system = "urn:iso:std:iso:4217";
|
| +};
|
| +
|
| +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 more specific types cannot be
|
| + // used. A simple example:
|
| + //
|
| + // {"nameOnCard": "Jon Doe", "pan": "4111 1111 1111 1111"}
|
| + string stringified_details;
|
| +
|
| + PaymentAddress? shipping_address;
|
| + string? shipping_option;
|
| + string? payer_name;
|
| + string? payer_email;
|
| + string? payer_phone;
|
| +};
|
| +
|
| +enum PaymentErrorReason {
|
| + UNKNOWN,
|
| + USER_CANCEL,
|
| + NOT_SUPPORTED
|
| +};
|
| +
|
| +enum CanMakePaymentQueryResult {
|
| + CAN_MAKE_PAYMENT,
|
| + CANNOT_MAKE_PAYMENT,
|
| + QUERY_QUOTA_EXCEEDED
|
| +};
|
| +
|
| +interface PaymentRequestClient {
|
| + OnShippingAddressChange(PaymentAddress address);
|
| + OnShippingOptionChange(string shipping_option_id);
|
| + OnPaymentResponse(PaymentResponse response);
|
| + OnError(PaymentErrorReason error);
|
| + OnComplete();
|
| + OnAbort(bool aborted_successfully);
|
| + OnCanMakePayment(CanMakePaymentQueryResult result);
|
| +};
|
| +
|
| +struct PaymentItem {
|
| + string label;
|
| + PaymentCurrencyAmount amount;
|
| + bool pending;
|
| +};
|
| +
|
| +struct PaymentShippingOption {
|
| + string id;
|
| + string label;
|
| + PaymentCurrencyAmount amount;
|
| + bool selected;
|
| +};
|
| +
|
| +enum AndroidPayEnvironment {
|
| + PRODUCTION,
|
| + TEST
|
| +};
|
| +
|
| +enum AndroidPayCardNetwork {
|
| + AMEX,
|
| + DISCOVER,
|
| + MASTERCARD,
|
| + VISA
|
| +};
|
| +
|
| +enum AndroidPayTokenization {
|
| + UNSPECIFIED,
|
| + GATEWAY_TOKEN,
|
| + NETWORK_TOKEN
|
| +};
|
| +
|
| +struct AndroidPayTokenizationParameter {
|
| + string? key;
|
| + string? value;
|
| +};
|
| +
|
| +enum BasicCardNetwork {
|
| + AMEX,
|
| + DINERS,
|
| + DISCOVER,
|
| + JCB,
|
| + MASTERCARD,
|
| + MIR,
|
| + UNIONPAY,
|
| + VISA
|
| +};
|
| +
|
| +enum BasicCardType {
|
| + CREDIT,
|
| + DEBIT,
|
| + PREPAID
|
| +};
|
| +
|
| +struct PaymentMethodData {
|
| + array<string> supported_methods;
|
| +
|
| + // 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 does
|
| + // not parse the string and passes it as-is directly to payment apps. There's
|
| + // no one format for this object, so more specific types cannot be used. A
|
| + // simple example:
|
| + //
|
| + // {"gateway": "stripe"}
|
| + string stringified_data;
|
| +
|
| + // Android Pay specific method data is parsed in the renderer.
|
| + // https://developers.google.com/web/fundamentals/getting-started/primers/payment-request/android-pay
|
| + // TODO(rouslan): Stop parsing Android Pay data. http://crbug.com/620173
|
| + AndroidPayEnvironment environment;
|
| + string? merchant_name;
|
| + string? merchant_id;
|
| + array<AndroidPayCardNetwork> allowed_card_networks;
|
| + AndroidPayTokenization tokenization_type;
|
| + array<AndroidPayTokenizationParameter> parameters;
|
| + // Value of 0 means the merchant did not specify or it was an invalid value.
|
| + int32 min_google_play_services_version;
|
| +
|
| + // Basic card specific method data is parsed in the renderer.
|
| + array<BasicCardNetwork> supported_networks;
|
| + array<BasicCardType> supported_types;
|
| +};
|
| +
|
| +struct PaymentDetailsModifier {
|
| + PaymentItem? total;
|
| + array<PaymentItem> additional_display_items;
|
| + PaymentMethodData method_data;
|
| +};
|
| +
|
| +struct PaymentDetails {
|
| + PaymentItem? total;
|
| + array<PaymentItem> display_items;
|
| + array<PaymentShippingOption> shipping_options;
|
| + array<PaymentDetailsModifier> modifiers;
|
| + string error = "";
|
| +};
|
| +
|
| +enum PaymentShippingType {
|
| + SHIPPING,
|
| + DELIVERY,
|
| + PICKUP
|
| +};
|
| +
|
| +struct PaymentOptions {
|
| + bool request_payer_name;
|
| + bool request_payer_email;
|
| + bool request_payer_phone;
|
| + bool request_shipping;
|
| + PaymentShippingType shipping_type;
|
| +};
|
| +
|
| +enum PaymentComplete {
|
| + SUCCESS,
|
| + FAIL,
|
| + UNKNOWN
|
| +};
|
| +
|
| +interface PaymentRequest {
|
| + Init(PaymentRequestClient client,
|
| + array<PaymentMethodData> method_data,
|
| + PaymentDetails details,
|
| + PaymentOptions options);
|
| + Show();
|
| + UpdateWith(PaymentDetails details);
|
| + Abort();
|
| + Complete(PaymentComplete result);
|
| + CanMakePayment();
|
| +};
|
|
|