کروم 62
PaymentDetailsModifier اکنون در دسترس است
در درخواست پرداخت، مواردی وجود دارد که بسته به روش پرداختی که مشتری انتخاب می کند، می خواهید تخفیف یا هزینه اضافی ارائه دهید. PaymentDetailsModifier
قابلیتی است که می توانید برای رسیدن به این هدف از آن استفاده کنید.
ویژگی modifiers
به آرگومان دوم سازنده PaymentRequest
به همراه آرایهای از شی PaymentDetailsModifier
اضافه کنید که قوانینی است که نشان میدهد چگونه آیتمهای نمایشی و کل باید بسته به روش پرداخت انتخابی مشتری اصلاح شوند.
مثال زیر نشان میدهد که چگونه اعلام میکنید که برای انتخاب پرداخت کارت اعتباری از کاربر ۳ دلار هزینه پردازش دریافت میشود.
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 | قیمت کل پس از افزودن آیتم های اضافیDisplay. |
data | برای پرداخت basic-card ، از این به عنوان راهی برای فیلتر کردن انواع کارت های خاص با supportedTypes استفاده می شود. در غیر این صورت استفاده از این پارامتر به روش پرداخت (اپلیکیشن پرداخت) بستگی دارد. به اسنادی که هر روش پرداخت ارائه می دهد مراجعه کنید. |
وقتی گزینه های حمل و نقل وجود دارد، همه چیز کمی مشکل می شود، زیرا قیمت کل modifiers
نمی تواند ثابت باشد و نیاز به اصلاح پویا دارد.
برای دستیابی به این هدف، در هنگام shippingaddresschange
و shippingoptionchange
additionalDisplayItems
و total
آنها modifiers
میدهید، درست مانند ویژگی 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
supportedTypes در کارت پایه موجود است
هنگامی که 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 اکنون در داخل iframes در دسترس است
اکنون میتوان 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 فیلدهای معلق را در رابط کاربری برای درخواست پرداخت نشان می دهد.
requestPayerName
بهعنوان بخشی از گزینه ارسال (آگومان سوم برای PaymentRequest
)، توسعهدهندگان اکنون میتوانند requestPayerName
اضافه کنند تا نام پرداختکننده را جدا از اطلاعات آدرس حملونقل درخواست کنند. requestPayerName
یک مقدار بولی را می پذیرد.
نوع حمل و نقل
بهعنوان بخشی از گزینه حمل و نقل (آگومان سوم برای PaymentRequest
)، توسعهدهندگان اکنون میتوانند shippingType
اضافه کنند تا درخواست کنند که رابط کاربری به جای «حمل و نقل»، «تحویل» یا «پیکاپ» را نشان دهد. shippingType
رشتههای shipping
(پیشفرض)، delivery
یا pickup
میپذیرد.
توابع سریالساز موجود برای PaymentResponse و PaymentAddress
شی PaymentResponse و شی PaymentAddress
اکنون با JSON قابل سریالسازی هستند. توسعه دهندگان می توانند با فراخوانی تابع toJSON()
یکی را به یک شی JSON تبدیل کنند و از ایجاد توابع دست و پا گیر 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.
});
}