Chrome 62
PaymentDetailsModifier अब उपलब्ध है
पेमेंट के अनुरोध में, कुछ मामलों में ग्राहक को पेमेंट के चुने गए तरीके के आधार पर छूट या अतिरिक्त शुल्क देना होता है.
PaymentDetailsModifier
की मदद से, ऐसा किया जा सकता है.
PaymentDetailsModifier
ऑब्जेक्ट की कलेक्शन के साथ PaymentRequest
कंस्ट्रक्टर के दूसरे तर्क में modifiers
प्रॉपर्टी जोड़ें. यह जानकारी देने वाले नियम हैं कि ग्राहक की पसंद के पेमेंट के तरीके के आधार पर, डिसप्ले आइटम और कुल वैल्यू को कैसे बदला जाना चाहिए.
यहां दिए गए उदाहरण में बताया गया है कि क्रेडिट कार्ड से पेमेंट चुनने के लिए, उपयोगकर्ता से तीन डॉलर की प्रोसेसिंग फ़ीस ली जाने का एलान कैसे किया जाता है.
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 | अतिरिक्त डिसप्ले आइटम जोड़ने के बाद कुल कीमत. |
data | basic-card पेमेंट के लिए, इसका इस्तेमाल supportedTypes के साथ कार्ड के खास टाइप को फ़िल्टर करने के लिए किया जाएगा. ऐसा न होने पर, इस पैरामीटर का इस्तेमाल, पेमेंट के तरीके (पेमेंट ऐप्लिकेशन) पर निर्भर करता है. पैसे चुकाने के हर तरीके के लिए दिए गए दस्तावेज़ देखें. |
शिपिंग के विकल्प मौजूद होने पर, चीज़ें मुश्किल हो जाती हैं. इसकी वजह यह है कि modifiers
की कुल कीमत में बदलाव नहीं किया जा सकता और इसमें डाइनैमिक तरीके से बदलाव करने की ज़रूरत होती है.
ऐसा करने के लिए, आपको shippingaddresschange
और shippingoptionchange
इवेंट के आधार पर, modifiers
प्रॉपर्टी के additionalDisplayItems
और total
में बदलाव करना होगा. ठीक उसी तरह जैसे PaymentDetails
ऑब्जेक्ट की displayItems
प्रॉपर्टी में बदलाव किया जाता है.
supportedMethods प्रॉपर्टी में अब स्ट्रिंग का इस्तेमाल किया जा सकता है
PaymentMethodData
ऑब्जेक्ट में supportedMethods
प्रॉपर्टी (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' }];
Chrome 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']
}
}];
अपने पेमेंट गेटवे से कार्ड टाइप की दोबारा जांच करना न भूलें. ऐसा इसलिए, क्योंकि यह फ़िल्टर करने की सुविधा, कार्ड के सोर्स के हिसाब से ठीक से काम नहीं कर सकती.
Chrome 57
PaymentRequest अब iframes में उपलब्ध है
पेमेंट का अनुरोध करने वाले एपीआई को अब iframe
एलिमेंट में से कॉल किया जा सकता है. इसके लिए, iframe
एलिमेंट में allowpaymentrequest
एट्रिब्यूट जोड़ें.
<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
में दी गई वैल्यू पर निर्भर करता है. यह बुनियादी कार्ड के स्पेसिफ़िकेशन पर आधारित होता है. ध्यान दें कि खास जानकारी में 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
}
}];
Chrome 56
मंज़ूरी बाकी है
पेमेंट आइटम की जानकारी के हिस्से के तौर पर, डेवलपर pending
जोड़ सकते हैं. इससे यह पता चलता है कि कीमत अभी पूरी तरह से तय नहीं हुई है. pending
फ़ील्ड में बूलियन वैल्यू डाली जा सकती है.
{
label: "State tax",
amount: { currency: "USD", value : "5.00" },
pending: true
},
इसका इस्तेमाल आम तौर पर, शिपिंग या टैक्स की रकम जैसे लाइन आइटम दिखाने के लिए किया जाता है. ये आइटम, शिपिंग के पते या शिपिंग के विकल्पों के हिसाब से तय होते हैं. Chrome, पेमेंट के अनुरोध के लिए यूज़र इंटरफ़ेस में, ऐसे फ़ील्ड दिखाता है जिन्हें भरना बाकी है.
requestPayerName
शिपिंग के विकल्प (PaymentRequest
का तीसरा आर्ग्युमेंट) के तहत, डेवलपर अब requestPayerName
जोड़ सकते हैं. इससे, पैसे चुकाने वाले व्यक्ति के नाम की जानकारी, शिपिंग के पते की जानकारी से अलग से मांगी जा सकती है.
requestPayerName
, बूलियन वैल्यू स्वीकार करता है.
shippingType
शिपिंग के विकल्प (PaymentRequest
में तीसरा तर्क) के हिस्से के तौर पर, डेवलपर अब shippingType
को अपने अनुरोध में जोड़ सकते हैं. इससे डेवलपर, यूज़र इंटरफ़ेस (यूआई) में "शिपिंग" के बजाय "डिलीवरी" या "पिकअप" दिखाने का अनुरोध कर सकते हैं.
shippingType
, shipping
(डिफ़ॉल्ट), delivery
या
pickup
स्ट्रिंग स्वीकार करता है.
PaymentResponse और PaymentAddress के लिए उपलब्ध Serializer फ़ंक्शन
PaymentResponse ऑब्जेक्ट
और PaymentAddress
ऑब्जेक्ट को अब JSON क्रम में लगाया जा सकता है. डेवलपर, toJSON()
फ़ंक्शन को कॉल करके, किसी एक को JSON ऑब्जेक्ट में बदल सकते हैं. साथ ही, वे मुश्किल toDict()
फ़ंक्शन बनाने से बच सकते हैं.
request.show().then(response => {
let res = response.toJSON();
});
canMakePayment
एपीआई की उपलब्धता के अलावा, पेमेंट रिक्वेस्ट एपीआई का इस्तेमाल करने से पहले, यह भी पता किया जा सकता है कि उपयोगकर्ता के पास पेमेंट का कोई मौजूदा तरीका है या नहीं. ध्यान रखें कि यह ज़रूरी नहीं है, क्योंकि उपयोगकर्ता अब भी पेमेंट यूज़र इंटरफ़ेस (यूआई) पर, पेमेंट का नया तरीका जोड़ सकते हैं.
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.
});
}