saleor-apps-redis_apl/apps/taxes/src/pages/api/webhooks/checkout-calculate-taxes.ts

28 lines
1.2 KiB
TypeScript
Raw Normal View History

import { UntypedCalculateTaxesDocument } from "../../../../generated/graphql";
import { saleorApp } from "../../../../saleor-app";
import { createLogger } from "../../../lib/logger";
import { withTaxesWebhook } from "../../../lib/saleor/with-taxes-webhook";
import { ActiveTaxProvider } from "../../../modules/taxes/active-tax-provider";
import { TaxSaleorSyncWebhook } from "../../../modules/taxes/tax-webhook";
export const checkoutCalculateTaxesSyncWebhook = new TaxSaleorSyncWebhook({
name: "CheckoutCalculateTaxes",
apl: saleorApp.apl,
syncEvent: "CHECKOUT_CALCULATE_TAXES",
subscriptionQueryAst: UntypedCalculateTaxesDocument,
webhookPath: "/api/webhooks/checkout-calculate-taxes",
});
const handler = withTaxesWebhook(async (payload, config, res) => {
const logger = createLogger({ fn: "Inside CHECKOUT_CALCULATE_TAXES handler" });
logger.info("Handler called");
const { provider, channel } = config;
const taxProvider = new ActiveTaxProvider(provider);
const calculatedTaxes = await taxProvider.calculate(payload.taxBase, channel);
logger.info({ calculatedTaxes }, "Taxes calculated");
return res.status(200).json(calculatedTaxes);
});
export default checkoutCalculateTaxesSyncWebhook.createHandler(handler);