AsaasWebhookController.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Controllers\Webhooks;
  3. use App\Http\Controllers\Controller;
  4. use App\Jobs\ProcessAsaasWebhookJob;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Log;
  8. class AsaasWebhookController extends Controller
  9. {
  10. public function handle(Request $request): JsonResponse
  11. {
  12. $expectedToken = config('services.asaas.webhook_token');
  13. if (empty($expectedToken)) {
  14. Log::warning('Asaas Webhook: ASAAS_WEBHOOK_TOKEN não está configurado no .env');
  15. return response()->json(['error' => 'Webhook não configurado'], 500);
  16. }
  17. $receivedToken = $request->header('asaas-access-token');
  18. if ($receivedToken !== $expectedToken) {
  19. Log::warning('Asaas Webhook: token inválido recebido', [
  20. 'received' => substr($receivedToken ?? '', 0, 10) . '...',
  21. 'ip' => $request->ip(),
  22. ]);
  23. return response()->json(['error' => 'Unauthorized'], 401);
  24. }
  25. $payload = $request->all();
  26. Log::info('Asaas Webhook recebido', [
  27. 'event' => $payload['event'] ?? 'unknown',
  28. 'payment_id' => $payload['payment']['id'] ?? null,
  29. ]);
  30. ProcessAsaasWebhookJob::dispatch($payload);
  31. return response()->json(['status' => 'received'], 200);
  32. }
  33. }