Denne artikkelen retter seg mot utviklere som ønsker å hente utleveringssteder med metoden GetShipAdvise.
Merk: Dette er kun for å vise et grunnleggende eksempel.
Du må implementere din egen forretningslogikk og feilhåndtering.
Innhold i denne artikkelen:
- GetDropPoints-metoden
- Hent data for ett utleveringssted når brukeren velger et produkt
- Hent alle utleveringssteder samtidig
- Bruke dine egne butikker som utleveringssteder
-
GetDropPoints-metoden
Denne metoden krever at dataobjektet inneholder et produkt-id, hvor mange utleveringssteder som skal hentes, tjenester og mottakeradresse ("Kind": 1)
Merk: ResultCount er minimum 1 - maksimum 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 ett utleveringssted når brukeren velger et produkt
Denne tilnærmingen brukes hvis du kun ønsker å be om informasjon om utleveringssted etter at brukeren har valgt ett av produktene som returneres fra GetShipAdvise-metoden.
Eksempel på svar fra GetDropPoints-metoden når den kalles med en funksjon lik den nedenfor.
Metoden tar fraktproduktet valgt av kunden og forsendelsesdata.
Deretter kaller den GetDropPoint-metoden og legger 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 utleveringssteder samtidig
Metoden GetShipAdvise kaller ikke GetDropPoints-metoden av seg selv. De to metodene må kombineres for at svaret fra GetShipAdvise skal inneholde utleveringssteder.
Eksempel på standard svar fra GetShipAdvise-metoden.
Som vi kan se, finnes det ingen data om utleveringssteder på produktet, men vi kan se om et produkt støtter det.
For å få et svar som i eksemplet nedenfor.
Du må kalle GetDropPoint-metoden før du returnerer GetShipAdvise-svaret på produktene som støtter utleveringssteder og som skal ha utleveringssteder returnert.
Merk: Noen produkter kan brukes både som Hjemlevering og som utleveringssted.
I dette eksemplet har produktene i CSR-konfigurasjonsfilen et egendefinert felt "isDropPoint" som indikerer om GetDropPoint-metoden skal kalles på dem eller ikke.
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
}
Bruke dine egne butikker som utleveringssteder
For at GetDropPoint-metoden skal kunne returnere dine butikker som utleveringssteder.
Må du fylle ut følgende mal. Hvis det trengs mer enn ett utleveringssted, legg til et nytt <DropPointData>-element.
Hvis du ikke har lengdegrad og breddegrad, bruk 0.01 som verdi for begge.
<MapRefX>0.01</MapRefX>
<MapRefY>0.01</MapRefY>MapRefX for lengdegrad 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>Klikk her for å laste ned malen.
En litt mer kompakt versjon.
<?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>
Klikk her for å laste ned malen.
Merk: Flere filer støttes, og hver fil bør ikke inneholde mer enn 1000 utleveringssteder.
Filen må sendes til lokal kundeservice, de vil opprette et egendefinert produkt og legge til listen i det.
Hvis du trenger et spesielt navn for det, f.eks. "Hent i butikk", må du spesifisere dette i e-posten.
Shipping Rules
Konfigurasjonsfilen som inneholder produktene brukt for GetShipAdvise-metoden i denne artikkelen.
<?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>