feat: deeplink
Laravel CI-CD / Tests Unitaires (push) Successful in 1m30s Details
Laravel CI-CD / Deploy with Kamal (push) Successful in 1m50s Details

This commit is contained in:
Leon Morival 2026-05-27 10:56:56 +02:00
parent 6a24d07cec
commit 51b50aa1d0
2 changed files with 12 additions and 3 deletions

View File

@ -5,7 +5,9 @@ namespace App\Http\Controllers;
use App\Enums\CreditProductType; use App\Enums\CreditProductType;
use App\Http\Resources\CreditProductResource; use App\Http\Resources\CreditProductResource;
use App\Models\CreditProduct; use App\Models\CreditProduct;
use App\Services\MobileDeepLink;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection; 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 private function ensureStripeCustomer(mixed $user): void
{ {
if (! is_object($user) || ! method_exists($user, 'createOrGetStripeCustomer')) { if (! is_object($user) || ! method_exists($user, 'createOrGetStripeCustomer')) {
@ -85,8 +94,6 @@ class BillingController extends Controller
private function redirectUrl(string $status): string private function redirectUrl(string $status): string
{ {
$scheme = trim((string) config('app.mobile_scheme', env('APP_MOBILE_SCHEME', 'bowly')), ':/'); return route('billing.web-return', ['status' => $status]);
return "{$scheme}:///billing/{$status}";
} }
} }

View File

@ -1,6 +1,7 @@
<?php <?php
use App\Http\Controllers\AuthController; use App\Http\Controllers\AuthController;
use App\Http\Controllers\BillingController;
use App\Http\Controllers\StravaController; use App\Http\Controllers\StravaController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
@ -10,3 +11,4 @@ Route::post('password/reset', [AuthController::class, 'resetPasswordFromView'])
->middleware('throttle:6,1') ->middleware('throttle:6,1')
->name('password.web-update'); ->name('password.web-update');
Route::get('strava/callback', [StravaController::class, 'redirectToMobileApp'])->name('strava.web-callback'); Route::get('strava/callback', [StravaController::class, 'redirectToMobileApp'])->name('strava.web-callback');
Route::get('billing/return/{status}', [BillingController::class, 'redirectToMobileApp'])->name('billing.web-return');