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!