diff --git a/app/Http/Controllers/BillingController.php b/app/Http/Controllers/BillingController.php index 6c7d17d..36f8f09 100644 --- a/app/Http/Controllers/BillingController.php +++ b/app/Http/Controllers/BillingController.php @@ -5,7 +5,9 @@ namespace App\Http\Controllers; use App\Enums\CreditProductType; use App\Http\Resources\CreditProductResource; use App\Models\CreditProduct; +use App\Services\MobileDeepLink; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\AnonymousResourceCollection; @@ -74,6 +76,13 @@ class BillingController extends Controller ]); } + public function redirectToMobileApp(string $status): RedirectResponse + { + abort_unless(in_array($status, ['success', 'cancel', 'portal'], true), 404); + + return redirect()->away(MobileDeepLink::to("billing/{$status}")); + } + private function ensureStripeCustomer(mixed $user): void { if (! is_object($user) || ! method_exists($user, 'createOrGetStripeCustomer')) { @@ -85,8 +94,6 @@ class BillingController extends Controller private function redirectUrl(string $status): string { - $scheme = trim((string) config('app.mobile_scheme', env('APP_MOBILE_SCHEME', 'bowly')), ':/'); - - return "{$scheme}:///billing/{$status}"; + return route('billing.web-return', ['status' => $status]); } } diff --git a/routes/web.php b/routes/web.php index 31fd33f..b521c75 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ middleware('throttle:6,1') ->name('password.web-update'); Route::get('strava/callback', [StravaController::class, 'redirectToMobileApp'])->name('strava.web-callback'); +Route::get('billing/return/{status}', [BillingController::class, 'redirectToMobileApp'])->name('billing.web-return');