Хром 62
PaymentDetailsModifier теперь доступен
В запросе на оплату бывают случаи, когда вы хотите предоставить скидку или дополнительную плату в зависимости от способа оплаты, выбранного клиентом. PaymentDetailsModifier
— это функция, которую вы можете использовать для достижения этого.
Добавьте свойство modifiers
ко второму аргументу конструктора PaymentRequest
вместе с массивом объектов PaymentDetailsModifier
, которые представляют собой декларативные правила изменения отображаемых элементов и итоговой суммы в зависимости от выбранного клиентом способа оплаты.
В следующем примере показано, как вы объявляете, что с пользователя взимается комиссия за обработку в размере 3 долларов США за выбор оплаты кредитной картой.
let methods = [{
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['visa', 'mastercard']
supportedTypes: ['credit', 'debit']
}
}];
let details = {
displayItems: [{
label: 'T-shirt',
amount: { currency: 'USD', value: '68.00' }
}],
total: {
label: 'Total price',
amount: { currency: 'USD', value: '68.00' }
},
modifiers: [{
supportedMethods: 'basic-card',
data: {
supportedTypes: ['credit']
},
additionalDisplayItems: [{
label: 'Processing fee',
amount: { currency: 'USD', value: '3.00' }
}],
total: {
label: 'Credit card price',
amount: {currency: ‘USD’, value: ‘71.00’}}
}]
};
let options = {};
let request = new PaymentRequest(methods, details, options);
На листе запроса платежа, как только пользователь выбирает платеж по кредитной карте, он увидит дополнительный элемент под названием «Комиссия за обработку» с комиссией в размере 3 долларов США и общей стоимостью 71,00 долларов США.
PaymentDetailsModifier
содержит следующие параметры:
Имя свойства | |
---|---|
supportedMethods | Укажите, к какому способу оплаты применяется это правило. | additionalDisplayItems | Дополнительные экспонаты, на которые вы хотели бы добавить скидки или надбавки к цене. |
total | Общая стоимость после добавления дополнительных элементов DisplayItems. |
data | Для оплаты basic-card это будет использоваться как способ фильтрации определенных типов карт с supportedTypes . В противном случае использование этого параметра зависит от способа оплаты (платежного приложения). См. документацию, предоставляемую каждым способом оплаты. |
Когда есть варианты доставки, все становится немного сложнее, потому что общая стоимость modifiers
не может быть статичной и требует динамического изменения.
Чтобы добиться этого, вам нужно будет изменить additionalDisplayItems
и total
свойства modifiers
при событии shippingaddresschange
и shippingoptionchange
так же, как вы это делаете со свойством displayItems
объекта PaymentDetails
.
Свойство supportedMethods теперь принимает строку
Свойство supportedMethods
в объекте PaymentMethodData
(первый аргумент конструктора PaymentRequest
) принимало массив строк, указывающий способ оплаты. Теперь оно принимает одну строку в качестве аргумента.
Обратите внимание, что указание массива пока продолжит работать.
Старый - пока работает.
var methodData = [{ supportedMethods: ['basic-card'], data: { supportedNetworks: ['visa', 'mastercard', 'amex', 'jcb', 'diners', 'discover', 'mir', 'unionpay'] } }, { supportedMethods: ['https://bobpay.xyz'] }];
Новое - новый путь.
var methodData = [{ supportedMethods: 'basic-card', data: { supportedNetworks: ['visa', 'mastercard', 'amex', 'jcb', 'diners', 'discover', 'mir', 'unionpay'] } }, { supportedMethods: 'https://bobpay.xyz' }];
Хром 61
Поддерживаемые типы в базовой карте доступны
Если supportedMethods
имеет значение « basic-card
», теперь можно указать supportedTypes
, чтобы указать, какие типы карт поддерживаются: « credit
», « debit
» и « prepaid
».
var methodData = [{
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['visa', 'mastercard', 'amex', 'jcb',
'diners', 'discover', 'mir', 'unionpay']
supportedTypes: ['credit', 'debit', 'prepaid']
}
}];
Обязательно дважды проверьте тип карты в вашем платежном шлюзе, так как эта фильтрация может работать некорректно в зависимости от того, откуда она была выпущена.
Хром 57
PaymentRequest теперь доступен внутри iframe
API запроса платежа теперь можно вызывать из iframe
, добавив атрибут allowpaymentrequest
к элементу iframe
.
<iframe src="/totally/fake/url" allowpaymentrequest></iframe>
PaymentMethodData поддерживает «базовую карту»
Первый аргумент конструктора PaymentRequest()
— массив данных способа оплаты. Формат PaymentMethodData
был изменен в этом выпуске.
Старый - пока работает.
var methodData = [{ supportedMethods: ['visa', 'mastercard', 'amex', 'jcb'] }]; var request = new PaymentRequest(methodData, details, options);
Новое - новая структура.
var methodData = [{ supportedMethods: ['basic-card'], data: { supportedNetworks: ['visa', 'mastercard', 'amex', 'jcb', 'diners', 'discover', 'mir', 'unionpay'] } }]; var request = new PaymentRequest(methodData, details, options);
Формат свойства data
зависит от значения в supportedMethods
и основан на спецификации Basic Card . Обратите внимание, что спецификация включает supportedTypes
, который принимает credit
, debit
или prepaid
, но Chrome 57 игнорирует это свойство и обрабатывает любые значения в supoprtedNetworks
как кредитные карты.
var methodData = [{
supportedMethods: ['basic-card'],
data: {
supportedNetworks: ['visa', 'mastercard', 'amex', 'jcb',
'diners', 'discover', 'mir', 'unionpay'],
supportedTypes: ['credit'] <= not available
}
}];
Хром 56
в ожидании
Как часть информации о платежном элементе , разработчики могут добавить pending
, чтобы указать, что цена еще не полностью определена. Поле pending
принимает логическое значение.
{
label: "State tax",
amount: { currency: "USD", value : "5.00" },
pending: true
},
Это обычно используется для отображения позиций, таких как сумма доставки или налога, которые зависят от выбора адреса доставки или вариантов доставки. Chrome указывает поля ожидания в пользовательском интерфейсе для запроса на оплату.
запросPayerName
В качестве части параметра доставки (третий аргумент PaymentRequest
) разработчики теперь могут добавлять requestPayerName
для запроса имени плательщика отдельно от информации об адресе доставки. requestPayerName
принимает логическое значение.
shippingType
В качестве части параметра доставки (третий аргумент PaymentRequest
) разработчики теперь могут добавлять shippingType
, чтобы запросить, чтобы пользовательский интерфейс отображал «delivery» или «pickup» вместо «shipping». shippingType
принимает строки shipping
(по умолчанию), delivery
или pickup
.


Функции сериализатора, доступные для PaymentResponse и PaymentAddress
Объект PaymentResponse и объект PaymentAddress
теперь сериализуемы в формате JSON. Разработчики могут преобразовать один объект в объект JSON, вызвав функцию toJSON()
, и избежать создания громоздких функций toDict()
.
request.show().then(response => {
let res = response.toJSON();
});
canMakePayment
В дополнение к доступности API вы можете проверить, есть ли у пользователя активный способ оплаты, прежде чем вызывать API запроса оплаты. Помните, что это необязательно, так как пользователи все равно могут добавить новый способ оплаты в платежном интерфейсе.
let request = new PaymentRequest(methods, details, options);
if (request.canMakePayment) {
request.canMakePayment().then(result => {
if (result) {
// Payment methods are available.
} else {
// Payment methods are not available, but users can still add
// a new payment method in Payment UI.
}
}).catch(error => {
// Unable to determine.
});
}