Testing Stripe Webhook Endpoint ================================ Webhook URL: https://barber.aibitsoft.cloud/api/webhooks/stripe Payment Intent ID: pi_test_1234567890 Using webhook secret: whsec_mmMjXX... Test 1: Checking if endpoint is accessible... ✓ Endpoint is accessible (HTTP 400) Test 2: Testing charge.refunded webhook (with valid signature)... HTTP Status: 500 Response: {"success":false,"message":"SQLSTATE[HY000] [1045] Access denied for user 'aibitsofts_barber'@'localhost' (using password: YES) (Connection: mysql, SQL: select * from `appointments` where `stripe_payment_intent_id` = pi_test_1234567890 limit 1)","error":{"message":"SQLSTATE[HY000] [1045] Access denied for user 'aibitsofts_barber'@'localhost' (using password: YES) (Connection: mysql, SQL: select * from `appointments` where `stripe_payment_intent_id` = pi_test_1234567890 limit 1)","file":"\/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php","line":829,"trace":"#0 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php(783): Illuminate\\Database\\Connection->runQueryCallback('select * from `...', Array, Object(Closure))\n#1 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php(414): Illuminate\\Database\\Connection->run('select * from `...', Array, Object(Closure))\n#2 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php(2913): Illuminate\\Database\\Connection->select('select * from `...', Array, true)\n#3 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php(2902): Illuminate\\Database\\Query\\Builder->runSelect()\n#4 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php(3456): Illuminate\\Database\\Query\\Builder->Illuminate\\Database\\Query\\{closure}()\n#5 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Query\/Builder.php(2901): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure))\n#6 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Eloquent\/Builder.php(739): Illuminate\\Database\\Query\\Builder->get(Array)\n#7 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Eloquent\/Builder.php(723): Illuminate\\Database\\Eloquent\\Builder->getModels(Array)\n#8 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Concerns\/BuildsQueries.php(333): Illuminate\\Database\\Eloquent\\Builder->get(Array)\n#9 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/app\/Http\/Controllers\/StripeWebhookController.php(211): Illuminate\\Database\\Eloquent\\Builder->first()\n#10 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/app\/Http\/Controllers\/StripeWebhookController.php(74): App\\Http\\Controllers\\StripeWebhookController->handleChargeRefunded(Object(Stripe\\Charge))\n#11 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Controller.php(54): App\\Http\\Controllers\\StripeWebhookController->handleWebhook(Object(Illuminate\\Http\\Request))\n#12 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction('handleWebhook', Array)\n#13 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php(259): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\StripeWebhookController), 'handleWebhook')\n#14 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php(205): Illuminate\\Routing\\Route->runController()\n#15 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(806): Illuminate\\Routing\\Route->run()\n#16 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))\n#17 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Middleware\/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#18 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#19 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Middleware\/ThrottleRequests.php(122): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#20 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Middleware\/ThrottleRequests.php(87): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequestUsingNamedLimiter(Object(Illuminate\\Http\\Request), Object(Closure), 'api', Object(Closure))\n#21 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'api')\n#22 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/sanctum\/src\/Http\/Middleware\/EnsureFrontendRequestsAreStateful.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#23 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(144): Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful->Laravel\\Sanctum\\Http\\Middleware\\{closure}(Object(Illuminate\\Http\\Request))\n#24 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#25 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/sanctum\/src\/Http\/Middleware\/EnsureFrontendRequestsAreStateful.php(24): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))\n#26 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#27 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#28 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(805): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))\n#29 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(784): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))\n#30 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(748): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))\n#31 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(737): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))\n#32 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))\n#33 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(144): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))\n#34 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#35 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#36 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#37 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#38 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#39 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#40 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#41 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#42 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/PreventRequestsDuringMaintenance.php(99): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#43 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#44 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Http\/Middleware\/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#45 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#46 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Http\/Middleware\/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#47 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(183): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))\n#48 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))\n#49 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))\n#50 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))\n#51 \/home\/aibitsofts\/public_html\/barber.aibitsoft.cloud\/public\/index.php(36): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))\n#52 {main}"}} ✗ Webhook test failed. Next steps: 1. Check Laravel logs: tail -f storage/logs/laravel.log 2. Look for: Stripe webhook: Charge refunded 3. Use a real payment_intent_id from DB to verify appointment updates.