blob: 9b4cb7b6bb80088ccadc22b9802e74bc6b928bd3 [file] [log] [blame]
// 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 blink.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 15924 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);
};