Integracijos · Diegimo instrukcijos

JavaScript biblioteka

Adresų paieška ir pašto kodo užpildymas bet kurios svetainės formoje. Vartotojas rašo adresą, po lauku rodomi pasiūlymai, o pasirinkus – užpildomas pašto kodas, miestas ir kiti laukai. Užtenka kelių eilučių kodo.

v1.3.0https://api.postapi.lt/js/postapi.min.js
9 KB
gzip, be priklausomybių
IE11+
ir senesni telefonai
LT · LV · EE
adresai
Pradžia

Apie biblioteką

Biblioteka skirta el. parduotuvėms ir svetainėms, kuriose klientas įveda pristatymo adresą. Ji naudoja PostAPI.lt pašto kodų API ir veikia su Lietuvos, Latvijos ir Estijos adresais.

  • • Paieška rašant arba paieška mygtuku („Rasti pašto kodą“).
  • • Užpildo pašto kodo, miesto, gatvės, namo numerio, korpuso, buto ir savivaldybės laukus.
  • • Atpažįsta adresus be lietuviškų raidžių, su rašybos klaidomis, su butu (Laisvės pr. 44-78).
  • • Veikia su klaviatūra ir ekrano skaitytuvais.
Diegimas

Prijungimas

Įkelkite biblioteką puslapyje, kuriame yra adreso forma (pvz. prieš uždarantį </body>):

HTML
<script src="https://api.postapi.lt/js/postapi.min.js"></script>

Failą galima atsisiųsti ir laikyti savo svetainės statinių failų kataloge – tada pakeiskite src kelią.

Pradžia

Greitas startas

Prie adreso lauko prijunkite biblioteką ir nurodykite, kuriuos laukus užpildyti pasirinkus adresą:

HTML + JavaScript
<input id="address" placeholder="Adresas">
<input id="postcode" placeholder="Pašto kodas">
<input id="city" placeholder="Miestas">

<script src="https://api.postapi.lt/js/postapi.min.js"></script>
<script>
  PostAPI.attach("#address", {
    key: "JŪSŲ_API_RAKTAS",
    fields: { postcode: "#postcode", city: "#city" }
  });
</script>
JavaScript

Paieška rašant

Pasiūlymai rodomi rašant, pasirinkti galima pele arba klaviatūra (↑ ↓ ir Enter). Pasirinkus adresą užpildomi nurodyti laukai ir kviečiama onSelect funkcija.

JavaScript
PostAPI.attach("#address", {
  key: "JŪSŲ_API_RAKTAS",
  fields: {
    postcode: "#postcode",
    city: "#city",
    apartment: "#flat"
  },
  onSelect: function (item) {
    console.log(item.postcode_full, item.city);
  }
});
JavaScript

Paieška mygtuku

Kai pasiūlymų rašant nereikia: vartotojas įveda visą adresą ir paspaudžia mygtuką. Jei randamas vienas adresas – laukai užpildomi iškart, jei keli – rodomas sąrašas, jei nė vieno – pranešimas.

HTML + JavaScript
<input id="address" placeholder="Adresas">
<button id="find" type="button">Rasti pašto kodą</button>
<input id="postcode">

<script>
  PostAPI.lookup("#address", {
    key: "JŪSŲ_API_RAKTAS",
    trigger: "#find",
    fields: { postcode: "#postcode" }
  });
</script>
Keli laukai

Pristatymo ir sąskaitos adresai

Jei formoje yra keli adreso blokai (pvz. pristatymo ir sąskaitos), prijunkite biblioteką prie kiekvieno adreso lauko atskirai. Kiekvienas veikia savarankiškai ir užpildo tik savo bloko laukus.

JavaScript
PostAPI.attach("#shipping_address", {
  key: "JŪSŲ_API_RAKTAS",
  fields: { postcode: "#shipping_postcode", city: "#shipping_city" }
});

PostAPI.attach("#invoice_address", {
  key: "JŪSŲ_API_RAKTAS",
  fields: { postcode: "#invoice_postcode", city: "#invoice_city" }
});
Jei forma perkraunama (pvz. AJAX) ir laukas prijungiamas dar kartą, ankstesnis prijungimas atjungiamas automatiškai – pasiūlymų sąrašas nesidubliuoja.
Formos laukai

Kuriuos laukus užpildyti

Parinktyje fields nurodykite lauko selektorių kiekvienai reikšmei. Užpildžius siunčiami input ir change įvykiai, todėl pakeitimą pastebi ir PrestaShop, WooCommerce, React ar Vue formos.

postcode
LT-01103

Pašto kodas (formatas – postcodeFormat).

city
Vilnius

Miestas arba gyvenvietė.

street
Gedimino pr.

Gatvė.

house_number
5K2

Namo numeris.

number_only
5

Namo numeris be korpuso.

housing
2

Korpusas.

apartment
78

Butas, jei įvestas adrese (Laisvės pr. 44-78).

municipality
Vilniaus m. sav.

Savivaldybė.

country
LT

Šalis. <select> laukui parenkama atitinkanti reikšmė.

Adresas keliuose laukuose

Jei formoje gatvė, namo numeris ir miestas – atskiri laukai, jų reikšmės pridedamos prie paieškos:

JavaScript
PostAPI.attach("#street", {
  key: "JŪSŲ_API_RAKTAS",
  sources: ["#house", "#city"],
  fields: { postcode: "#postcode" }
});

Reikšmės pakeitimas

Laukui galima nurodyti funkciją arba reikšmės pakeitimą:

JavaScript
fields: {
  postcode: {
    target: "#zip",
    transform: function (value) { return value.replace("LT-", ""); }
  },
  city: function (value, item) { myCart.city = value; }
}
Nustatymai

Parinktys

key
–

