Files
cfw-autumn/shared/api/billing/common/billingResponse.ts
John Yeo baa3b00295 wip
2026-01-29 09:44:34 +00:00

42 lines
1.0 KiB
TypeScript

import { z } from "zod/v4";
export const PaymentFailureCodeEnum = z.enum([
"3ds_required",
"payment_method_required",
"payment_failed",
]);
export type PaymentFailureCode = z.infer<typeof PaymentFailureCodeEnum>;
export const BillingResponseRequiredActionSchema = z.object({
code: PaymentFailureCodeEnum,
reason: z.string(),
});
export const BillingResponseSchema = z.object({
customer_id: z.string(),
entity_id: z.string().optional(),
invoice: z
.object({
status: z.string().nullable(),
stripe_id: z.string(),
total: z.number(),
currency: z.string(),
hosted_invoice_url: z.string().nullable(),
})
.optional(),
payment_url: z.string().nullable(),
// Checkout URL for Stripe Checkout session (when customer has no payment method)
checkout_url: z.string().nullable(),
required_action: BillingResponseRequiredActionSchema.optional(),
});
export type BillingResponse = z.infer<typeof BillingResponseSchema>;
export type BillingResponseRequiredAction = z.infer<
typeof BillingResponseRequiredActionSchema
>;