Chrome 62
PaymentDetailsModifier พร้อมใช้งานแล้ว
ในคำขอการชำระเงิน อาจมีกรณีที่คุณต้องการมอบส่วนลดหรือเรียกเก็บเงินเพิ่มโดยขึ้นอยู่กับวิธีการชำระเงินที่ลูกค้าเลือก
PaymentDetailsModifier คือฟีเจอร์ที่คุณใช้เพื่อดำเนินการนี้ได้
เพิ่มพร็อพเพอร์ตี้ modifiers ลงในอาร์กิวเมนต์ที่ 2 ของคอนสตรัคเตอร์ 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 | ราคารวมหลังจากเพิ่ม additionalDisplayItems |
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' }];
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 พร้อมใช้งานภายใน iframe แล้ว
ตอนนี้คุณเรียก Payment Request API จากภายใน iframe ได้แล้วโดยการเพิ่มแอตทริบิวต์ allowpaymentrequest ลงในองค์ประกอบ iframe
<iframe src="/totally/fake/url" allowpaymentrequest></iframe>
PaymentMethodData รองรับ "basic-card"
อาร์กิวเมนต์แรกสำหรับคอนสตรัคเตอร์ 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 จะระบุช่องที่รอดำเนินการใน UI สำหรับคำขอการชำระเงิน
requestPayerName
ในส่วนตัวเลือกการจัดส่ง (อาร์กิวเมนต์ที่ 3 ของ PaymentRequest) ตอนนี้นักพัฒนาแอปสามารถเพิ่ม requestPayerName เพื่อขอชื่อผู้ชำระเงินแยกจากข้อมูลที่อยู่สำหรับจัดส่งได้แล้ว
requestPayerName ยอมรับค่าบูลีน
shippingType
ในส่วนตัวเลือกการจัดส่ง (อาร์กิวเมนต์ที่ 3 ของ PaymentRequest) ตอนนี้นักพัฒนาแอปสามารถเพิ่ม shippingType เพื่อขอให้ UI แสดง "การนำส่ง" หรือ "การรับสินค้า" แทน "การจัดส่ง" ได้แล้ว
shippingType ยอมรับสตริง shipping (ค่าเริ่มต้น), delivery หรือ
pickup
ฟังก์ชัน Serializer ที่พร้อมใช้งานสำหรับ PaymentResponse และ PaymentAddress
ตอนนี้ออบเจ็กต์ PaymentResponse และออบเจ็กต์ PaymentAddress เป็นแบบจัดเรียงตามลำดับ JSON แล้ว นักพัฒนาแอปสามารถแปลงไฟล์รูปแบบหนึ่งเป็นออบเจ็กต์ JSON ได้โดยเรียกใช้ฟังก์ชัน toJSON() และหลีกเลี่ยงการสร้างฟังก์ชัน toDict() ที่ยุ่งยาก
request.show().then(response => {
let res = response.toJSON();
});
canMakePayment
นอกจากความพร้อมใช้งานของ API แล้ว คุณยังตรวจสอบได้ว่าผู้ใช้มีวิธีการชำระเงินที่ใช้งานอยู่หรือไม่ก่อนที่จะเรียก Payment Request API โปรดทราบว่าตัวเลือกนี้ไม่บังคับเนื่องจากผู้ใช้จะยังเพิ่มวิธีการชำระเงินใหม่ใน UI การชำระเงินได้
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.
});
}