feat(medusa,core-flows,types): API to create payment collections for order (#8617)

what:

- adds an API to create a payment collection for order
This commit is contained in:
Riqwan Thamir
2024-08-16 08:16:40 +00:00
committed by GitHub
parent bb72fda9ae
commit adcd25650c
9 changed files with 264 additions and 5 deletions
@@ -0,0 +1,22 @@
import { MiddlewareRoute } from "@medusajs/framework"
import { validateAndTransformBody } from "../../utils/validate-body"
import { validateAndTransformQuery } from "../../utils/validate-query"
import * as queryConfig from "./query-config"
import {
AdminCreatePaymentCollection,
AdminGetPaymentCollectionParams,
} from "./validators"
export const adminPaymentCollectionsMiddlewares: MiddlewareRoute[] = [
{
method: ["POST"],
matcher: "/admin/payment-collections",
middlewares: [
validateAndTransformBody(AdminCreatePaymentCollection),
validateAndTransformQuery(
AdminGetPaymentCollectionParams,
queryConfig.retrievePaymentCollectionTransformQueryConfig
),
],
},
]
@@ -0,0 +1,12 @@
export const defaultPaymentCollectionFields = [
"id",
"currency_code",
"amount",
"status",
"*payment_sessions",
]
export const retrievePaymentCollectionTransformQueryConfig = {
defaults: defaultPaymentCollectionFields,
isList: false,
}
@@ -0,0 +1,26 @@
import { createOrderPaymentCollectionWorkflow } from "@medusajs/core-flows"
import { HttpTypes } from "@medusajs/types"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../types/routing"
import { refetchEntity } from "../../utils/refetch-entity"
import { AdminCreatePaymentCollectionType } from "./validators"
export const POST = async (
req: AuthenticatedMedusaRequest<AdminCreatePaymentCollectionType>,
res: MedusaResponse<HttpTypes.AdminPaymentCollectionResponse>
) => {
const { result } = await createOrderPaymentCollectionWorkflow(req.scope).run({
input: req.body,
})
const paymentCollection = await refetchEntity(
"payment_collection",
result[0].id,
req.scope,
req.remoteQueryConfig.fields
)
res.status(200).json({ payment_collection: paymentCollection })
}
@@ -0,0 +1,17 @@
import { z } from "zod"
import { createSelectParams } from "../../utils/validators"
export type AdminGetPaymentCollectionParamsType = z.infer<
typeof AdminGetPaymentCollectionParams
>
export const AdminGetPaymentCollectionParams = createSelectParams()
export type AdminCreatePaymentCollectionType = z.infer<
typeof AdminCreatePaymentCollection
>
export const AdminCreatePaymentCollection = z
.object({
order_id: z.string(),
amount: z.number().optional(),
})
.strict()
+2
View File
@@ -16,6 +16,7 @@ import { adminInviteRoutesMiddlewares } from "./admin/invites/middlewares"
import { adminNotificationRoutesMiddlewares } from "./admin/notifications/middlewares"
import { adminOrderEditRoutesMiddlewares } from "./admin/order-edits/middlewares"
import { adminOrderRoutesMiddlewares } from "./admin/orders/middlewares"
import { adminPaymentCollectionsMiddlewares } from "./admin/payment-collections/middlewares"
import { adminPaymentRoutesMiddlewares } from "./admin/payments/middlewares"
import { adminPriceListsRoutesMiddlewares } from "./admin/price-lists/middlewares"
import { adminPricePreferencesRoutesMiddlewares } from "./admin/price-preferences/middlewares"
@@ -114,4 +115,5 @@ export default defineMiddlewares([
...adminExchangeRoutesMiddlewares,
...adminProductVariantRoutesMiddlewares,
...adminOrderEditRoutesMiddlewares,
...adminPaymentCollectionsMiddlewares,
])