Android telefonları fiziksel SMS çıkış noktalarına (gateway) dönüştüren, PHP tabanlı, abonelik yönetimli self-hosted bir SMS Gateway platformu. Android cihazları SIM üzerinden gerçek SMS gönderir; panel üzerinden tekli/toplu SMS gönderimi, rehber yönetimi, zamanlama, kuyruk, API entegrasyonu, PayTR ile paket satışı ve admin paneli sunar.
Anahtar kelimeler:
android sms gateway·sms gateway·self-hosted sms gateway·bulk sms·sms api·php sms gateway·android sms sender·sim gateway·sms reseller·paytr sms·whatsapp sms·open source sms gateway
- Öne Çıkan Özellikler
- Dizin Yapısı
- Sistem Gereksinimleri
- Kurulum
- Varsayılan Yönetici Hesabı
- PayTR Kurulumu
- Havale/EFT + WhatsApp Kurulumu
- Harici Entegrasyon API
- Android Uygulaması
- Güvenlik
- Sık Karşılaşılan Hosting Notları
public/: Web giriş noktası ve statik dosyalarapp/: Controller, model, core sınıflar ve view dosyalarıdatabase/schema.sql: Temiz kurulum için MySQL şemasıdatabase/migrate_2026_04_08_user_agreements.sql: Mevcut kurulumlar için kullanıcı sözleşmesi kabul kayıt tablosudatabase/migrate_2026_04_08_paytr_payments.sql: Mevcut kurulumlar için PayTR ödeme tabloları ve ayarlarıdatabase/migrate_2026_04_08_whatsapp_bank_transfer.sql: Mevcut kurulumlar için Havale/EFT WhatsApp ayarıdocs/api.md: Harici entegrasyon API dokümantasyonuandroid-app/: Kotlin tabanlı Android istemci uygulaması
- Kayıt, giriş, e-posta doğrulama ve şifre sıfırlama
- Kullanıcı profili düzenleme ve şifre değiştirme
- Eşleştirme kodu ile Android cihaz bağlama
- Birden fazla cihaz yönetimi, düzenleme, duraklatma ve silme
- Rehber, grup, toplu içe aktarma ve boş şablon indirme
- Tekli, gruplu ve tüm rehbere SMS gönderimi
- Zamanlama, hız limiti ve cihaz seçimi destekli SMS kuyruğu
- SMS durum raporları ve Excel dışa aktarma
- Kullanıcı API anahtarı üretme ve harici sistem entegrasyonu
- Kullanıcılar için PayTR ile online paket satın alma, uzatma ve yükseltme
- Kullanıcılar için Havale/EFT ödeme talebi ve WhatsApp üzerinden dekont iletimi
- Admin panelinden APK yükleme ve kullanıcılar için APK indirme sayfası
- Kullanıcı sözleşmesi kabulü, kabul tarihi, IP adresi ve tarayıcı bilgisi loglama
- Android tarafında foreground service, polling, heartbeat, boot sonrası yeniden başlatma ve pil optimizasyonu uyarısı
- PHP ≥ 8.1 (PDO MySQL, mbstring, openssl, fileinfo extension'ları)
- MySQL ≥ 5.7 / MariaDB ≥ 10.3
- Apache veya Nginx (
mod_rewrite/ rewrite desteği) — paylaşımlı hostingde.htaccesskullanılır - HTTPS (PayTR callback ve güvenli oturum için zorunlu)
- Yazılabilir
storage/klasörü (log, rate-limit, APK upload)
- Hosting panelinizden veya phpMyAdmin üzerinden boş bir veritabanı ve yetkili bir kullanıcı oluşturun.
- İlgili veritabanını phpMyAdmin içinde seçin.
- Temiz kurulum yapıyorsanız
database/schema.sqldosyasını içe aktarın (tüm tablolar + seed verisi içerir). - Mevcut kurulumu güncelliyorsanız sırasıyla migrasyon dosyalarını çalıştırın:
database/migrate_2026_04_08_contact_address.sqldatabase/migrate_2026_04_08_user_agreements.sqldatabase/migrate_2026_04_08_plan_limits.sqldatabase/migrate_2026_04_08_paytr_payments.sqldatabase/migrate_2026_04_08_whatsapp_bank_transfer.sql
- Proje dosyalarını sunucuya yükleyin (paylaşımlı hosting:
public_html/sms/altına). storage/klasörünü ve alt klasörlerini (logs,rate_limits,uploads) yazılabilir yapın (chmod -R 775 storage).index.php,.htaccessve.envdosyalarının gerçekten sunucuda olduğundan emin olun.
.envdosyasındaki veritabanı ve uygulama ayarlarını kendi ortamınıza göre güncelleyin.
Örnek .env:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://akcsoft.com/sms
APP_NAME=SMS Portal
APP_TIMEZONE=Europe/Istanbul
MAIL_FROM=noreply@example.com
MAIL_FROM_NAME=SMS Portal
SMTP_ENABLED=false
SMTP_HOST=
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_ENCRYPTION=tls
SMTP_FROM_EMAIL=noreply@example.com
SMTP_FROM_NAME=SMS Portal
PAYTR_ENABLED=false
PAYTR_MERCHANT_ID=
PAYTR_MERCHANT_KEY=
PAYTR_MERCHANT_SALT=
PAYTR_TEST_MODE=true
PAYTR_DEBUG_ON=false
DB_HOST=localhost
DB_PORT=3306
DB_NAME=akcsoftc_sms
DB_USER=akcsoftc_sms
DB_PASS=akcsoftc_sms
RATE_LIMIT_PER_MINUTE=120
DEVICE_RATE_LIMIT_PER_MINUTE=1200
DEVICE_TASK_BATCH_LIMIT=20Yerelde PHP geliştirme sunucusu açmak için:
php -S localhost:8000 -t publicPaylaşımlı hosting kullanıyorsanız:
- Proje dosyalarını doğrudan
public_html/sms/altına yükleyin index.php,.htaccessve.envdosyalarının gerçekten sunucuda olduğundan emin olunstorage/klasörünün yazılabilir olması gerekir
- E-posta:
admin@example.com - Parola:
Admin123!
- Landing (SEO one-page):
/ - Kullanıcı paneli:
/dashboard - Rehber:
/contacts - Cihazlar:
/devices - SMS:
/sms - Abonelik ve ödeme:
/billing - API dokümantasyonu:
/api-docs - APK indirme:
/apk - Kullanıcı sözleşmesi:
/kullanici-sozlesmesi - robots dosyası:
/robots.txt - sitemap dosyası:
/sitemap.xml
- Yönetici panelinden
Yönetim -> PayTR Ayarlarısayfasına gidin. - Merchant ID, Merchant Key ve Merchant Salt bilgilerinizi girin.
- Test aşamasında
Test moduaçık, canlıya geçerken kapalı olmalıdır. - PayTR panelinde bildirim URL'si olarak şu adresi tanımlayın:
https://your-domain.example/sms/payment/paytr/callback - Kullanıcılar paket satın alma, uzatma ve yükseltme işlemlerini
/billingsayfasından yapar.
- Yönetici panelinde
Yönetim -> AyarlarekranındanHavale/EFT WhatsAppalanını doldurun. - Numara uluslararası formatta girilmelidir (örnek:
+90 555 123 45 67). - Kullanıcılar
/billingsayfasındaki paket kartlarındanHavale/EFT için WhatsAppbutonuna tıklayarak ödeme talebi oluşturabilir.
Base URL:
https://your-domain.example/sms/api/v1
Temel kullanıcı endpointleri:
POST /auth/loginGET /meGET /user/devicesGET /user/groupsPOST /user/groupsGET /user/contactsPOST /user/contactsPOST /user/sms/sendGET /user/sms/history
Android cihaz endpointleri:
POST /devices/registerPOST /devices/heartbeatGET /devices/tasksPOST /devices/tasks/{id}/result
Detaylı örnekler için:
- Panel içi sayfa:
/api-docs - Dosya:
docs/api.md
android-app/klasörünü Android Studio ile açın.- Sunucu URL bilgisini kendi API adresinize göre ayarlayın.
- Emülatör için örnek adres:
http://10.0.2.2:8000/api/v1 - Fiziksel cihazda aynı ağdaki sunucu IP adresini veya canlı domaininizi kullanın.
- Uygulama açıldığında cihaz kaydı yapılır ve eşleştirme kodu üretilir.
- Kullanıcı panelinden bu kod ile cihaz hesabınıza bağlanır.
Arka plan dayanıklılığı için uygulama:
- Foreground service ile çalışır
- Cihaz yeniden başlatıldığında servisi tekrar açar
- Uygulama güncellendiğinde servisi tekrar başlatır
- Görev listesinden kapatılınca servis yeniden planlanır
- Pil optimizasyonu muafiyeti ister
Hız optimizasyonu:
- API tarafında cihaz görev batch limiti
.envile ayarlanır:DEVICE_TASK_BATCH_LIMIT=20 - Android varsayılan polling aralığı
10 saniye, batch limiti20olarak güncellendi - Cihaz endpointleri için ayrı rate limit kullanılır:
DEVICE_RATE_LIMIT_PER_MINUTE=1200 - Teorik cihaz kapasitesi formülü:
(60 / poll_saniye) x batch_limit
Not: Android derlemesi bu ortamda Gradle yerel kütüphane hatası nedeniyle yeniden doğrulanamadı. Kod tarafındaki değişiklikler hazırdır.
- Web formlarında CSRF koruması
- API isteklerinde Bearer token doğrulaması
- PDO prepared statement ile SQL injection riskinin azaltılması
- View katmanında
htmlspecialcharstabanlı çıktı kaçışı - Dosya tabanlı rate limiting
- Kullanıcı sözleşmesi kabul kaydı: sürüm, tarih, IP adresi, user agent
#1044 Access deniedhatası alırsanız,CREATE DATABASEyetkiniz yoktur; sadeceschema.sqldosyasını mevcut veritabanının içine import edin.- cPanel benzeri sistemlerde veritabanı adı çoğunlukla
kullaniciadi_veritabaniformatındadır. /smsaltında 404 alıyorsanız dosyalar yanlış klasöre yüklenmiş olabilir veya.htaccesseksik olabilir.