@vulog/aima-billing
Version:
Invoice management, credits, wallets, and refunds.
35 lines (30 loc) • 1.22 kB
text/typescript
import { Client } from '@vulog/aima-client';
import { z } from 'zod';
import { ChargeProductInfo, Invoice } from './types';
const schema = z.object({
productId: z.string().trim().min(1).uuid(),
serviceId: z.string().trim().min(1).uuid().nullable().optional(),
amount: z.number().min(0),
userId: z.string().trim().min(1).uuid(),
entityId: z.string().trim().min(1).uuid(),
subscriptionId: z.string().trim().min(1).uuid().nullable().optional(),
productNotes: z.string().trim().nullable().optional(),
originId: z.string().trim().nullable().optional(),
chargeProductRequestId: z.string().trim().min(1).uuid().nullable().optional(),
additionalInfo: z
.object({
manualPayment: z.boolean().optional(),
})
.optional(),
});
export const chargeProduct = async (client: Client, info: ChargeProductInfo) => {
const result = schema.safeParse(info);
if (!result.success) {
throw new TypeError('Invalid args', {
cause: result.error.issues,
});
}
return client
.post<Invoice>(`/boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/invoices/product`, info)
.then(({ data }) => data);
};