Dieser Artikel richtet sich an Entwickler, die Paketshops mit der Methode GetShipAdvise abrufen möchten.
Hinweis: Dies soll nur ein einfaches Beispiel zeigen.
Sie müssen Ihre eigene Geschäftslogik und Fehlerbehandlung anwenden.
Inhalt dieses Artikels:
- Die GetDropPoints-Methode
- Daten für einen Paketshop abrufen, wenn der Benutzer ein Produkt auswählt
- Alle Paketshop-Daten auf einmal abrufen
- Eigene Filialen als Paketshops verwenden
-
Die GetDropPoints-Methode
Diese Methode erfordert, dass das Datenobjekt eine Produkt-ID, wie viele Paketshops abgerufen werden sollen, Services und die Empfängeradresse ("Kind": 1) enthält.
Hinweis: ResultCount ist min 1 - max 10
Beispiel für das Datenobjekt
{
"ProdCSID": 5748,
"ResultCount": 10,
"Addresses": [
{
"Kind": 1,
"Name1": "John Doe",
"Street1": "Test address 1",
"PostCode": "8210",
"City": "Aarhus V",
"CountryCode": "DK"
}
],
"Services": [
676008
]
}
Daten für einen Paketshop abrufen, wenn der Benutzer ein Produkt auswählt
Dieser Ansatz wird verwendet, wenn Sie Paketshopinformationen nur anfordern möchten, nachdem der Benutzer eines der von der GetShipAdvise-Methode zurückgegebenen Produkte ausgewählt hat.
Beispiel einer Antwort der GetDropPoints-Methode, wenn sie mit einer Funktion ähnlich der untenstehenden aufgerufen wird.
Die Methode nimmt das vom Kunden ausgewählte Frachtprodukt und die Versanddaten.
Dann ruft sie die GetDropPoint-Methode auf und fügt die Antwort dem Produktobjekt hinzu.
const getDropPointData = async (product, shipmentData) => {
let data = {
ProdCSID: product.ProdCSID,
ResultCount: 10,
Addresses: [shipmentData.Addresses.find(x = x.Kind == 1)]
}
if (product.Services) {
request["Services"] = product.Services.map((x) = x.serviceid)
}
let { DropPoints } = await GetDropPoints(data)
product.DropPoints = DropPoints
return product
}
Alle Paketshop-Daten auf einmal abrufen
Die Methode GetShipAdvise ruft die GetDropPoints-Methode nicht automatisch auf. Die beiden Methoden müssen kombiniert werden, damit die Antwort von GetShipAdvise Paketshops enthält.
Beispiel der Standardantwort der GetShipAdvise-Methode.
Wie wir sehen, gibt es keine Paketshopdaten am Produkt, aber wir können erkennen, ob ein Produkt dies unterstützt.
Um eine Antwort wie im folgenden Beispiel zu erhalten.
Sie müssen die GetDropPoint-Methode auf den Produkten aufrufen, die Paketshops unterstützen und für die Paketshops zurückgegeben werden sollen, bevor Sie die GetShipAdvise-Antwort zurückgeben.
Hinweis: Einige Produkte können sowohl als Hauszustellung als auch als Paketshop verwendet werden.
In diesem Beispiel haben die Produkte in der CSR-Konfigurationsdatei ein benutzerdefiniertes Feld "isDropPoint", das angibt, ob die GetDropPoint-Methode für sie aufgerufen werden soll oder nicht.
const getProductsWithDropPointData = async (shipmentData) => {
let products = await GetShipAdvise(shipmentData)
let productsWithDropPointSupport = products.Products
.filter(x = x.SupportsDropPoint)
.filter(x = x.CustomFields && x.CustomFields.isDropPoint)
productsWithDropPointSupport.map(async (product) = {
let data = {
ProdCSID: product.ProdCSID,
ResultCount: 10,
Addresses: [shipmentData.Addresses.find(x = x.Kind == 1)]
}
if (product.Services) {
request["Services"] = product.Services.map((x) = x.serviceid)
}
let { DropPoints } = await GetDropPoints(data)
product.DropPoints = DropPoints
})
return products
}
Eigene Filialen als Paketshops verwenden
Damit die GetDropPoint-Methode Ihre Filialen als Paketshops zurückgeben kann,
müssen Sie die folgende Vorlage ausfüllen. Wenn mehr als ein Paketshop benötigt wird, fügen Sie ein weiteres <DropPointData>-Element hinzu.
Wenn Sie keine Längen- und Breitengrade haben, verwenden Sie 0.01 als Wert für beide.
<MapRefX>0.01</MapRefX>
<MapRefY>0.01</MapRefY>MapRefX steht für die Länge und MapRefY für die Breite.
Beispiel mit allen Feldern
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDropPointData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DropPointData>
<OriginalId>Test01</OriginalId>
<RoutingCode></RoutingCode>
<Depot/>
<Name1>nShift A/S</Name1>
<Name2/>
<Address1>Bredskifte Allé 11</Address1>
<Address2/>
<PostalCode>8210</PostalCode>
<City>Aarhus V</City>
<Region/>
<County/>
<District/>
<Province/>
<State/>
<CountryCode>DK</CountryCode>
<Contact>Test Contact</Contact>
<Phone>11 22 33 44</Phone>
<Email></Email>
<Fax/>
<MapRefX>10.135106</MapRefX>
<MapRefY>56.173088</MapRefY>
<OpeningHoursList>
<OpeningHours>
<Day>Monday</Day>
<Open>09:00</Open>
<Close>21:00</Close>
</OpeningHours>
<OpeningHours>
<Day>Tuesday</Day>
<Open>05:00</Open>
<Close>15:30</Close>
</OpeningHours>
</OpeningHoursList>
</DropPointData>
</ArrayOfDropPointData>Klicken Sie hier, um die Vorlage herunterzuladen.
Eine etwas kompaktere Version.
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDropPointData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DropPointData>
<OriginalId>01</OriginalId>
<Name1>nShift A/S</Name1>
<Address1>Bredskifte Allé 11</Address1>
<PostalCode>8210</PostalCode>
<City>Aarhus V</City>
<CountryCode>DK</CountryCode>
<Contact>Test Contact</Contact>
<Phone>11 22 33 44</Phone>
<MapRefX>10.132236331701279</MapRefX>
<MapRefY>56.179632447054956</MapRefY>
</DropPointData>
</ArrayOfDropPointData>
Klicken Sie hier, um die Vorlage herunterzuladen.
Hinweis: Mehrere Dateien werden unterstützt, und jede Datei sollte nicht mehr als 1000 Paketshops enthalten.
Die Datei muss an den lokalen Kundenservice gesendet werden, dieser erstellt ein benutzerdefiniertes Produkt und fügt die Liste hinzu.
Wenn Sie einen speziellen Namen dafür benötigen, z.B. "Collect @ Store", müssen Sie dies in der E-Mail angeben.
Shipping Rules
Die Konfigurationsdatei, die die für die GetShipAdvise-Methode in diesem Artikel verwendeten Produkte enthält.
<?xml version="1.0" encoding="utf-8"?>
<CSR carriervalidation="0" defaultservicelevel="Service_Level_Configured_For_SA">
<Prices>
<Price name="fixed59" currency="DKK">
<Exceptions>
<Exception price="5900">
<ValidationRules>
</ValidationRules>
</Exception>
</Exceptions>
<Fees>
<Fee price="1900">
<ValidationRules>
</ValidationRules>
</Fee>
</Fees>
</Price>
<Price name="fixed39" currency="DKK">
<Exceptions>
<Exception price="3900">
<ValidationRules>
</ValidationRules>
</Exception>
</Exceptions>
</Price>
</Prices>
<ServiceLevels>
<ServiceLevel name="Service_Level_Configured_For_SA">
<Products>
<Product adviseprice="fixed39" name="GLS DK - Pakkeshop med Drop Points" conceptid="1551">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Pickup Point" servicecode="P1"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="DK" field="fld_AdrCountry"/>
</ValidationRules>
</Product>
<Product adviseprice="fixed59" name="GLS DK - Normal erhvervspakke" conceptid="113">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Home Delivery" servicecode="P2"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="DK" field="fld_AdrCountry"/>
</ValidationRules>
<Services>
<Service serviceid="11020" name="Private Delivery Service"/>
</Services>
</Product>
<Product adviseprice="fixed59" name="GLS DK - Export" conceptid="189">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Home Delivery" servicecode="P3"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="SE" field="fld_AdrCountry"/>
</ValidationRules>
</Product>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>