-
Notifications
You must be signed in to change notification settings - Fork 0
5. Anbieten von Rabatten
Um den oder die Rabatte integrieren zu können, muss lediglich die Variable paymentDetails angepasst werden. Im einfachsten Fall wäre dies eine Änderung von
var paymentDetails = {
total: {label: 'Beispielprodukt', amount: {currency: 'EUR', value: '49.99'}}
};
auf
var paymentDetails = {
total: {label: 'Gesamtsumme', amount: {currency: 'EUR', value: '35.00'}},
displayItems: [
{
label: 'Beispielprodukt',
amount: {currency: 'EUR', value: '49.99'},
},
{
label: 'Sonderrabatt SALE',
amount: {currency: 'EUR', value: '-14.99'},
}]
};
Wie man auch hier wieder sieht, nimmt der PaymentRequest selbst KEINE Berechnungen vor. Wenn etwas berechnet wird, geschieht dies IMMER manuell.
Die folgenden Änderungen im UI dienen dazu, die Rabattierung des Produktes hervorzuheben. Dazu folgenden Code zwischen den Tags <style> und </style> einfügen:
.sale {
color: red;
}
Nun die Zeile zwischen <div class="produkt produkt_shadow" id="produkt"> und </div>:
<strong class="produkt_preis">nur 49,99 €</strong>
durch folgende ersetzen:
<strong class="produkt_preis"><span class="sale">nur 35.00 €</span></strong>
Ebenso die Zeile zwischen <div class="produkt_bought" id="produkt_bought"> und </div>:
<p>Sie haben das Beispielprodukt erfolgreich für 49,99 € <span id="express_selected">(+ 14,99 € Expressversand)</span> gekauft.</p>
durch folgende ersetzen:
<p>Sie haben das Beispielprodukt erfolgreich für 35,00 € <span id="express_selected">(+ 14,99 € Expressversand)</span> gekauft.</p>
Nun noch in der Funktion updateDetails() die details.total.amount.value beim Standardversand und Expressversand anpassen. Dazu beim Standardversand die Value auf details.total.amount.value = '35.00'; setzen und beim Expressversand die Value auf details.total.amount.value = '49.99'; setzen.
Die fertige Methode sieht dann so aus:
function updateDetails(details, shippingOption, resolve, reject) {
if (shippingOption === 'standard') {
selectedShippingOption = details.shippingOptions[0];
otherShippingOption = details.shippingOptions[1];
details.total.amount.value = '35.00';
} else if (shippingOption === 'express') {
selectedShippingOption = details.shippingOptions[1];
otherShippingOption = details.shippingOptions[0];
details.total.amount.value = '49.99';
} else {
reject('Unbekannte Versandart \'' + shippingOption + '\'');
return;
}
selectedShippingOption.selected = true;
otherShippingOption.selected = false;
details.displayItems.splice(2, 1, selectedShippingOption);
resolve(details);
}