Orders and Payments
Overview
The order
option is the important part that instructs declo in how to convert a basket to an order. The order can also have it's own data schema, to hold information like payment ids or other data that is related to the order and not the basket.
Data schema
declo-config.ts
import { z } from 'zod'
import { DecloConfig } from "@declo/config"
DecloConfig()
.order({
schema: z.object({
paymentId: z.string()
})
})
Configure the initiation of an order
declo-config.ts
import { z } from 'zod'
import { DecloConfig } from "@declo/config"
DecloConfig()
.order({
init: async (basket, { callbackUrl, id }) => {
const { token, url } = await createPaymentSession({
amount: basket.price,
callbackUrl,
id
});
return { order: id, payment: { token: token, url: url } };
}
})
Configure the completion of the order
declo-config.ts
import { z } from 'zod'
import { DecloConfig } from "@declo/config"
DecloConfig()
.order({
callback: async (order, queryParams, bodyData) => {
const payment = await getPaymentDataFromCallback(queryParams);
return {
order: {
data: {
paymentId: payment.id
}
}
};
}
})