Pereiti prie turinio

fortumo.com pajungimas savo tinklalapyje


Rekomenduojami pranešimai

Gavau asmeninių pranešimų su prašymais paaiškinti, kaip naudotis Fortumo.com paslaugomis. Buvau prieš gerą šmotą laiko aprašęs Mokejimai.lt sistemą, tačiau pasikeitus „Mokėjimų“ vidaus politikai, nemažai žmonių jų atsisakė paslaugų.

 

Taigi, žiūrim Fortumo. Imu pavyzdį kaip ir pereitą kartą: turime žaidimą. Reikia padaryt sistemą, kad žmogus išsiuntęs sms žinutę už atitinkamą sumą pinigų, gautų atitinkamai auksinių žaidime. Žmogus sms žinutėje įveda atitinkamą raktažodį, deda tarpą, įveda savo niką ir siunčia sms.

 

Įėję į Fortumo tinklalapį pirmiausia užsiregistruojame (viršuje spaudžiame „Register“ mygtuką). Prisijungiame prie el. pašto – patvirtiname registraciją. Po to vėl grįžtame į Fortumo ir prisijungiame (jūsų el. pašto adresas yra prisijungimo vardas). Prisijungę spaudžiame „Mobile Payments API“ mygtuką. Kitame puslapyje apačioje spaudžiam geltoną „START NOW“ mygtuką. Na čia išmeta daug klausimų – atsakome kiekvienas pagal save. Galiausiai išmeta prašymą pasirinkti keyword‘ą (raktažodį). Vedame pvz. auksiniai10. Kai patikrina, ar nėra toks jau užregistruotas, spaudžiam „NEXT“ mygtuką. Įjungia kitą puslapį. Viršuje galim nurodyti savo paslaugos pavadinimą, galim ir to nedaryti. Toliau prašo nurodyti PHP failo adresą, į kurį bus kreiptasi po žinutės išsiuntimo. Tą PHP failą turėsime pasirašyti ir įkelti į savo serverį. Nurodome adresą (pvz. http://kazkoksadresas.lt/sms845.php), kur bus mūsų failas. Apačioje galima dar pasirinkti, ar žmogus turėtų kas kartą išsiuntęs sms gauti atsakymą iš serverio apie tai, ar mokėjimas buvo įvykdytas, ar ne. Na aš nežymėjau varnelės – to man nereikia. Šitame puslapyje dar matau specifikacijų nuorodą: „Fortumo Mobile Payments / Premium SMS API technical specification“. Čia pateikiami įvairūs parametrai. Na mūsų atveju neprireiks nei žinutės siuntėjo telefono numerio, nei šalies, nei ko kito, išskyrus žinutės tekstą, kurio parametras yra „message“ (vadinasi, tekstas, kurį išsiųs žmogus, mūsų pasirašytame PHP faile bus priskirtas kintamajam $_GET['message'], tačiau tame tekste nebebus raktažodžių!). Čia dar apačioje yra ir PHP kodo pavyzdys, bet aš parašysiu daug paprastesnį – suprantamą su PHP minimaliai susidūrusiems žmonėms (žinoma, kaip pabrėžė vienas žmogas Mokejimai.lt pamokoje, taip ir čia tas kodas nebus saugus, tačiau naujokui tiks). Spaudžiame „NEXT“ mygtuką. Čia vėlgi prašo įvesti įvairius duomenis – kiekvienam pagal save. Viską suvedam ir spaudžiam „NEXT“. Šiame puslapyje pateikiama informacija apie mokėjimus įvairiose šalyse. Apačioje reikia pažymėti varnelę, po to spaudžiame „NEXT“ (užmiršau paminėti, jog ir praeituose puslapiuose reikdavo kai kur pažymėti varneles, nes kitaip neleisdavo eiti toliau, bet neabejoju, jog skaitytojas pats tai supras). Paskutiniame puslapyje spaudžiame YES.

 

Kitame puslapyje rašo, jog kai kuriose šalyse (taip pat ir Lietuvoje) mūsų paslauga veikia tik testiniu režimu. Toliau rašo, jog šiose šalyse dėl testinių tikslų kiekviena paslauga, kurią sukursime, gali gauti tik 0 – 5 pranešimus (priklausomai nuo šalies). Dar toliau prašo nereklamuoti savo sukurtos paslaugos šiose šalyse tol, kol jie nepatikrins ir nepatvirtins. Jiems patvirtinus gausime žinutę per 48 valandas. Kiek aš supratau, po patvirtinimo galėsime naudotis pilnateisiškai Fortumo paslaugomis, čia tiesiog 0 – 5 žinutes galime gauti tol, kol nėra patvirtinta (prašau tų, kas naudojosi Fortumo anksčiau, patvirtinti arba paneigti tai). Žemiau prašo pasirinkti patvirtinimo metodą (kaip suprantu, pirmą spaudžia tie, kas jau nori „priduoti“ savo paslaugą patvirtinimui, o antrą – tie, kas dar nėra iki galo visko nustatę). Na aš paspaudžiau pirmą, nors dar nesu parašęs to PHP failo, bet jie tvirtina net per 48 valandas, taigi spėsiu. :lol: Dar žemiau („Preparing your promotional material“) prašo pirmame laukelyje įvesti jūsų tinklalapio nuorodą, kurioje bus aprašyta apie jūsų paslaugą (supraskit, jiems svarbiausia yra tai, kad jūs nurodytumėte savo tinklalapyje, jog jūsų sms paslauga yra mokama). Dar parašyta, jog jei reikia jungtis ar pan., kad prieitų prie to puslapio su aprašymu, tai jiems turime nusiųsti screenshot‘ą. Žemesniame laukelyje aprašome savo paslaugą. Spaudžiame OK. Taigi, dabar skyrelyje „My services“ matau savo sukurtą paslaugą ir jos būklę (under approval – dar nepatvirtinta). Paspaudžiu ant savo paslaugos. Matau raktažodį: TXT AUKSINIAI10 ir numerį, kuriuo reikia siųsti žinutę, kad gaučiau auksinių.

 

Dabar PHP kodo rašymas. Pačioje pradžioje jau aptariau norimą žinutės struktūrą. Žinutė atrodys pvz.: „TXT AUKSINIAI10 Friday“ (be kabučių). Kadangi čia jau pati sistema tikrina raktažodžius, mums nebereikia tikrinti, tai ir kodas bus daug paprastesnis nei Mokejimai.lt. Beje, šį kartą patingėjau kurtis daugiau kaip vieną raktažodį, kadangi čia kūrimo principas ilgesnis nei Mokejimai.lt, tačiau esmė išlieka ta pati. Galų gale, jei bus norinčių, tai parodysiu pavyzdį ir su daugiau raktažodžių (nuovokesni gali ir patys pasirašyti kodą pagal mano Mokejimai.lt pamokoje parašytą kodą - tereiks pažaisti su if'ais). :) Beje, primenu, kad PHP failą turėsime užvadinti būtent taip, kaip nurodėme kurdami raktažodį (mūsų nagrinėjamu atveju buvo sms845.php) ir įkelti būtent į tą serverį, kokį nurodėme (mūsų nagrinėjamu atveju - kazkoksadresas.lt)

 

sms845.php failo kodas

 

<?php

include "sql.php";

mysql_query("UPDATE `nikai` SET auksiniai=auksiniai+10 WHERE nikas='".$_GET['message']."'");

echo 'Jus gavote 10 auksiniu! Sekmes zaidziant!';

?>

 

Viskas super paprasta. include "sql.php"; - įterpiame failą su prisijungimu prie MySQL duombazės. Beje, galima šitą eilutę ištrinti ir vietoje jos parašyti prisijungimą prie duombazės tiesiai šiame faile.

 

mysql_query("UPDATE `nikai` SET auksiniai=auksiniai+10 WHERE nikas='".$_GET['message']."'"); - Šitoje vietoje vartotojui, kurio nikas priskirtas kintamajam $_GET['message'] yra pridedama 10 auksinių.

 

echo 'Jus gavote 10 auksiniu! Sekmes zaidziant!'; - tarp echo kabučių parašome tekstą, kurį žmogaus gaus į savo telefoną kaip atsakymą po to, kai išsiųs žinutę.

 

Viskas.

 

Tiesa, dar galima padaryti mūsų atveju, kad tikrintų pvz. ar egzistuoja toks nikas, kuris įrašytas sms'e, bet čia jau niuansai. Toks kodas atrodytų pvz. taip:

 

<?php

include "sql.php";

if(!mysql_fetch_row(mysql_query("SELECT * FROM `nikai` WHERE nikas='".$_GET['message']."'")))
{
echo 'Jusu issiustas vartotojo vardas neegzistuoja!';
}
else
{
   mysql_query("UPDATE `nikai` SET auksiniai=auksiniai+10 WHERE nikas='".$_GET['message']."'");

echo $_GET['message'].' gavo 10 auksiniu! Sekmes zaidziant!';
}

?>

 

Dar kartą primenu, jog čia parašiau paprastą, bet nesaugų variantą. Jei kam nors pavyktų atrasti vieta, kur įkeltas tas failas, tai žmogus galėtų naudotis jūsų paslaugomis nemokamai ir kiek norėtų. Šiuo atveju mes šiek tiek apsaugojome užvadindami failą sms845, tačiau tai tik minimali apsauga nuo atspėjimo!

 

P.S. Kadangi durna galva perskaičiau šį sakinį specifikacijose: „Message content minus keywords” tik po to, kai jau parašiau kodą ir išsiunčiau 2 sms, tai praradau be reikalo 2 Lt (kode nurodžiau, kad ir raktažodis gaunamas – kaip būdavo Mokejimai.lt). :lol: :lol: Ir dar po laiko pamačiau, kad pačiame tinklalapyje yra testavimo galimybė be jokių realių sms siuntimų. :unsure: :lol:

Redagavo Friday
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dar kartą primenu, jog čia parašiau paprastą, bet nesaugų variantą. Jei kam nors pavyktų atrasti vieta, kur įkeltas tas failas, tai žmogus galėtų naudotis jūsų paslaugomis nemokamai ir kiek norėtų. Šiuo atveju mes šiek tiek apsaugojome užvadindami failą sms845, tačiau tai tik minimali apsauga nuo atspėjimo!

Dar ir SQL injekcijos spraga yra, nemanau, kad Fortumo savo pusėje escape'ins būtent SQL'ui. Iš tikrųjų, tai būtų labai įdomu įkišt SQL injekciją per SMS žinutę :lol:

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dar ir SQL injekcijos spraga yra, nemanau, kad Fortumo savo pusėje escape'ins būtent SQL'ui. Iš tikrųjų, tai būtų labai įdomu įkišt SQL injekciją per SMS žinutę :lol:

Prisipažinsiu, kad nepagalvojau apie SQL injekciją, tačiau mintis tikrai įdomi. :lol: Paprasčiausias būdas apsiginti nuo injekcijos - funkcija mysql_real_escape_string()

 

Šiaip jei kam reiks saugaus kodo, tai galit sakyt, tačiau teks luktelt, nes nuo ryt būsiu super užimtas apie 4 dienas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisipažinsiu, kad nepagalvojau apie SQL injekciją, tačiau mintis tikrai įdomi. :lol: Paprasčiausias būdas apsiginti nuo injekcijos - funkcija mysql_real_escape_string()

 

Šiaip jei kam reiks saugaus kodo, tai galit sakyt, tačiau teks luktelt, nes nuo ryt būsiu super užimtas apie 4 dienas.

 

Buciau as ir daugelis dekingi uz bet kokios apsaugos apsireiskima sioje srityje ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirma klaida, kurią galima būtų vadinti net dezinformacija - turi būti nurodomas kelias iki serveryje esančio užklausos „apdorotojo“ ir tai nebūtinai turi būti PHP. O kelias gali atrodyti kad ir taip:

http://example.com/sms_service/our_super_receiver/

O po tuo adresu gali slypėti kad ir pats AI šedevras, svarbu tik tiek, kad suprastų tai, ką sako Fortumo sistema.

 

Paskui:

 

Fortumo skriptui užklausas siunčia tiek „apdorojama“ tiek „nepavyko“ atveju - tačiau tavo „skriptas“ taškus pridėtų bet kokiu atveju.

Ir čia nei IP tikrinimas (žiūrėti žemiau), nei parašas nebepadėtų.

Redagavo nagisa
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Net jų puslapyje nurodyta apsauga, tai yra IP apsauga. Leidžia į skriptą kreiptis tik jų serveriams :)

 

  if(!in_array($_SERVER['REMOTE_ADDR'],
     array('81.20.151.38', '81.20.148.122', '79.125.125.1', '209.20.83.207'))) {
   header("HTTP/1.0 403 Forbidden");
   die("Error: Unknown IP");
 }

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Net jų puslapyje nurodyta apsauga, tai yra IP apsauga. Leidžia į skriptą kreiptis tik jų serveriams :)

 

  if(!in_array($_SERVER['REMOTE_ADDR'],
     array('81.20.151.38', '81.20.148.122', '79.125.125.1', '209.20.83.207'))) {
   header("HTTP/1.0 403 Forbidden");
   die("Error: Unknown IP");
 }

Kažkaip net mokėjimai.lt turi gudresnį tikrinimą su savo libwebtopay :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...