SMS + OTP

Unifonic (يونيفونك) · المرحلة 1

الحالة الحالية: Mock (development) OTP + تذكير المواعيد + تنبيهات الأزمة للأرقام السعودية (مطلوب من CITC).

المواصفات

ContractApp\Integrations\Contracts\SmsGateway
Mock adapterApp\Integrations\Mock\MockUnifonic
Production adapter (مخطط)App\Integrations\Production\UnifonicAdapter
Driver keyconfig('sakeenah.integrations.sms.driver')
الوثائق الرسميةhttps://docs.unifonic.com

الميزات المعتمدة عليه

الاستخدام في الـ Code

use App\Integrations\Contracts\SmsGateway;

class MyController {
    public function __construct(
        private readonly SmsGateway $service,
    ) {}

    public function action() {
        // $this->service يتحقن تلقائياً (mock أو production)
        // حسب config('sakeenah.integrations.sms.driver')
    }
}

لرفع التكامل إلى Production

  1. اطلب credentials من الموزود الرسمي
    تواصل مع: Unifonic (يونيفونك)
  2. ابنِ Production Adapter
    // app/Integrations/Production/UnifonicAdapter.php
    namespace App\Integrations\Production;
    
    use App\Integrations\Contracts\SmsGateway;
    use Illuminate\Support\Facades\Http;
    
    class UnifonicAdapter implements SmsGateway {
        public function __construct(
            private string $apiKey = config('sakeenah.integrations.sms.api_key'),
        ) {}
    
        // Implement all interface methods using real HTTP calls
        // Use Laravel's Http::withToken($this->apiKey)->post(...)
    }
  3. ضع credentials في .env
    SMS_DRIVER=production
    SMS_API_KEY=your_real_key_here
  4. اختبر — كتب feature test يستخدم mock أولاً، ثم integration test على staging
  5. أعد تشغيلphp artisan config:clear

موافقات + Compliance

المتعلق