الانتقال إلى المحتوى الرئيسي

المتطلبات الأساسية

قبل دمج مدفوعات دودي في تطبيق الهاتف المحمول الخاص بك، تأكد من أنك تمتلك:
  • حساب مدفوعات دودي: حساب تاجر نشط مع وصول إلى واجهة برمجة التطبيقات
  • بيانات اعتماد واجهة برمجة التطبيقات: مفتاح واجهة برمجة التطبيقات ومفتاح سرية الويب من لوحة التحكم الخاصة بك
  • مشروع تطبيق الهاتف المحمول: تطبيق أندرويد أو iOS أو React Native أو Flutter
  • خادم خلفي: لمعالجة إنشاء جلسة الدفع بشكل آمن

سير عمل التكامل

يتبع تكامل الهاتف المحمول عملية آمنة من 4 خطوات حيث يتولى الخادم الخلفي لديك معالجة استدعاءات واجهة برمجة التطبيقات بينما يدير تطبيق الهاتف المحمول تجربة المستخدم.
1

الخلفي: إنشاء جلسة الدفع

وثائق واجهة برمجة التطبيقات لجلسة الدفع

تعلم كيفية إنشاء جلسة دفع في الخادم الخلفي الخاص بك باستخدام Node.js وPython والمزيد. راجع الأمثلة الكاملة والمراجع المعلمات في وثائق واجهة برمجة التطبيقات لجلسات الدفع المخصصة.
الأمان: يجب إنشاء جلسات الدفع على خادمك الخلفي، وليس في تطبيق الهاتف المحمول. هذا يحمي مفاتيح واجهة برمجة التطبيقات الخاصة بك ويضمن التحقق الصحيح.
2

الهاتف المحمول: الحصول على عنوان URL للدفع

يتصل تطبيق الهاتف المحمول الخاص بك بالخادم الخلفي للحصول على عنوان URL للدفع:
func getCheckoutURL(productId: String, customerEmail: String, customerName: String) async throws -> String {
    let url = URL(string: "https://your-backend.com/api/create-checkout-session")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    
    let requestData: [String: Any] = [
        "productId": productId,
        "customerEmail": customerEmail,
        "customerName": customerName
    ]
    request.httpBody = try JSONSerialization.data(withJSONObject: requestData)
    
    let (data, _) = try await URLSession.shared.data(for: request)
    let response = try JSONDecoder().decode(CheckoutResponse.self, from: data)
    return response.checkout_url
}
الأمان: تتواصل تطبيقات الهاتف المحمول فقط مع الخادم الخلفي الخاص بك، وليس مباشرة مع واجهة برمجة التطبيقات لمدفوعات دودي.
3

الهاتف المحمول: فتح الدفع في المتصفح

4

الخلفي: معالجة إكمال الدفع

قم بمعالجة إكمال الدفع عبر الويب هوكس وعناوين URL لإعادة التوجيه لتأكيد حالة الدفع.

التكامل الخاص بالمنصة

اختر منصة الهاتف المحمول الخاصة بك أدناه للحصول على أمثلة تنفيذ كاملة:

تكامل أندرويد

تنفيذ علامات التبويب المخصصة في Chrome

// Add Chrome Custom Tabs dependency to build.gradle
implementation 'androidx.browser:browser:1.5.0'

// In your Activity
class PaymentActivity : AppCompatActivity() {
    private var customTabsSession: CustomTabsSession? = null
    private var customTabsClient: CustomTabsClient? = null
    private var customTabsServiceConnection: CustomTabsServiceConnection? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Initialize Custom Tabs
        customTabsServiceConnection = object : CustomTabsServiceConnection() {
            override fun onCustomTabsServiceConnected(name: ComponentName, client: CustomTabsClient) {
                customTabsClient = client
                customTabsClient?.warmup(0L)
                customTabsSession = customTabsClient?.newSession(object : CustomTabsCallback() {
                    override fun onNavigationEvent(navigationEvent: Int, extras: Bundle?) {
                        // Handle navigation events
                    }
                })
            }
            override fun onServiceDisconnected(name: ComponentName) {
                customTabsClient = null
            }
        }
        CustomTabsClient.bindCustomTabsService(
            this,
            "com.android.chrome",
            customTabsServiceConnection!!
        )
        // Get checkout URL from backend and launch
        lifecycleScope.launch {
            try {
                val checkoutURL = getCheckoutURL("prod_123", "[email protected]", "Customer Name")
                val customTabsIntent = CustomTabsIntent.Builder(customTabsSession)
                    .build()
                customTabsIntent.launchUrl(this@PaymentActivity, Uri.parse(checkoutURL))
            } catch (e: Exception) {
                // Handle error
                Log.e("PaymentActivity", "Failed to get checkout URL", e)
            }
        }
    }
}

أفضل الممارسات

  • الأمان: لا تخزن مفاتيح واجهة برمجة التطبيقات في شيفرة التطبيق الخاصة بك. استخدم التخزين الآمن وتثبيت SSL.
  • تجربة المستخدم: عرض مؤشرات التحميل، التعامل مع الأخطاء بشكل جيد، وتقديم رسائل واضحة.
  • الاختبار: استخدم بطاقات اختبار، محاكاة أخطاء الشبكة، واختبر على أجهزة متنوعة.

استكشاف الأخطاء

المشكلات الشائعة

  • WebView لا يفتح رابط الدفع: تأكد من أن رابط الدفع صالح ويستخدم HTTPS.
  • لم يتم استلام رد الاتصال: تحقق من عنوان URL الخاص بك وإعدادات الويب هوك.
  • أخطاء مفتاح واجهة برمجة التطبيقات: تحقق من أن مفتاح واجهة برمجة التطبيقات الخاص بك صحيح وله الأذونات اللازمة.

موارد إضافية

لأي أسئلة أو دعم، اتصل بـ [email protected].