-
Fortumo Premium SMS-konekcija - tehnička specifikacija
Premium SMS-konekcija je najfleksibilniji tip usluge u ponudii Fortuma. Omogućava Vam da naplatite pristup sadržaju na internetu na bilo koji način koji možete da zamislite, ali zahteva određeno poznavanje web programiranja i web server na kome će Vaš program raditi (na primer, PHP-script).
Kada korisnik pošalje poruku za Vaš SMS servis, Fortumo će poslati HTTP GET zahtev na URL koji ste naveli u konfiguraciji usluge (na primer, http://vas-domen.com/sms.php). Sadržaj koji Fortumo primi sa Vašeg URL-a (ili preciznije, prvih 120 karaktera koje pošaljete) se zatim šalje korisniku kao odgovor. Parametri tog HTTP GET zahteva preciziraju broj telefona pošiljaoca, sadržaj poruke, itd, tako da možete iskoristiti i te podatke da bi kreirali odgovor.



-
Parametri
message- Sadržaj poruke bez ključnih reči. Dakle, ako je poruka TXT KEY 123, ovaj parametar je 123. Parametar je prazan ako je poslata samo ključna reč, bez pratećeg teksta.
sender- Broj telefona pošiljaoca poruke u međunarodnom formatu bez plus znaka. Na primer, 381641234567 or 358401234567.
country- Pozivni broj za zemlju mobilnog operatera pošiljaoca poruke. Prema ISO 3166-1 standardu, koristimo dvoznačne kodove (SE za Švedsku, FI - Finska, NO - Norveška, LT - Litvanija, LV - Letonija, EE - Estonija itd). Molimo Vas da imate u vidu da ovo NIJE nužno i lokacija pošiljaoca u trenutku slanja poruke. Na primer, pošiljalac sa švedskim telefonom može da pošalje poruku dok je u roamingu u Norveškoj, i vi bi ste ipak imali SE u polju za zemlju.
price- Cena poruke za krajnjeg korisnika izražena u lokalnoj valuti, bez PDV-a.
currency- Simbol za lokalnu valutu prema ISO 4217 standardu (EUR, SEK, NOK, DKK, LTL, LVL, EEK, USD, GBP itd).
service_id- String koji identifikuje ovaj Fortumo servis. Na primer f7fa12b381d290e268f99e382578d64a. Ako imate više servisa sa istim URL-om, možete koristiti ovaj string da ustanovite za koji servis je poruka poslata.
message_id- String koji je jedinstven za svaku poruku koju Vaš servis primi.
keyword- Ključna reč. Dakle, ako je poruka TXT KEY 123, ovaj parametar je TXT KEY.
shortcode- Kratki kod na koji je poruka poslata.
operator- Name of the sender's mobile network operator.
billing_type- Može biti MO ili MT. Pročitajte više o tipovima naplate na Fortumo FAQ.
status- Billing status, which is either
pending(in message delivery request),okorfailed(in billing report). test- This parameter is present only when message is sent through Fortumo testing interface by yourself and it's value is always 'true'.
sig- Potpis koji možete da proverite da bi bili sigurni da zahtev dolazi od Fortuma. Pogledajte detalje u sekciji o Bezbednosti.
U najvećem broju slučajeva, potreban je samo
messagei eventualnosenderparametar, ali za naprednije korisnike smo dodali i druge parametre.


-
Security
Važno je da se uverite da skriptu servisa poziva Fortumo a ne neko drugi. Postoji nekoliko bezbednosnih mera koje zadovoljavaju većinu provajdera servisa.:
-
Proverite da li IP adresa servera od koga primate zahtev pripada jednom od Fortumo servera. IP adrese koje trenutno koristimo su 81.20.151.38, 81.20.148.122 i 209.20.83.207. Obavestićemo Vas putem e-maila kada i ako ih budemo promenili. U PHP kodu, ovo možete proveriti korišćenjem$_SERVER["REMOTE_ADDR"]varijable. -
Nazovite svoj direktorijum ili skriptu imenom koje nije toliko očigledno. Na primer, http://yourdomain.com/go850g3oigjrtog/sms.php je bolji izbor od http://yourdomain.com/sms.php. -
Proverite da li se priloženi potpis poklapa. Svi zahtevi su potpisani sa deljenom šifrom koju znate samo Vi i Fortumo. Šifru možete videti na stranici za podešavanje servisa. Potpis je priložen kaosigparametar i izračunat je kao md5 checksum pripojenih parametara zahteva i šifre. Možete izvršiti isti proračun i proveriti da li sesigparametar u zahtevu slaže sa onim koji ste izračunali. Pogledajte PHP primer na ovoj strani da saznate kako se vrši izračunavanje.
-


-
Sample sms.php
<?php //set true if you want to use script for billing reports //first you need to enable them in your account $billing_reports_enabled = false; // check that the request comes from Fortumo server if(!in_array($_SERVER['REMOTE_ADDR'], array('81.20.151.38', '81.20.148.122', '209.20.83.207'))) { die("Error: Unknown IP"); } // check the signature $secret = ''; // insert your secret between '' if(!empty($secret) && !check_signature($_GET, $secret)) { die("Error: Invalid signature"); } $sender = $_GET['sender']; $message = $_GET['message']; // do something with $sender and $message $reply = "Thank you $sender for sending $message"; // print out the reply echo($reply); //customize this according to your needs if($billing_reports_enabled && preg_match("/Failed/i", $_GET['status']) && preg_match("/MT/i", $_GET['billing_type'])) { // find message by $_GET['message_id'] and suspend it } function check_signature($params_array, $secret) { ksort($params_array); $str = ''; foreach ($params_array as $k=>$v) { if($k != 'sig') { $str .= "$k=$v"; } } $str .= $secret; $signature = md5($str); return ($params_array['sig'] == $signature); } ?>
Kopiraj na klipbord





