Add event addon purchase success page with confetti
This commit is contained in:
@@ -86,6 +86,8 @@ class EventAddonCheckoutService
|
||||
$addonMetadata = $this->resolveAddonMetadata($addon);
|
||||
$entitlements = $this->resolveAddonEntitlements($addonKey, $addonMetadata);
|
||||
$price = $this->catalog->resolvePrice($addonKey);
|
||||
$successUrl = $this->appendQueryParam($payload['success_url'] ?? null, 'addon_intent', $addonIntent);
|
||||
$cancelUrl = $this->appendQueryParam($payload['cancel_url'] ?? null, 'addon_intent', $addonIntent);
|
||||
|
||||
$providerMetadata = array_filter([
|
||||
'tenant_id' => (string) $tenant->id,
|
||||
@@ -98,13 +100,13 @@ class EventAddonCheckoutService
|
||||
'legal_version' => $this->resolveLegalVersion(),
|
||||
'accepted_terms' => $acceptedTerms ? '1' : '0',
|
||||
'accepted_waiver' => $acceptedWaiver ? '1' : '0',
|
||||
'success_url' => $payload['success_url'] ?? null,
|
||||
'cancel_url' => $payload['cancel_url'] ?? null,
|
||||
'success_url' => $successUrl,
|
||||
'cancel_url' => $cancelUrl,
|
||||
], static fn ($value) => $value !== null && $value !== '');
|
||||
|
||||
$response = $this->checkout->createVariantCheckout($variantId, $providerMetadata, [
|
||||
'success_url' => $payload['success_url'] ?? null,
|
||||
'return_url' => $payload['cancel_url'] ?? null,
|
||||
'success_url' => $successUrl,
|
||||
'return_url' => $cancelUrl,
|
||||
'customer_email' => $tenant->contact_email ?? $tenant->user?->email,
|
||||
]);
|
||||
|
||||
@@ -227,7 +229,9 @@ class EventAddonCheckoutService
|
||||
]);
|
||||
|
||||
$successUrl = $payload['success_url'] ?? null;
|
||||
$successUrl = $this->appendQueryParam($successUrl, 'addon_intent', $addonIntent);
|
||||
$cancelUrl = $payload['cancel_url'] ?? $successUrl;
|
||||
$cancelUrl = $this->appendQueryParam($cancelUrl, 'addon_intent', $addonIntent);
|
||||
$paypalReturnUrl = route('paypal.addon.return', absolute: true);
|
||||
|
||||
try {
|
||||
@@ -312,6 +316,23 @@ class EventAddonCheckoutService
|
||||
return config('app.legal_version', now()->toDateString());
|
||||
}
|
||||
|
||||
protected function appendQueryParam(?string $url, string $key, string $value): ?string
|
||||
{
|
||||
if (! is_string($url) || trim($url) === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
[$base, $fragment] = array_pad(explode('#', $url, 2), 2, null);
|
||||
$separator = str_contains($base, '?') ? '&' : '?';
|
||||
$next = $base.$separator.rawurlencode($key).'='.rawurlencode($value);
|
||||
|
||||
if ($fragment === null) {
|
||||
return $next;
|
||||
}
|
||||
|
||||
return $next.'#'.$fragment;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $addon
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user