@@ -120,12 +120,6 @@ <h2>
120120 before proceeding along the W3C Recommendation track.
121121 </ p >
122122 < ul >
123- < li >
124- < a data-lt =
125- "PaymentCurrencyAmount.currencySystem "> currencySystem</ a > (see
126- < a href ="https://github.com/w3c/payment-request/issues/617 "> issue
127- 617</ a > ).
128- </ li >
129123 < li data-link-for ="PaymentItem ">
130124 < a > PaymentItem</ a > 's < a > type</ a > member and the
131125 < a > PaymentItemType</ a > enum (see < a href =
@@ -1407,56 +1401,63 @@ <h2>
14071401 dictionary PaymentCurrencyAmount {
14081402 required DOMString currency;
14091403 required DOMString value;
1410- // Note: currencySystem is "at risk" of being removed!
1411- DOMString currencySystem = "urn:iso:std:iso:4217";
14121404 };
14131405 </ pre >
14141406 < p >
14151407 A < a > PaymentCurrencyAmount</ a > dictionary is used to supply monetary
14161408 amounts.
14171409 </ p >
1418- < div class ="issue atrisk ">
1419- < p >
1420- This feature has been marked "< a > at risk</ a > ". If you'd like for this
1421- feature to remain in the specification, please describe your use case
1422- in < a href ="https://github.com/w3c/payment-request/issues/490 "> issue
1423- 490</ a > .
1424- </ p >
1425- < dl >
1426- < dt >
1427- < dfn > currencySystem</ dfn > member
1428- </ dt >
1429- < dd >
1430- A URL that indicates the currency system that the < a > currency</ a >
1431- identifier belongs to. By default, the value is
1432- "< code > urn:iso:std:iso:4217</ code > " indicating that < a > currency</ a >
1433- is defined by [[!ISO4217]] (for example, < code > USD</ code > for US
1434- Dollars).
1435- </ dd >
1436- </ dl >
1437- </ div >
14381410 < dl >
14391411 < dt >
14401412 < dfn > currency</ dfn > member
14411413 </ dt >
14421414 < dd >
14431415 < p >
1444- A string containing a currency identifier. The value of
1445- < a > currency</ a > can be any string that is valid within the currency
1446- system indicated by < a > currencySystem</ a > .
1447- </ p >
1448- < p >
1449- When using [[!ISO4217]], all < a data-cite =
1416+ A [[!ISO4217]] < a data-cite =
14501417 "!ecma-402#sec-iswellformedcurrencycode "> well-formed</ a > 3-letter
1451- alphabetic codes are allowed (i.e., the numeric codes are not
1452- supported). Their canonical form is upper case. However, the set of
1453- combinations of currency code for which localized currency symbols
1454- are available is implementation dependent. Where a localized
1455- currency symbol is not available, a user agent SHOULD use U+00A4
1456- (¤) for formatting. User agents MAY format the display of the
1457- < a > currency</ a > member to adhere to OS conventions (e.g., for
1458- localization purposes).
1418+ alphabetic code (i.e., the numeric codes are not supported). Their
1419+ canonical form is upper case. However, the set of combinations of
1420+ currency code for which localized currency symbols are available is
1421+ implementation dependent. Where a localized currency symbol is not
1422+ available, a user agent SHOULD use U+00A4 (¤) for formatting. User
1423+ agents MAY format the display of the < a > currency</ a > member to
1424+ adhere to OS conventions (e.g., for localization purposes).
14591425 </ p >
1426+ < div class ="note " title =
1427+ "Digital currencies and ISO 4217 currency codes ">
1428+ < p >
1429+ User agents implementing this specification enforce [[ISO4217]]'s
1430+ 3-letter codes format via ECMAScript’s < a data-cite =
1431+ "!ecma-402#sec-iswellformedcurrencycode "> isWellFormedCurrencyCode</ a >
1432+ abstract operation, which is invoked as part of the < a > check and
1433+ canonicalize amount</ a > algorithm. When a code does not adhere to
1434+ the [[ISO4217]] defined format, a < a > RangeError</ a > is thrown.
1435+ </ p >
1436+ < p >
1437+ Current implementations will therefore allow the use of
1438+ well-formed currency codes that are not part of the official
1439+ [[ISO4217]] list (e.g., XBT, XRP, etc.). If the provided code is
1440+ a currency that the browser knows how to display, then an
1441+ implementation will generally display the appropriate currency
1442+ symbol in the user interface (e.g., "USD" is shown as "$", "GBP"
1443+ is "£", and the non-standard "XBT" could be shown as "Ƀ"). When a
1444+ code cannot be matched, the specification recommends browsers
1445+ show a scarab "¤".
1446+ </ p >
1447+ < p >
1448+ Efforts are underway at ISO to account for digital currencies,
1449+ which may result in an update to the [[ISO4217]] registry or an
1450+ entirely new registry. The community expects this will resolve
1451+ ambiguities that have crept in through the use of non-standard
1452+ 3-letter codes; for example, does "BTC" refer to Bitcoin or to a
1453+ future Bhutan currency? At the time of publication, it remains
1454+ unclear what form this evolution will take, or even the time
1455+ frame in which the work will be completed. The W3C Web Payments
1456+ Working Group is liaising with ISO so that, in the future,
1457+ revisions to this specification remain compatible with relevant
1458+ ISO registries.
1459+ </ p >
1460+ </ div >
14601461 </ dd >
14611462 < dt >
14621463 < dfn > value</ dfn > member
@@ -1506,11 +1507,6 @@ <h3>
15061507 steps:
15071508 </ p >
15081509 < ol data-link-for ="PaymentCurrencyAmount ">
1509- < li data-tests =
1510- "PaymentCurrencyAmount/currencySystem-member.https.html "> If
1511- < var > amount</ var > .< a > currencySystem</ a > is not
1512- "< code > urn:iso:std:iso:4217</ code > ", throw a < a > TypeError</ a > .
1513- </ li >
15141510 < li > Let < var > isValidCurrency</ var > be the result of calling
15151511 < a data-cite =
15161512 "!ecma-402#sec-iswellformedcurrencycode "> IsWellFormedCurrencyCode</ a >
@@ -1536,9 +1532,6 @@ <h3>
15361532 steps:
15371533 </ p >
15381534 < ol data-link-for ="PaymentCurrencyAmount ">
1539- < li > If < var > total</ var > .< a > currencySystem</ a > is not
1540- "< code > urn:iso:std:iso:4217</ code > ", terminate this algorithm.
1541- </ li >
15421535 < li >
15431536 < a > Check and canonicalize amount</ a > < var > amount</ var > . Rethrow any
15441537 exceptions.
0 commit comments