| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 [JavaPackage="org.chromium.payments.mojom"] | |
| 6 module blink.mojom; | |
| 7 | |
| 8 // The shipping address that the browser process provides to the renderer | |
| 9 // process. Built either by the browser or a payment app. | |
| 10 struct PaymentAddress { | |
| 11 // ISO 3166 country code. Two upper case ASCII letters. | |
| 12 string country; | |
| 13 | |
| 14 array<string> address_line; | |
| 15 string region; | |
| 16 string city; | |
| 17 string dependent_locality; | |
| 18 string postal_code; | |
| 19 string sorting_code; | |
| 20 | |
| 21 // Optional shortest ISO 639 language code. Two or three lower case ASCII | |
| 22 // letters. | |
| 23 string language_code; | |
| 24 | |
| 25 // Optional ISO 15924 script code. Four ASCII letters. The first letter is | |
| 26 // upper case; the rest are lower case. | |
| 27 string script_code; | |
| 28 | |
| 29 string organization; | |
| 30 string recipient; | |
| 31 string phone; | |
| 32 }; | |
| 33 | |
| 34 // The currency amount that the renderer provides to the browser process. The | |
| 35 // browser shows the amount in UI and forwards it on to the payment app, if it | |
| 36 // requires the amount. | |
| 37 struct PaymentCurrencyAmount { | |
| 38 // The most common identifiers are three-letter alphabetic codes as defined | |
| 39 // by [ISO4217] (for example, "USD" for US Dollars), however any string of at | |
| 40 // most 2048 characters is considered valid. | |
| 41 string currency; | |
| 42 | |
| 43 // ISO 20022 CurrencyAnd30Amount. Up to 30 total digits. Up to 10 fraction | |
| 44 // digits. Separated by a dot. | |
| 45 string value; | |
| 46 }; | |
| 47 | |
| 48 struct PaymentResponse { | |
| 49 string method_name; | |
| 50 | |
| 51 // Payment method specific JSON string that is built either by the browser or | |
| 52 // a payment app, for example Android Pay. Browser ensures that the string can | |
| 53 // be successfully parsed into base::JSONParser. Renderer parses this string | |
| 54 // via v8::JSON::Parse() and hands off the result to the merchant website. | |
| 55 // There's no one format for this object, so richer types cannot be used. A | |
| 56 // simple example: | |
| 57 // | |
| 58 // {"nameOnCard": "Jon Doe", "pan": "4111 1111 1111 1111"} | |
| 59 string stringified_details; | |
| 60 | |
| 61 PaymentAddress? shipping_address; | |
| 62 string? shipping_option; | |
| 63 string? payer_name; | |
| 64 string? payer_email; | |
| 65 string? payer_phone; | |
| 66 }; | |
| 67 | |
| 68 enum PaymentErrorReason { | |
| 69 UNKNOWN, | |
| 70 USER_CANCEL, | |
| 71 NOT_SUPPORTED | |
| 72 }; | |
| 73 | |
| 74 interface PaymentRequestClient { | |
| 75 OnShippingAddressChange(PaymentAddress address); | |
| 76 OnShippingOptionChange(string shipping_option_id); | |
| 77 OnPaymentResponse(PaymentResponse response); | |
| 78 OnError(PaymentErrorReason error); | |
| 79 OnComplete(); | |
| 80 OnAbort(bool aborted_successfully); | |
| 81 }; | |
| 82 | |
| 83 struct PaymentItem { | |
| 84 string label; | |
| 85 PaymentCurrencyAmount amount; | |
| 86 }; | |
| 87 | |
| 88 struct PaymentShippingOption { | |
| 89 string id; | |
| 90 string label; | |
| 91 PaymentCurrencyAmount amount; | |
| 92 bool selected; | |
| 93 }; | |
| 94 | |
| 95 struct PaymentDetailsModifier { | |
| 96 array<string> supported_methods; | |
| 97 PaymentItem total; | |
| 98 array<PaymentItem> additional_display_items; | |
| 99 }; | |
| 100 | |
| 101 struct PaymentDetails { | |
| 102 PaymentItem total; | |
| 103 array<PaymentItem> display_items; | |
| 104 array<PaymentShippingOption> shipping_options; | |
| 105 array<PaymentDetailsModifier> modifiers; | |
| 106 string error; | |
| 107 }; | |
| 108 | |
| 109 struct PaymentOptions { | |
| 110 bool request_payer_name; | |
| 111 bool request_payer_email; | |
| 112 bool request_payer_phone; | |
| 113 bool request_shipping; | |
| 114 }; | |
| 115 | |
| 116 struct PaymentMethodData { | |
| 117 array<string> supported_methods; | |
| 118 // A JSON string built by the renderer from a JavaScript object that the | |
| 119 // merchant website provides. The renderer uses | |
| 120 // blink::JSONObject::toJSONString() to generate this string. The browser | |
| 121 // parses the string via JSONObject(JsonSanitizer.sanitize(stringified_data)) | |
| 122 // and passes a part of the JSON object to the payment app, for example | |
| 123 // Android Pay. There's no one format for this object, so richer types cannot | |
| 124 // be used. A simple example: | |
| 125 // | |
| 126 // {"gateway": "stripe"} | |
| 127 string stringified_data; | |
| 128 }; | |
| 129 | |
| 130 enum PaymentComplete { | |
| 131 SUCCESS, | |
| 132 FAIL, | |
| 133 UNKNOWN | |
| 134 }; | |
| 135 | |
| 136 interface PaymentRequest { | |
| 137 Init(PaymentRequestClient client, | |
| 138 array<PaymentMethodData> methodData, | |
| 139 PaymentDetails details, | |
| 140 PaymentOptions options); | |
| 141 Show(); | |
| 142 UpdateWith(PaymentDetails details); | |
| 143 Abort(); | |
| 144 Complete(PaymentComplete result); | |
| 145 }; | |
| OLD | NEW |