namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Controllers\Researcher\DepositController; use App\Models\Setting; use Illuminate\Http\Request; class PaystackWebhookController extends Controller { public function handle(Request $request) { $secretKey = Setting::get('gateway_secret_key', config('services.paystack.secret_key')); $signature = $request->header('x-paystack-signature'); // Verify Paystack HMAC-SHA512 Signature if (!$signature || $signature !== hash_hmac('sha512', $request->getContent(), $secretKey)) { return response()->json(['message' => 'Invalid signature'], 400); } $event = $request->input('event'); $payload = $request->input('data'); if ($event === 'charge.success') { $reference = $payload['reference']; DepositController::fulfillDeposit($reference, $payload); } return response()->json(['status' => 'success'], 200); } }