| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <?php
- namespace App\Http\Controllers\Webhooks;
- use App\Http\Controllers\Controller;
- use App\Jobs\ProcessAsaasWebhookJob;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- class AsaasWebhookController extends Controller
- {
- public function handle(Request $request): JsonResponse
- {
- $expectedToken = config('services.asaas.webhook_token');
- if (empty($expectedToken)) {
- Log::warning('Asaas Webhook: ASAAS_WEBHOOK_TOKEN não está configurado no .env');
- return response()->json(['error' => 'Webhook não configurado'], 500);
- }
- $receivedToken = $request->header('asaas-access-token');
- if ($receivedToken !== $expectedToken) {
- Log::warning('Asaas Webhook: token inválido recebido', [
- 'received' => substr($receivedToken ?? '', 0, 10) . '...',
- 'ip' => $request->ip(),
- ]);
- return response()->json(['error' => 'Unauthorized'], 401);
- }
- $payload = $request->all();
- Log::info('Asaas Webhook recebido', [
- 'event' => $payload['event'] ?? 'unknown',
- 'payment_id' => $payload['payment']['id'] ?? null,
- ]);
- ProcessAsaasWebhookJob::dispatch($payload);
- return response()->json(['status' => 'received'], 200);
- }
- }
|