feat(premium): native Nordic prices and subscribing during grace (#3274)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-08 04:21:54 +02:00
1 parent 0ef1cd14c3
commit 7a4aa42d4b
84 files changed
+7720 -4589

No files matched your search

@@ -6,6 +6,7 @@ import type {IDonationRepository} from '@app/api/donation/IDonationRepository';
import type {IEmailDnsValidationService} from '@app/api/infrastructure/IEmailDnsValidationService';
import {Logger} from '@app/api/Logger';
import {getBillingRepository} from '@app/api/middleware/ServiceRegistry';
import {shouldDisableAdaptivePricing} from '@app/api/utils/CurrencyUtils';
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
import {DonationAmountInvalidError} from '@fluxer/errors/src/domains/donation/DonationAmountInvalidError';
@@ -173,6 +174,7 @@ export class DonationCheckoutService {
enabled: true,
},
...(isBusiness ? {billing_address_collection: 'required' as const} : {}),
...(shouldDisableAdaptivePricing(params.currency) ? {adaptive_pricing: {enabled: false}} : {}),
...(mode === 'payment'
? {
customer_creation: 'always' as const,
@@ -131,6 +131,8 @@ describe('POST /donations/checkout', () => {
}
| undefined;
expect(lineItem?.price_data?.currency).toBe(currency);
const nordic = ['sek', 'dkk', 'nok'].includes(currency);
expect(session?.adaptive_pricing).toEqual(nordic ? {enabled: 'false'} : undefined);
});
test('accepts monthly interval', async () => {
const response = await createDonationCheckoutBuilder(harness)