PASS If details.id is missing, assign an identifier PASS If details.id is missing, assign a unique identifier PASS If the same id is provided, then use it PASS Use ids even if they are strange PASS Use provided request ID PASS If the length of the methodData sequence is zero, then throw a TypeError PASS If payment method is duplicate, then throw a RangeError PASS Modifier method data must be JSON-serializable object PASS Rethrow any exceptions of JSON-serializing paymentMethod.data into a string PASS If details.total.amount.value is not a valid decimal monetary value, then throw a TypeError PASS PaymentDetailsBase members can be 0 length PASS If the first character of details.total.amount.value is U+002D HYPHEN-MINUS, then throw a TypeError PASS For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value, then throw a TypeError PASS Negative values are allowed for displayItems.amount.value, irrespective of total amount PASS it handles high precision currency values without throwing PASS For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value, then throw a TypeError PASS If there is no selected shipping option, then PaymentRequest.shippingOption remains null PASS If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected PASS If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected. PASS If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError PASS Throw when there are duplicate shippingOption ids, even if other values are different PASS Throw TypeError if modifier.total.amount.value is not a valid decimal monetary value PASS If amount.value of additionalDisplayItems is not a valid decimal monetary value, then throw a TypeError PASS Modifier data must be JSON-serializable object (an Array in this case) PASS Modifier data must be JSON-serializable object (an Object in this case) PASS Rethrow any exceptions of JSON-serializing modifier.data PASS Shipping type should be valid PASS PaymentRequest.shippingAddress must initially be null PASS If options.requestShipping is not set, then request.shippingType attribute is null. PASS If options.requestShipping is true, request.shippingType will be options.shippingType.