Denne artikel henvender sig til udviklere, der ønsker at hente udleveringssteder med metoden GetShipAdvise.
Bemærk: Dette er kun for at vise et grundlæggende eksempel.
Du skal anvende din egen forretningslogik og fejlhåndtering.
Indhold i denne artikel:
- GetDropPoints-metoden
- Hent data for ét udleveringssted, når brugeren vælger et produkt
- Hent alle udleveringssteders data på én gang
- Brug dine egne butikker som udleveringssteder
-
GetDropPoints-metoden
Denne metode kræver, at dataobjektet indeholder et produkt-id, hvor mange udleveringssteder der skal hentes, services og modtageradressen ("Kind": 1)
Bemærk: ResultCount er min 1 - maks 10
Eksempel 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
]
}
Hent data for ét udleveringssted, når brugeren vælger et produkt
Denne tilgang bruges, hvis du kun ønsker at anmode om udleveringsstedsinformation, efter at brugeren har valgt et af produkterne, der returneres fra GetShipAdvise-metoden.
Eksempel på et svar fra GetDropPoints-metoden, når den kaldes ved hjælp af en funktion svarende til den nedenfor.
Metoden tager det fragtprodukt, som kunden har valgt, og forsendelsesdataene.
Derefter kalder den GetDropPoint-metoden og tilføjer svaret til 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
}
Hent alle udleveringssteders data på én gang
Metoden GetShipAdvise kalder ikke selv GetDropPoints-metoden. De to metoder skal kombineres for at svaret fra GetShipAdvise indeholder udleveringssteder.
Eksempel på standardresponsen fra GetShipAdvise-metoden.
Som vi kan se, er der ingen udleveringsstedsdata på produktet, men vi kan se, om et produkt understøtter det.
For at få et svar som i eksemplet nedenfor.
Du skal kalde GetDropPoint-metoden, før du returnerer GetShipAdvise-responsen på de produkter, der understøtter udleveringssteder og skal have udleveringssteder returneret.
Bemærk: Nogle produkter kan bruges både som Hjemmelevering og som udleveringssted.
I dette eksempel har produkterne i CSR-konfigurationsfilen et brugerdefineret felt "isDropPoint", som angiver, om GetDropPoint-metoden skal kaldes på dem eller ej.
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
}
Brug dine egne butikker som udleveringssteder
For at GetDropPoint-metoden kan returnere dine butikker som udleveringssteder, skal du udfylde følgende skabelon. Hvis der er brug for mere end ét udleveringssted, skal du tilføje et andet <DropPointData>-element.
Hvis du ikke har længde- og breddegrader, brug 0.01 som værdien for begge.
<MapRefX>0.01</MapRefX>
<MapRefY>0.01</MapRefY>MapRefX for længdegrad og MapRefY for breddegrad.
Eksempel med alle felter
<?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>Klik her for at downloade skabelonen.
En lidt mere 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>
Klik her for at downloade skabelonen.
Bemærk: Flere filer understøttes, og hver fil bør ikke indeholde mere end 1000 udleveringssteder.
Filen skal sendes til den lokale kundeservice, som vil oprette et brugerdefineret produkt og tilføje listen til det.
Hvis du har brug for et særligt navn til det, f.eks. "Collect @ Store", skal du angive dette i e-mailen.
Shipping Rules
Konfigurationsfilen, der indeholder produkterne, som bruges til GetShipAdvise-metoden i denne 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>