fix: urls and payment post routes.

This commit is contained in:
Darshan
2026-01-18 11:38:05 +05:30
parent 654db2e525
commit 20c785a692
7 changed files with 70 additions and 42 deletions
+15 -9
View File
@@ -11,7 +11,7 @@ import { get, writable } from 'svelte/store';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { addNotification } from './notifications';
import { organization } from './organization';
import { base } from '$app/paths';
import { resolve } from '$app/paths';
import { ThemeDarkCloud, ThemeLightCloud } from '$themes';
import Color from 'color';
import type { Models } from '@appwrite.io/console';
@@ -186,15 +186,20 @@ export async function setPaymentMethod(providerMethodId: string, name: string, s
}
}
export async function confirmPayment(
orgId: string,
clientSecret: string,
paymentMethodId: string,
route?: string
) {
export async function confirmPayment(config: {
clientSecret: string;
paymentMethodId: string;
orgId?: string;
route?: string;
}) {
const { clientSecret, paymentMethodId, orgId, route } = config;
try {
const url =
window.location.origin + (route ? route : `${base}/organization-${orgId}/billing`);
const resolvedUrl = resolve('/(console)/organization-[organization]/billing', {
organization: orgId
});
const url = window.location.origin + (route ? route : resolvedUrl);
const paymentMethod = await sdk.forConsole.account.getPaymentMethod({ paymentMethodId });
@@ -205,6 +210,7 @@ export async function confirmPayment(
payment_method: paymentMethod.providerMethodId
}
});
if (error) {
throw error.message;
}
@@ -16,7 +16,7 @@
if (page.url.searchParams.has('clientSecret')) {
const clientSecret = page.url.searchParams.get('clientSecret');
const paymentMethodId = page.url.searchParams.get('paymentMethodId');
await confirmPayment('', clientSecret, paymentMethodId);
await confirmPayment({ clientSecret, paymentMethodId });
}
});
</script>
@@ -1,6 +1,6 @@
<script lang="ts">
import { afterNavigate, goto, invalidate } from '$app/navigation';
import { base } from '$app/paths';
import { base, resolve } from '$app/paths';
import { page } from '$app/state';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { CreditsApplied, SelectPaymentMethod } from '$lib/components/billing';
@@ -175,12 +175,13 @@
}
}
params.append('invites', collaborators.join(','));
await confirmPayment(
'',
const resolvedUrl = resolve('/(console)/apply-credit');
await confirmPayment({
clientSecret,
paymentMethodId,
`${base}/apply-credit?${params}`
);
route: `${resolvedUrl}?${params}`
});
org = await sdk.forConsole.organizations.validatePayment({
organizationId: org.organizationId,
@@ -1,6 +1,6 @@
<script lang="ts">
import { afterNavigate, goto, invalidate, preloadData } from '$app/navigation';
import { base, resolve } from '$app/paths';
import { resolve } from '$app/paths';
import { page } from '$app/state';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { PlanComparisonBox, PlanSelection, SelectPaymentMethod } from '$lib/components/billing';
@@ -85,6 +85,15 @@
}
});
async function preloadAndNavigate(organizationId: string) {
const resolvedUrl = resolve('/(console)/organization-[organization]', {
organization: organizationId
});
await preloadData(resolvedUrl);
await goto(resolvedUrl);
}
async function validate(organizationId: string, invites: string[]) {
try {
const org = await sdk.forConsole.organizations.validatePayment({
@@ -93,8 +102,7 @@
});
if (!isPaymentAuthenticationRequired(org)) {
await preloadData(`${base}/console/organization-${org.$id}`);
await goto(`${base}/console/organization-${org.$id}`);
await preloadAndNavigate(org.$id);
addNotification({
type: 'success',
message: `${org.name ?? 'Organization'} has been created`
@@ -142,12 +150,14 @@
}
}
params.append('invites', collaborators.join(','));
await confirmPayment(
'',
const resolvedUrl = resolve('/(console)/create-organization');
await confirmPayment({
clientSecret,
paymentMethodId,
`${base}/create-organization?${params}`
);
route: `${resolvedUrl}?${params}`
});
await validate(org.organizationId, collaborators);
}
}
@@ -160,8 +170,7 @@
if (!isPaymentAuthenticationRequired(org)) {
await invalidate(Dependencies.ACCOUNT);
await preloadData(`${base}/organization-${org.$id}`);
await goto(`${base}/organization-${org.$id}`);
await preloadAndNavigate(org.$id);
addNotification({
type: 'success',
message: `${org.name ?? 'Organization'} has been created`
@@ -51,12 +51,12 @@
invoiceId
});
await confirmPayment(
organization.$id,
invoice.clientSecret,
organization.paymentMethodId,
`${baseUrl}?type=validate-invoice&invoice=${invoice.$id}`
);
await confirmPayment({
clientSecret: invoice.clientSecret,
paymentMethodId: organization.paymentMethodId,
orgId: organization.$id,
route: `${baseUrl}?type=validate-invoice&invoice=${invoice.$id}`
});
}
if (
@@ -87,7 +87,11 @@
}
if (page.url.searchParams.has('clientSecret')) {
const clientSecret = page.url.searchParams.get('clientSecret');
await confirmPayment(organization.$id, clientSecret, organization.paymentMethodId);
await confirmPayment({
clientSecret,
paymentMethodId: organization.paymentMethodId,
orgId: organization.$id
});
}
});
</script>
@@ -19,7 +19,7 @@
import { onMount } from 'svelte';
import { getApiEndpoint, sdk } from '$lib/stores/sdk';
import { formatCurrency } from '$lib/helpers/numbers';
import { base } from '$app/paths';
import { resolve } from '$app/paths';
import type { PaymentMethod as StripePaymentMethod } from '@stripe/stripe-js';
import type { Models } from '@appwrite.io/console';
@@ -117,12 +117,16 @@
if (status !== 'succeeded' && status !== 'cancelled') {
// probably still pending, confirm via stripe!
await confirmPayment(
$organization.$id,
const resolvedUrl = resolve('/(console)/organization-[organization]/billing', {
organization: $organization.$id
});
await confirmPayment({
clientSecret,
paymentMethodId ? paymentMethodId : $organization.paymentMethodId,
`${base}/organization-${$organization.$id}/billing?type=validate-invoice&invoice=${invoice.$id}`
);
paymentMethodId: paymentMethodId ?? $organization.paymentMethodId,
orgId: $organization.$id,
route: `${resolvedUrl}?type=validate-invoice&invoice=${invoice.$id}`
});
await sdk.forConsole.organizations.validateInvoice({
organizationId: $organization.$id,
@@ -1,6 +1,6 @@
<script lang="ts">
import { afterNavigate, goto, invalidate } from '$app/navigation';
import { base, resolve } from '$app/paths';
import { resolve } from '$app/paths';
import { page } from '$app/state';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { PlanComparisonBox, PlanSelection, SelectPaymentMethod } from '$lib/components/billing';
@@ -268,12 +268,16 @@
params.append('id', org.organizationId);
params.append('invites', collaborators.join(','));
params.append('plan', selectedPlan);
await confirmPayment(
'',
const resolvedUrl = resolve('/(console)/organization-[organization]/change-plan', {
organization: org.organizationId
});
await confirmPayment({
clientSecret,
paymentMethodId,
base + '/change-plan?' + params.toString()
);
route: `${resolvedUrl}?${params.toString()}`
});
await validate(org.organizationId, collaborators);
}