Fortumo mobiilimakse/Dünaamilise SMS API tehnilised andmed
Dünaamiline SMS- teenus on kõige paindlikum teenustüüp Fortumos. See võimaldab luua pea ükskõik millise SMS- teenuse, mille peale võid tulla, kuid selleks on vaja mõningaid programmeerimisoskusi ja veebiserverit, kus Sa saaksid oma programmi (näiteks php- skripti) majutada. Suhtlus meie serveri ja Sinu skripti vahel toimub HTTP GET päringutega. On olemas kolm võimalikku HTTP päringut, mida on kirjeldatud allpool. Parameetrid, mida päringus kasutatakse, on alati samad. Kõige tähtsam ja kohustuslik sõnumite protsessis on esimene tüüp.
Parameetrid
messagesendercountrypricecurrencyservice_idmessage_idkeywordshortcodeoperatorbilling_typestatuspending (sõnumi edastamise päringus), ok või failed (maksustamise raportis).testsigInimestel on tavaliselt vaja message ja ehk sender parameetreid, kuid edasijõudnumatele kasutajatele oleme lisanud ka teisi.
On väga tähtis, et teenuse skripti kutsuks välja ainult Fortumo, mitte keegi teine. Selleks on olemas mitmeid turvameetmeid, mis rahuldavad suurema osa teenusepakkujaid.:
$_SERVER["REMOTE_ADDR"] muutujaga.
sig parameetrina ja arvutatakse md5 summana, kus päringu parameeter ja märge on kokku liidetud. Sa võid prooviks teha sama arvutuse ning veenduda kas sig parameeter päringus on sama, mille iseseisvalt said. Palun vaata allolevat PHP näidist, et näha kuidas arvutus täpselt käib.
Näidis 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', '79.125.125.1', '209.20.83.207'))) { header("HTTP/1.0 403 Forbidden"); die("Error: Unknown IP"); } // check the signature $secret = ''; // insert your secret between '' if(empty($secret) || !check_signature($_GET, $secret)) { header("HTTP/1.0 404 Not Found"); die("Error: Invalid signature"); } $sender = $_GET['sender']; $message = $_GET['message']; $message_id = $_GET['message_id'];//unique id //hint:use message_id to log your messages //additional parameters: country, price, currency, operator, keyword, shortcode // 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); } ?>Kopeeri kood