@paykit-sdk/core
Version:
The Payment Toolkit for Typescript
127 lines (122 loc) • 3.37 kB
JavaScript
import { z } from 'zod';
// src/resources/payment.ts
var metadataSchema = z.record(z.string(), z.string());
// src/tools/utils.ts
var schema = () => {
return (schema2) => schema2;
};
var billingAddressSchema = schema()(
z.object({
name: z.string().min(1, "Recipient name is required"),
line1: z.string().min(1, "Address line 1 is required"),
line2: z.string().default("").optional(),
city: z.string().min(1, "City is required"),
state: z.string().optional(),
// Optional because not all countries use states
postal_code: z.string().min(1, "Postal code is required"),
country: z.string().length(2, "Country must be a 2-letter ISO code").toUpperCase(),
phone: z.string().optional()
})
);
var billingSchema = schema()(
z.object({
address: billingAddressSchema,
carrier: z.string().optional(),
currency: z.string().min(1, "Currency is required")
})
);
schema()(
z.object({
id: z.string(),
email: z.string().email(),
name: z.string(),
phone: z.string().nullable(),
metadata: metadataSchema.optional(),
custom_fields: z.record(z.string(), z.unknown()).optional(),
created_at: z.date(),
updated_at: z.date().nullable()
})
);
var payeeSchema = schema()(
z.union([
z.object({ email: z.string().email() }),
z.object({ id: z.union([z.string(), z.number()]) })
])
);
schema()(
z.object({
email: z.string().email(),
name: z.string().optional(),
phone: z.string().nullable().optional(),
metadata: metadataSchema.optional(),
billing: billingSchema.nullable(),
provider_metadata: z.record(z.string(), z.unknown()).optional()
})
);
schema()(
z.object({
email: z.string().email().optional(),
name: z.string().optional(),
metadata: metadataSchema.optional(),
provider_metadata: z.record(z.string(), z.unknown()).optional()
})
);
schema()(
z.object({
id: z.string()
})
);
// src/resources/payment.ts
var paymentStatusSchema = z.enum([
"pending",
"processing",
"requires_action",
"requires_capture",
"succeeded",
"canceled",
"failed"
]);
var paymentSchema = schema()(
z.object({
id: z.string(),
amount: z.number().min(0),
currency: z.string(),
customer: payeeSchema.nullable(),
status: paymentStatusSchema,
metadata: metadataSchema,
item_id: z.string().nullable(),
requires_action: z.boolean(),
payment_url: z.string().nullable()
})
);
var createPaymentSchema = schema()(
paymentSchema.omit({
id: true,
status: true,
metadata: true,
requires_action: true,
payment_url: true
}).extend({
metadata: z.record(z.string(), z.unknown()).optional(),
provider_metadata: z.record(z.string(), z.unknown()).optional(),
billing: billingSchema.optional(),
capture_method: z.enum(["automatic", "manual"])
})
);
var updatePaymentSchema = schema()(
paymentSchema.partial().extend({
provider_metadata: z.record(z.string(), z.unknown()).optional()
})
);
var retrievePaymentSchema = schema()(
paymentSchema.pick({ id: true })
);
var deletePaymentSchema = schema()(
paymentSchema.pick({ id: true })
);
var capturePaymentSchema = schema()(
z.object({
amount: z.number()
})
);
export { capturePaymentSchema, createPaymentSchema, deletePaymentSchema, paymentSchema, paymentStatusSchema, retrievePaymentSchema, updatePaymentSchema };