PHP, Python ve C# İle Kurumsal SMS API Bağlantısı (Kod Örnekli)

Modern yazılım mimarilerinde kullanıcı bilgilendirmeleri, 2FA (iki aşamalı doğrulama) kodları, randevu hatırlatıcıları ve kampanya bildirimleri gibi kritik süreçler otomatik olarak SMS yoluyla iletilir. BTK onaylı bulut SMS sağlayıcılarının sunduğu RESTful API’ler sayesinde, geliştirilen yazılımlar birkaç satır kodla SMS panellerine bağlanabilir.

Bu rehberde, en popüler programlama dilleri olan PHP, Python ve C# ile kurumsal bir SMS API’sine nasıl HTTP POST isteği gönderileceğini örnek kodlarla ele aldık.

1. SMS API Entegrasyonunun Temel Mantığı

Çoğu kurumsal SMS sağlayıcısı, veri alışverişi için JSON formatını destekleyen HTTP POST uç noktaları (endpoints) kullanır. API üzerinden gönderim yaparken genellikle şu parametrelere ihtiyaç duyulur:

  • API Key / Token veya Kullanıcı Adı & Şifre: Sağlayıcı tarafından size verilen kimlik doğrulama bilgileri.

  • Originator (Başlık): Alıcının telefonunda görünecek olan tescilli alfanumerik başlığınız (Örn: FIRMAADINIZ).

  • Message (Mesaj İçeriği): Gönderilmek istenen metin.

  • Recipients (Alıcılar): Mesajın iletileceği GSM numarası veya numaraları listesi.

2. PHP ile SMS API Entegrasyonu (cURL Kullanarak)

PHP projelerinizde harici bir kütüphane kurmadan yerleşik cURL fonksiyonunu kullanarak kolayca SMS gönderebilirsiniz.

PHP

<?php
$apiUrl = "https://api.smssaylayici.com/v1/send";
$apiKey = "BURAYA_API_KEY_GIRINIZ";

$data = [
    "api_key" => $apiKey,
    "sender" => "FIRMAAD",
    "message" => "Sayin Musterimiz, siparisiniz onaylanmistir. B001",
    "phones" => ["905554443322"]
];

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Accept: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    echo "SMS basariyla gonderildi: " . $response;
} else {
    echo "Hata olustu, HTTP Kodu: " . $httpCode;
}
?>

3. Python ile SMS API Entegrasyonu (Requests Kütüphanesi)

Python dünyasında HTTP istekleri için en yaygın kullanılan kütüphane requests modülüdür.

Python

import requests
import json

api_url = "https://api.smssaylayici.com/v1/send"
api_key = "BURAYA_API_KEY_GIRINIZ"

payload = {
    "api_key": api_key,
    "sender": "FIRMAAD",
    "message": "Dogrulama kodunuz: 4829. B001",
    "phones": ["905554443322"]
}

headers = {
    "Content-Type": "application/json",
    "Accept": "application/json"
}

try:
    response = requests.post(api_url, data=json.dumps(payload), headers=headers)
    if response.status_code == 200:
        print("SMS basariyla gonderildi:", response.json())
    else:
        print(f"Hata Kodu: {response.status_code}, Detay: {response.text}")
except Exception as e:
    print("Baglanti hatasi olustu:", str(e))

4. C# ile SMS API Entegrasyonu (HttpClient Kullanarak)

.NET platformunda modern ve asenkron istekler için HttpClient sınıfı tercih edilir.

C#

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json; // veya System.Text.Json

class Program
{
    static async Task Main(string[] args)
    {
        string apiUrl = "https://api.smssaylayici.com/v1/send";
        string apiKey = "BURAYA_API_KEY_GIRINIZ";

        var payload = new
        {
            api_key = apiKey,
            sender = "FIRMAAD",
            message = "Randevunuz basariyla olusturulmustur. B001",
            phones = new string[] { "905554443322" }
        };

        using (HttpClient client = new HttpClient())
        {
            string jsonPayload = JsonConvert.SerializeObject(payload);
            HttpContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync(apiUrl, content);

            if (response.IsSuccessStatusCode)
            {
                string result = await response.Content.ReadAsStringAsync();
                Console.WriteLine("SMS basariyla gonderildi: " + result);
            }
            else
            {
                Console.WriteLine("Hata olustu: " + response.StatusCode);
            }
        }
    }
}

5. API Entegrasyonunda Dikkat Edilmesi Gereken Kritik Noktalar

Yazılımınıza SMS entegrasyonu yaparken sistemin kararlı çalışması için şu önlemleri almalısınız:

  • Asenkron / Kuyruk Yapısı (Queue): Yoğun anlarda (örneğin toplu bildirimlerde) API isteklerini doğrudan kullanıcı arayüzünde (UI) bekletmek yerine arka plan kuyruk servisleri (Redis, RabbitMQ vb.) üzerinden yönetin.

  • Hata Yönetimi (Try-Catch): İnternet kopması veya sağlayıcı sunucusunun kesilmesi gibi durumlara karşı kodunuzda mutlaka hata yakalama blokları kullanın.

  • Numara Formatı: GSM numaralarının uluslararası formatta (905XXXXXXXXX) gönderildiğinden emin olun.

Yorum yapın