getStripeConfig(); if (empty($stripeConfig['public_key_test']) || strpos($stripeConfig['public_key_test'], 'pk_test_') !== 0) { throw new Exception("❌ Clé publique TEST non configurée"); } echo "✅ Clé publique TEST configurée\n"; if (empty($stripeConfig['secret_key_test']) || strpos($stripeConfig['secret_key_test'], 'sk_test_') !== 0) { throw new Exception("❌ Clé secrète TEST non configurée"); } echo "✅ Clé secrète TEST configurée\n"; echo "✅ Mode: " . ($stripeConfig['mode'] ?? 'test') . "\n\n"; // Initialiser la base de données avant le service Stripe Database::init($config->getDatabaseConfig()); // Test 2: Service Stripe echo "2. Test du service Stripe...\n"; $stripeService = \App\Services\StripeService::getInstance(); echo "✅ Service Stripe initialisé\n"; echo "✅ Mode TEST: " . ($stripeService->isTestMode() ? 'Oui' : 'Non') . "\n"; // Masquer la clé publique pour l'affichage $publicKey = $stripeService->getPublicKey(); $maskedKey = substr($publicKey, 0, 10) . '...' . substr($publicKey, -4); echo "✅ Clé publique: $maskedKey\n\n"; // Test 3: Base de données echo "3. Test de la base de données...\n"; Database::init($config->getDatabaseConfig()); $db = Database::getInstance(); // Vérifier les tables Stripe $stmt = $db->prepare("SHOW TABLES LIKE 'stripe_%'"); $stmt->execute(); $tables = $stmt->fetchAll(PDO::FETCH_COLUMN); echo "Tables Stripe trouvées: " . count($tables) . "\n"; foreach ($tables as $table) { echo " ✅ $table\n"; } if (count($tables) < 7) { echo "⚠️ Attention: Toutes les tables ne sont pas créées (attendu: 7+)\n"; } echo "\n"; // Test 4: Vérifier les appareils Android certifiés echo "4. Test des appareils Android certifiés...\n"; $stmt = $db->prepare("SELECT COUNT(*) as count FROM stripe_android_certified_devices WHERE tap_to_pay_certified = 1"); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); echo "✅ Appareils Android certifiés: " . $result['count'] . "\n\n"; // Test 5: Test de connexion à l'API Stripe echo "5. Test de connexion à l'API Stripe...\n"; try { \Stripe\Stripe::setApiKey($stripeConfig['secret_key_test']); $balance = \Stripe\Balance::retrieve(); echo "✅ Connexion à Stripe réussie!\n"; echo " Solde disponible: " . number_format($balance->available[0]->amount / 100, 2) . " " . strtoupper($balance->available[0]->currency) . "\n"; echo " Solde en attente: " . number_format($balance->pending[0]->amount / 100, 2) . " " . strtoupper($balance->pending[0]->currency) . "\n"; } catch (Exception $e) { echo "❌ Erreur de connexion Stripe: " . $e->getMessage() . "\n"; } echo "\n================================\n"; echo "✨ Tests terminés avec succès!\n"; echo "================================\n\n"; echo "Prochaines étapes:\n"; echo "1. Créer un webhook dans le Dashboard Stripe\n"; echo "2. Activer Stripe Connect et Terminal\n"; echo "3. Tester les endpoints via l'app ou Postman\n"; } catch (Exception $e) { echo "\n❌ ERREUR: " . $e->getMessage() . "\n"; echo "Trace: " . $e->getTraceAsString() . "\n"; exit(1); }