Nemažai daliai programuotojų, jungiančių mokėjimai.lt sistemą prie el. parduotuvių pirmą kartą, kyla problemų su SS2 parametru. Kas tai – plačiau specifikacijose (mikro arba makro).
Veikimo principas yra pagrįstas SSL ir iš esmės yra nesudėtingas, tačiau garantuoja aukštą saugumo lygį. Rekomenduojame jį naudoti!
Tam, kad būtų lengviau suprogramuoti, pateiksiu trumpą schemą, kaip tai daroma.
- Klientas (el. svetainė) siunčia mokėjimo užklausą į mokėjimai.lt serverį, kartu nukreipdama ir pirkėją.
- Klientas sėkmingai apmoka.
- Mokėjimai.lt sugeneruoja parametrus, kurie bus siunčiami kliento serveriui.
- Iš sugeneruotų parametrų reikšmių eilės tvarka sudaroma eilutė, kiekvieno (ir paskutinio) parametro gale prijungiant vertikalų brūkšnį “|”. Pavyzdžiui, jei bus parametrai “Labas”, “gerai”, “1333″, tai sugeneruota eilutė atrodys taip: “Labas|gerai|1333|”.
- Ši eilutė pasirašoma mokėjimai.lt privačiu raktu, koduojama base64 formatu.
- Parametras pridedamas į užklausos “_ss2″ parametrą.
- Mokėjimai.lt serveris siunčia HTTP GET užklausą su visais parametrais kliento nurodytu callback parametre adresu į kliento serverį.
Taigi, nuo šios akimirkos visi saugumo tikrinimai pereina į el. parduotuvės “rankas”. Ji, idealiu atveju, be vidinių veiksmų turėtų atlikti tokius tikrinimus:
- Patikrinti, ar parametras “status” yra “1″.
- Patikrinti, ar suma yra ne mažesnė (kai kuriais atvejais gali būti didesnė) už užprašytą, t.y. panaudoti operatorių >=.
- Iš visų mokėjimai.lt gražintų parametrų, išskyrus parametrą ss2, sugeneruoti eilutę pagal ankstesnio sąrašo 4 punkte pateiktą pavyzdį. Nepamirškite: svarbu eilės tvarka, raidžių dydis (case-sensitive) ir t.t.
- Patikrina parašą, pateiktą ss2 parametre, su mokėjimai.lt viešu raktu. Jis, koduotas base64 formatu (PHP dekodavimui – base64_decode), pateiktas šiame faile. CRT sertifikato failą galite atsisiųsti iš čia. Kaip patikrinti parašą, pavaizduota šiame pavyzdyje. Pastarajame PHP skripte pateiktas pats paprasčiausias viso mokėjimai.lt užklausos tikrinimo įgyvendinimas.
Pastaba: aukščiau pateiktas sertifikatas galioja iki 2009 metų liepos mėn. Taigi, kai ateis ta diena, naujesnio sertifikato reikia ieškoti www.mokejimai.lt svetainėje.
Jeigu visi tikrinimai duoda “žalią šviesą” – garantuotai mokėjimas yra teisingas, o el. parduotuvė gali klientui suteikti paslaugą ar siųsti prekę.
Dabar įdomioji dalis: Dažnai kylančios problemos.
K(klausimas): viską padariau pagal pavyzdį, o man goodRequest() grąžina false!
A(tsakymas): taip tikriausiai yra todėl, kad tavo $_GET parametrų sąraše atsirado kažkas, ko mokėjimai.lt nesiuntė. Taip daro kai kurios turinio valdymo sistemos, pavyzdžiui, pridėdamos kokį navigacijos parametrą ar pan.
Tai išsprendžiama paduodant goodRequest() funkcijos analogui tik reikiamus parametrus, arba iš $_GET pašalinant perteklinius parametrus.
K: meta fatal erorą dėl tos openssl funkcijos!
A: reikia į PHP įkelti OpenSSL palaikymą.
Daugiau problemų? Kreipkitės paštu į integrate@mokejimai.lt, arba čia – komentaruose. Bet turiu pasakyti, kad vargu ar bus daugiau kokių sprendimų…
Jei visgi ką pamiršau – pažadu įtraukti!





evp.lt
Pamiršai pridurti, kad parduotuvėje, callback’e taip pat patartina patikrinti sumą, ar ji sutampa su prašoma suma, kad nebūtų apgavysčių pervedant mažesnę sumą
Dėkui už pastabą! Pridėjau
is mokejimai.lt siulo parsisiusti sertifikata kuris vadinasi “mokejimai_…iki_2009-07.crt”
kur galima nauja gauti? ar sis vis dar galioja?
Kol kas šis sertifikatas dar vis naudojamas duomenų šifravimui.
Deja, skaičiuojant ss2 netgi su nepakeistu $_GET parametru, ss2 pasiskaičiuos blogai, jei sugalvosite į mokejimai.lt nusiusti parametrą, pvz., paytext su lietuviškom (rusiškom) raidėm ar kiniškais hieroglifais. Nors mokejimai.lt rašo, kad jie dirba su UTF-8 kodavimu, bet tai nėra visiška tiesa, kažkodėl reikia siųsti parametrus šveplai. Neaišku ką daryti jei klientas yra ne lietuvis ir nori parašyti pavardę savo kalba (pvz., jis nemoka skaityti lotyniškom raidėm). Aš suprantu tai yra greičiausiai dėl suderinamumo su bankais, bet tai – šaukštas deguto, gerokai gadinantis nervus.
Sveiki,
tai nėra tiesa. Mes su UTF-8 simboliais dirbame be problemų. Tiksliau – su viskuo, ką Jūs mums paduodate. Bankų koduočių reikalavimai yra atskira dalis, kuri įtakos Jūsų ir mūsų serverių bendravimui neturi.
Kątik pats sėkmingai atlikau testinį mokėjimą su kliento vardu “Варденис Паварденис” (Vardenis Pavardenis). SS2 tikrinimas, pateiktas mūsų puslapyje, praėjo sėkmingai.
Spėju, kad pas Jus yra neteisingai įgyventintas SS2 tikrinimas. Siūlau kreiptis į mūsų intergavimo pagalbą – integrate@mokejimai.lt, su jos pagalba turėtumėte viską greitai išspręsti.