Denna artikel riktar sig till utvecklare som vill hämta utlämningsställen med metoden GetShipAdvise.
Notera: Detta är endast för att visa ett grundläggande exempel.
Du behöver tillämpa din egen affärslogik och felhantering.
Innehåll i denna artikel:
- Metoden GetDropPoints
- Hämta data för ett utlämningsställe när användaren väljer en produkt
- Hämta alla utlämningsställens data på en gång
- Använda dina egna butiker som utlämningsställen
-
Metoden GetDropPoints
Denna metod kräver att dataobjektet innehåller ett produkt-id, hur många utlämningsställen som ska hämtas, tjänster och mottagarens adress ("Kind": 1)
Notera: ResultCount är min 1 - max 10
Exempel på Data-objektet
{
"ProdCSID": 5748,
"ResultCount": 10,
"Addresses": [
{
"Kind": 1,
"Name1": "John Doe",
"Street1": "Test address 1",
"PostCode": "8210",
"City": "Aarhus V",
"CountryCode": "DK"
}
],
"Services": [
676008
]
}
Hämta data för ett utlämningsställe när användaren väljer en produkt
Denna metod används om du endast vill begära information om utlämningsställe efter att användaren har valt en av produkterna som returnerats från GetShipAdvise-metoden.
Exempel på ett svar från GetDropPoints-metoden när den anropas med en funktion liknande den nedan.
Metoden tar det fraktprodukt som kunden valt och fraktdatan.
Sedan anropar den GetDropPoint-metoden och lägger till svaret i produktobjektet.
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
}
Hämta all utlämningsställedata på en gång
Metoden GetShipAdvise anropar inte själv GetDropPoints-metoden. De två metoderna måste kombineras för att svaret från GetShipAdvise ska innehålla utlämningsställen.
Exempel på standardrespons från GetShipAdvise-metoden.
Som vi kan se finns det ingen data för utlämningsställen på produkten, men vi kan se om en produkt stödjer det.
För att få ett svar som i exemplet nedan.
Du behöver anropa GetDropPoint-metoden innan du returnerar GetShipAdvise-svaret på de produkter som stödjer utlämningsställen och som ska få utlämningsställen returnerade.
Notera: Vissa produkter kan användas både som Hemleverans och Utlämningsställe.
I detta exempel har produkterna i CSR-konfigurationsfilen ett anpassat fält "isDropPoint" som anger om GetDropPoint-metoden ska anropas för dem eller inte.
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
}
Använda dina egna butiker som utlämningsställen
För att GetDropPoint-metoden ska kunna returnera dina butiker som utlämningsställen.
Behöver du fylla i följande mall. Om fler än ett utlämningsställe behövs, lägg till ytterligare ett <DropPointData>-element.
Om du inte har longitud och latitud, använd 0.01 som värde för båda.
<MapRefX>0.01</MapRefX>
<MapRefY>0.01</MapRefY>MapRefX för longitud och MapRefY för latitud.
Exempel med alla fält
<?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>Klicka här för att ladda ner mallen.
En något mer kompakt 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>
Klicka här för att ladda ner mallen.
Notera: Flera filer stöds, och varje fil bör inte innehålla mer än 1000 utlämningsställen.
Filen måste skickas till den lokala kundtjänsten, de kommer att skapa en anpassad produkt och lägga till listan till den.
Om du behöver ett speciellt namn för det, t.ex. "Collect @ Store" som anpassad produkt, måste du ange detta i e-postmeddelandet.
Fraktregler
Konfigurationsfilen som innehåller produkterna som används för GetShipAdvise-metoden i denna artikel.
<?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>