API raktas. Matomas puslapio kode – saugiau naudoti token (žr. „Raktas ir token'as“).

tokenUrl
–

Jūsų serverio adresas, grąžinantis laikiną token'ą vietoj rakto. Atnaujinamas automatiškai.

country
LT

Šalis: LT, LV arba EE. Keisti galima ir vėliau: instance.setCountry('LV').

language
lt

Pranešimų kalba: lt arba en.

limit
10

Pasiūlymų skaičius sąraše (1–20).

minLength
2

Nuo kiek simbolių pradedama paieška.

debounce
200

Kiek milisekundžių laukiama po paskutinio paspaudimo prieš siunčiant užklausą.

fields
{}

Kuriuos formos laukus užpildyti pasirinkus adresą (žr. „Formos laukai“).

sources
[]

Papildomi laukai, kurių reikšmės pridedamos prie paieškos (pvz. namo numeris, miestas).

postcodeFormat
full

Pašto kodo formatas: full – LT-01103, digits – 01103.

fillInput
address

Kas įrašoma į adreso lauką: address – „Gedimino pr. 9“, address_city – „Gedimino pr. 9, Vilnius“, none arba funkcija.

wideNumber
null

1 – namo numeris kaip pradžia (9 → 9, 9A, 9K1), 0 – tik tikslus numeris.

showStatus
false

Rodyti būseną sąraše: „Ieškoma…“, „Adresas nerastas“, klaidą.

noResultsText
null

Tekstas, kai nieko nerasta, pvz. „Adresas nerastas“.

timeout
10000

Užklausos laiko limitas milisekundėmis.

attributionTarget
–

Kur rodyti nemokamo plano nuorodą (numatyta – iškart po adreso lauku).

injectStyles
true

false – sąrašo stilius rašote patys.

styleNonce
–

CSP nonce įterpiamiems stiliams.

Programuotojams

Įvykiai ir metodai

onSelect
item, instance

Kviečiama pasirinkus adresą. item – pasirinktas įrašas su pašto kodu, miestu, savivaldybe, koordinatėmis.

onError
error, instance

Kviečiama klaidos atveju. error.code – API klaidos kodas (1000–1006) arba TIMEOUT, NETWORK, HTTP.

onStateChange
state, instance

Būsenos pasikeitimas: idle, loading, results, empty, error, selected.

postapi:select
event.detail

DOM įvykis adreso lauke pasirinkus adresą (tinka, jei laukai pridedami dinamiškai).

Metodai
var instance = PostAPI.attach("#address", { ... });

instance.setCountry("LV");     // pakeisti šalį
instance.destroy();            // atjungti nuo lauko
PostAPI.get("#address");       // egzempliorius pagal lauką
PostAPI.noConflict();          // jei svetainėje jau yra kitas PostAPI
Saugumas

Raktas ir token'as

API raktas, įrašytas puslapyje, matomas jo kode. Saugiau naudoti laikiną token'ą: jūsų serveris jį sukuria ir perduoda bibliotekai, o pats raktas lieka serveryje. Token'as galioja 180 min., biblioteka jį atnaujina automatiškai.

JavaScript
PostAPI.attach("#address", {
  tokenUrl: "/postapi-token.php",
  fields: { postcode: "#postcode" }
});
PHP – /postapi-token.php
openssl_public_encrypt(POSTAPI_KEY . ";" . time(), $encrypted, POSTAPI_PUBLIC_KEY, OPENSSL_PKCS1_OAEP_PADDING);

header("Content-Type: application/json");
echo json_encode(["token" => base64_encode($encrypted)]);
Viešasis raktas token'ams – postapi-public.pem.
Licencija

Nemokamas planas

Naudojant nemokamą API raktą, svetainėje privaloma nuoroda į PostAPI.lt. Biblioteka ją rodo automatiškai – po adreso lauku, todėl papildomai nieko daryti nereikia:

Gedimino pr. 9
Pašto kodų integracija - PostAPI.lt

Nuorodos tekstas – tos šalies kalba, kurios adresų ieškoma (parinktis country): Latvijoje „Pasta indeksu integrācija“, Estijoje „Postiindeksite integratsioon“. Pakeitus šalį (setCountry), tekstas atnaujinamas iškart.

Mokamame plane nuoroda nerodoma. Jei laukas formoje yra vienoje eilutėje su kitais, nuorodos vietą galima pakeisti parinktimi attributionTarget.

Dizainas

Išvaizda

Pasiūlymų sąrašo spalvas ir šriftą pritaikykite savo svetainei CSS kintamaisiais:

CSS
.postapi-ac {
  --postapi-active: #fff3e0;     /* pažymėtas pasiūlymas */
  --postapi-border: #e0e0e0;
  --postapi-radius: 4px;
  --postapi-font: 15px/1.4 Arial, sans-serif;
}
Kintamieji: --postapi-background, --postapi-border, --postapi-radius, --postapi-shadow, --postapi-color, --postapi-muted, --postapi-active, --postapi-link, --postapi-font.
Techninė informacija

Suderinamumas

  • • Naršyklės: visos šiuolaikinės, taip pat Internet Explorer 11, iOS Safari 9+, Android 4.4+ – be papildomų bibliotekų.
  • • Be priklausomybių: nereikia jQuery ar kitų bibliotekų, dydis – 9 KB (gzip).
  • • Be konfliktų: vienas globalus vardas PostAPI, visi stiliai su priešdėliu postapi-ac – jūsų svetainės išvaizdos biblioteka nekeičia, o svetainės stiliai nesugadina pasiūlymų sąrašo.
  • • Prieinamumas: valdymas klaviatūra, ARIA atributai, rezultatų skaičius pranešamas ekrano skaitytuvams.
API dokumentacija