Minor modifications made to the billing service handlers to improve data interpretation and error processing. The 'getLineItemTypeById' function now uses 'item.variant' for more accurate line item type identification. Unnecessary 'Crypto' object instantiation has been removed in 'createHmac', while improved formatting applied to the error logging within the billing webhook.
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { getBillingEventHandlerService } from '@kit/billing-gateway';
|
|
import { enhanceRouteHandler } from '@kit/next/routes';
|
|
import { getLogger } from '@kit/shared/logger';
|
|
import { getSupabaseRouteHandlerClient } from '@kit/supabase/route-handler-client';
|
|
|
|
import billingConfig from '~/config/billing.config';
|
|
|
|
/**
|
|
* @description Handle the webhooks from Stripe related to checkouts
|
|
*/
|
|
export const POST = enhanceRouteHandler(
|
|
async ({ request }) => {
|
|
const provider = billingConfig.provider;
|
|
const logger = await getLogger();
|
|
|
|
const ctx = {
|
|
name: 'billing.webhook',
|
|
provider,
|
|
};
|
|
|
|
logger.info(ctx, `Received billing webhook. Processing...`);
|
|
|
|
const supabaseClientProvider = () =>
|
|
getSupabaseRouteHandlerClient({ admin: true });
|
|
|
|
const service = await getBillingEventHandlerService(
|
|
supabaseClientProvider,
|
|
provider,
|
|
billingConfig,
|
|
);
|
|
|
|
try {
|
|
await service.handleWebhookEvent(request);
|
|
|
|
logger.info(ctx, `Successfully processed billing webhook`);
|
|
|
|
return new Response('OK', { status: 200 });
|
|
} catch (error) {
|
|
logger.error({ ...ctx, error }, `Failed to process billing webhook`);
|
|
|
|
return new Response('Failed to process billing webhook', {
|
|
status: 500,
|
|
});
|
|
}
|
|
},
|
|
{
|
|
auth: false,
|
|
},
|
|
);
|