PHP ile SMS Gönderme APİ Entegrasyonu

'CaptainKanka

O Şimdi Asker!
14 Eki 2012
1,683
1,257
localhost/admin.php

Merhaba Arkadaşlar

Sms ile ilgili arkadaşların aklında soru işareti kalmasın diye bu makaleyi açıyorum.
Bu örneğimizde Php ile Sms nasıl gönderilir? bunu anlatmaya çalışacağım. Detaylı anlatımı biraz karışık. Bir servis sağlayıcıdan Sms paketi satın alıyorsunuz belirlenen api adresine php ile xml post edip geri yanıt alıyorsunuz vs vs vs. Bunu işlemleri kısatmak adına Php ile bir Sms class ı hazırladım.Bu class ile php ile sms göndermek mail atmak kadar kolay olacaktır.Yukarıda da belirttiğim gibi öncelikle bir servis sağlayıcıdan api almamız ve başlık kaydettirmeniz gerekiyor.
Şimdilik aşağıdaki linkten aldığımızı varsayıyorum.
Artık kodlamaya başlayalım

sms.class.php


PHP:
class smsGonder
{
    private $username = 'API KULLANICI ADI';
    private $password = 'API ŞİFRE';
    private $title    = 'SMS BAŞLIĞINIZ';

    private $reqSendLink      = 'http://api.iletimerkezi.com/v1/send-sms';
    private $reqBalanceLink   = 'https://api.iletimerkezi.com/v1/get-balance';
    private $reqReportLink    = 'https://api.iletimerkezi.com/v1/get-report';


  function sendRequest($reqLink,$send_xml,$header_type)
  {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$reqLink);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$send_xml);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$header_type);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);

    $result = curl_exec($ch);
    return $result;

  }

  function sendSms($numbers, $message)
  {
     $xml = <<<EOS
         <request>
           <authentication>
             <username>{$this->username}</username>
             <password>{$this->password}</password>
           </authentication>
           <order>
               <sender>{$this->title}</sender>
               <sendDateTime></sendDateTime>
               <message>
                   <text>{$message}</text>
                   <receipents>
                       <number>{$numbers}</number>
                   </receipents>
               </message>
           </order>
         </request>
EOS;

    $result = $this->sendRequest($this->reqSendLink ,$xml,array('Content-Type: text/xml'));

    $xml = simplexml_load_string($result);
    
    return $xml->status->code;
    die();
  }

  function getBalance()
  {

    $xml = <<<EOS
    <?xml version="1.0" encoding="UTF-8" ?>
    <request>
            <authentication>
                    <username>{$this->username}</username>
                    <password>{$this->password}</password>
            </authentication>
    </request>
EOS;

    $result = $this->sendRequest($this->reqBalanceLink,$xml,array('Content-Type: text/xml'));
    $xml = simplexml_load_string($result);   
  if($xml->status->code == '200'){
        return $xml->balance->sms;
        die();
    }
  }

}

Dosyamızı oluşturduktan sonra servis sağlayıcının size vermiş olduğu kullanıcı adı, şifre ve başlık parametrelerini private ile tanımlanmış değişkenlerimize aktarıyoruz.

gonder.php


PHP:
require_once ('sms.class.php');
$sms = new smsGonder;

$numara = '05324441122';
$mesaj  = 'Bu bir test mesajıdır';

$cevap = $sms->sendSms($numara, $mesaj);
if ($cevap == '200') {
   echo "Mesaj Gönderildi";
 }else {
   echo "Mesaj Gönderme Hatası $cevap";
}

gönder.php dosyamız ile bu mesajı gönderdik. Eğer işlem başarılı ise servis sağlayıcımızdan geri “200” kodu dönecektir. “200” kodu bu işlem başarı anlamına gelmektedir. Diğer sms durum kodlarına SMS API = İletiMerkezi | Python, PHP, C#, Ruby & Java ile SMS Gönder
yukarıdaki linkten ulaşabilirsiniz.
Servis sağlayıcısındaki sms paketinizdeki kalan sms adetini görmek için aşağıdaki kodu yazmanız yeterli.
echo $sms->getBalance();
Yukarıdaki kodlar en basite indirilmiş halidir. Siz kendi isteğiniz ve ihtiyaçlarınız doğrultusunda eklemeler yada çıkarmalar yapabilirsiniz.
İyi Forumlar
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.