Initial commit: Uruk Prize Platform architecture, backend core, mobile app, gateway caller & deployment pipeline

This commit is contained in:
Hamza-Ayed
2026-09-18 17:12:05 +03:00
commit 879dd36f1b
1149 changed files with 97122 additions and 0 deletions
@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace App\Controllers;
use Core\Request;
use Core\Response;
use App\Services\SuperQiParserService;
class PaymentController
{
/**
* POST /api/v1/payments/ingest-notification
* Invoked securely by the Android Bridge Listener app when a SuperQi/ZainCash notification arrives.
*/
public function ingestNotification(Request $request): void
{
$secret = $request->getHeader('x-listener-secret');
$expectedSecret = getenv('NOTIFICATION_INGEST_SECRET') ?: 'secure_ingest_key_for_android_bridge_listener';
if ($secret !== $expectedSecret) {
Response::forbidden('Invalid listener secret.');
}
$body = $request->getBody();
$result = SuperQiParserService::processIngestedNotification($body);
if (!$result['success']) {
Response::error($result['message'] ?? 'Ingestion failed', 400);
}
Response::success($result, 'Notification ingested and processed.');
}
/**
* POST /api/v1/payments/swiftpay-webhook
*/
public function swiftPayWebhook(Request $request): void
{
// Handle SwiftPayIQ transaction webhook
$payload = $request->getBody();
Response::success(['status' => 'received'], 'Webhook processed.');
}
}