Checkout‑Registrierung validiert jetzt die E‑Mail‑Länge, und die Checkout‑Flows sind Paddle‑only: Stripe‑Endpoints/
Services/Helpers sind entfernt, API/Frontend angepasst, Tests auf Paddle umgestellt. Außerdem wurde die CSP gestrafft und Stripe‑Texte in den Abandoned‑Checkout‑Mails ersetzt.
This commit is contained in:
@@ -2194,39 +2194,13 @@ export async function getTenantAddonHistory(page = 1, perPage = 25): Promise<{
|
||||
return { data: rows, meta };
|
||||
}
|
||||
|
||||
export async function createTenantPackagePaymentIntent(packageId: number): Promise<string> {
|
||||
const response = await authorizedFetch('/api/v1/tenant/packages/payment-intent', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({ package_id: packageId }),
|
||||
});
|
||||
|
||||
const data = await jsonOrThrow<{ client_secret: string }>(
|
||||
response,
|
||||
'Failed to create package payment intent'
|
||||
);
|
||||
|
||||
if (!data.client_secret) {
|
||||
throw new Error('Missing client secret in response');
|
||||
}
|
||||
|
||||
return data.client_secret;
|
||||
}
|
||||
|
||||
export async function completeTenantPackagePurchase(params: {
|
||||
packageId: number;
|
||||
paymentMethodId?: string;
|
||||
paddleTransactionId?: string;
|
||||
paddleTransactionId: string;
|
||||
}): Promise<void> {
|
||||
const { packageId, paymentMethodId, paddleTransactionId } = params;
|
||||
const { packageId, paddleTransactionId } = params;
|
||||
const payload: Record<string, unknown> = { package_id: packageId };
|
||||
|
||||
if (paymentMethodId) {
|
||||
payload.payment_method_id = paymentMethodId;
|
||||
}
|
||||
|
||||
if (paddleTransactionId) {
|
||||
payload.paddle_transaction_id = paddleTransactionId;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user