@vulog/aima-billing
Version:
Invoice management, credits, wallets, and refunds.
30 lines (25 loc) • 932 B
text/typescript
import { Client } from '@vulog/aima-client';
import { z } from 'zod';
import { Invoice, ManualPayment } from './types';
const schema = z.object({
invoiceId: z.string().trim().min(1).uuid(),
manualPayment: z.object({
requiresActionReturnUrl: z.string().default(''),
online: z.boolean().default(true),
scope: z.enum(['RENTAL', 'DEPOSIT']),
}),
});
export const payInvoice = async (client: Client, invoiceId: string, manualPayment: ManualPayment) => {
const result = schema.safeParse({ invoiceId, manualPayment });
if (!result.success) {
throw new TypeError('Invalid args', {
cause: result.error.issues,
});
}
return client
.post<Invoice>(
`/boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/invoices/${result.data.invoiceId}/payment`,
result.data.manualPayment
)
.then(({ data }) => data);
};