feat(payment): PaymentCollection CRUD (#6124)
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
export const defaultPaymentCollectionData = [
|
||||||
|
{
|
||||||
|
id: "pay-col-id-1",
|
||||||
|
amount: 100,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
currency_code: "usd",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
amount: 200,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
currency_code: "usd",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "pay-col-id-3",
|
||||||
|
amount: 300,
|
||||||
|
region_id: "region-id-2",
|
||||||
|
currency_code: "usd",
|
||||||
|
},
|
||||||
|
]
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { CreatePaymentCollectionDTO } from "@medusajs/types"
|
||||||
|
import { SqlEntityManager } from "@mikro-orm/postgresql"
|
||||||
|
|
||||||
|
import { PaymentCollection } from "../../../src/models"
|
||||||
|
import { defaultPaymentCollectionData } from "./data"
|
||||||
|
|
||||||
|
export * from "./data"
|
||||||
|
|
||||||
|
export async function createPaymentCollections(
|
||||||
|
manager: SqlEntityManager,
|
||||||
|
paymentCollectionData: CreatePaymentCollectionDTO[] = defaultPaymentCollectionData
|
||||||
|
): Promise<PaymentCollection[]> {
|
||||||
|
const collections: PaymentCollection[] = []
|
||||||
|
|
||||||
|
for (let data of paymentCollectionData) {
|
||||||
|
let collection = manager.create(PaymentCollection, data)
|
||||||
|
|
||||||
|
await manager.persistAndFlush(collection)
|
||||||
|
}
|
||||||
|
|
||||||
|
return collections
|
||||||
|
}
|
||||||
@@ -0,0 +1,212 @@
|
|||||||
|
import { IPaymentModuleService } from "@medusajs/types"
|
||||||
|
import { SqlEntityManager } from "@mikro-orm/postgresql"
|
||||||
|
|
||||||
|
import { initialize } from "../../../../src/initialize"
|
||||||
|
import { DB_URL, MikroOrmWrapper } from "../../../utils"
|
||||||
|
import { createPaymentCollections } from "../../../__fixtures__/payment-collection"
|
||||||
|
|
||||||
|
jest.setTimeout(30000)
|
||||||
|
|
||||||
|
describe("Payment Module Service", () => {
|
||||||
|
let service: IPaymentModuleService
|
||||||
|
let repositoryManager: SqlEntityManager
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await MikroOrmWrapper.setupDatabase()
|
||||||
|
repositoryManager = await MikroOrmWrapper.forkManager()
|
||||||
|
|
||||||
|
service = await initialize({
|
||||||
|
database: {
|
||||||
|
clientUrl: DB_URL,
|
||||||
|
schema: process.env.MEDUSA_PAYMNET_DB_SCHEMA,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
await createPaymentCollections(repositoryManager)
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await MikroOrmWrapper.clearDatabase()
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("create", () => {
|
||||||
|
it("should throw an error when required params are not passed", async () => {
|
||||||
|
let error = await service
|
||||||
|
.createPaymentCollection([
|
||||||
|
{
|
||||||
|
amount: 200,
|
||||||
|
region_id: "req_123",
|
||||||
|
} as any,
|
||||||
|
])
|
||||||
|
.catch((e) => e)
|
||||||
|
|
||||||
|
expect(error.message).toContain(
|
||||||
|
"Value for PaymentCollection.currency_code is required, 'undefined' found"
|
||||||
|
)
|
||||||
|
|
||||||
|
error = await service
|
||||||
|
.createPaymentCollection([
|
||||||
|
{
|
||||||
|
currency_code: "USD",
|
||||||
|
region_id: "req_123",
|
||||||
|
} as any,
|
||||||
|
])
|
||||||
|
.catch((e) => e)
|
||||||
|
|
||||||
|
expect(error.message).toContain(
|
||||||
|
"Value for PaymentCollection.amount is required, 'undefined' found"
|
||||||
|
)
|
||||||
|
|
||||||
|
error = await service
|
||||||
|
.createPaymentCollection([
|
||||||
|
{
|
||||||
|
currency_code: "USD",
|
||||||
|
amount: 200,
|
||||||
|
} as any,
|
||||||
|
])
|
||||||
|
.catch((e) => e)
|
||||||
|
|
||||||
|
expect(error.message).toContain(
|
||||||
|
"Value for PaymentCollection.region_id is required, 'undefined' found"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should create a payment collection successfully", async () => {
|
||||||
|
const [createdPaymentCollection] = await service.createPaymentCollection([
|
||||||
|
{ currency_code: "USD", amount: 200, region_id: "reg_123" },
|
||||||
|
])
|
||||||
|
|
||||||
|
expect(createdPaymentCollection).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: expect.any(String),
|
||||||
|
status: "not_paid",
|
||||||
|
payment_providers: [],
|
||||||
|
payment_sessions: [],
|
||||||
|
payments: [],
|
||||||
|
currency_code: "USD",
|
||||||
|
amount: 200,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("delete", () => {
|
||||||
|
it("should delete a Payment Collection", async () => {
|
||||||
|
let collection = await service.listPaymentCollections({
|
||||||
|
id: ["pay-col-id-1"],
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(collection.length).toEqual(1)
|
||||||
|
|
||||||
|
await service.deletePaymentCollection(["pay-col-id-1"])
|
||||||
|
|
||||||
|
collection = await service.listPaymentCollections({
|
||||||
|
id: ["pay-col-id-1"],
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(collection.length).toEqual(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("retrieve", () => {
|
||||||
|
it("should retrieve a Payment Collection", async () => {
|
||||||
|
let collection = await service.retrievePaymentCollection("pay-col-id-2")
|
||||||
|
|
||||||
|
expect(collection).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
amount: 200,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
currency_code: "usd",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should fail to retrieve a non existent Payment Collection", async () => {
|
||||||
|
let error = await service
|
||||||
|
.retrievePaymentCollection("pay-col-id-not-exists")
|
||||||
|
.catch((e) => e)
|
||||||
|
|
||||||
|
expect(error.message).toContain(
|
||||||
|
"PaymentCollection with id: pay-col-id-not-exists was not found"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("list", () => {
|
||||||
|
it("should list and count Payment Collection", async () => {
|
||||||
|
let [collections, count] = await service.listAndCountPaymentCollections()
|
||||||
|
|
||||||
|
expect(count).toEqual(3)
|
||||||
|
|
||||||
|
expect(collections).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-1",
|
||||||
|
amount: 100,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
currency_code: "usd",
|
||||||
|
}),
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
amount: 200,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
currency_code: "usd",
|
||||||
|
}),
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-3",
|
||||||
|
amount: 300,
|
||||||
|
region_id: "region-id-2",
|
||||||
|
currency_code: "usd",
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should list Payment Collections by region_id", async () => {
|
||||||
|
let collections = await service.listPaymentCollections(
|
||||||
|
{
|
||||||
|
region_id: "region-id-1",
|
||||||
|
},
|
||||||
|
{ select: ["id", "amount", "region_id"] }
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(collections.length).toEqual(2)
|
||||||
|
|
||||||
|
expect(collections).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-1",
|
||||||
|
amount: 100,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
}),
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
amount: 200,
|
||||||
|
region_id: "region-id-1",
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("update", () => {
|
||||||
|
it("should update a Payment Collection", async () => {
|
||||||
|
await service.updatePaymentCollection({
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
currency_code: "eur",
|
||||||
|
authorized_amount: 200,
|
||||||
|
})
|
||||||
|
|
||||||
|
const collection = await service.retrievePaymentCollection("pay-col-id-2")
|
||||||
|
|
||||||
|
expect(collection).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "pay-col-id-2",
|
||||||
|
authorized_amount: 200,
|
||||||
|
currency_code: "eur",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -6,11 +6,16 @@ import {
|
|||||||
Modules,
|
Modules,
|
||||||
} from "@medusajs/modules-sdk"
|
} from "@medusajs/modules-sdk"
|
||||||
import { IPaymentModuleService, ModulesSdkTypes } from "@medusajs/types"
|
import { IPaymentModuleService, ModulesSdkTypes } from "@medusajs/types"
|
||||||
|
|
||||||
import { moduleDefinition } from "../module-definition"
|
import { moduleDefinition } from "../module-definition"
|
||||||
import { InitializeModuleInjectableDependencies } from "../types"
|
import { InitializeModuleInjectableDependencies } from "../types"
|
||||||
|
|
||||||
export const initialize = async (
|
export const initialize = async (
|
||||||
options?: ModulesSdkTypes.ModuleBootstrapDeclaration,
|
options?:
|
||||||
|
| ModulesSdkTypes.ModuleServiceInitializeOptions
|
||||||
|
| ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
|
||||||
|
| ExternalModuleDeclaration
|
||||||
|
| InternalModuleDeclaration,
|
||||||
injectedDependencies?: InitializeModuleInjectableDependencies
|
injectedDependencies?: InitializeModuleInjectableDependencies
|
||||||
): Promise<IPaymentModuleService> => {
|
): Promise<IPaymentModuleService> => {
|
||||||
const loaded = await MedusaModule.bootstrap<IPaymentModuleService>({
|
const loaded = await MedusaModule.bootstrap<IPaymentModuleService>({
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { Modules } from "@medusajs/modules-sdk"
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleJoinerConfig } from "@medusajs/types"
|
import { ModuleJoinerConfig } from "@medusajs/types"
|
||||||
import { MapToConfig } from "@medusajs/utils"
|
import { MapToConfig } from "@medusajs/utils"
|
||||||
import { Payment } from "@models"
|
import { Payment, PaymentCollection } from "@models"
|
||||||
|
|
||||||
export const LinkableKeys = {
|
export const LinkableKeys = {
|
||||||
payment_id: Payment.name,
|
payment_id: Payment.name,
|
||||||
|
payment_collection_id: PaymentCollection.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
const entityLinkableKeysMap: MapToConfig = {}
|
const entityLinkableKeysMap: MapToConfig = {}
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
export { default as PaymentModuleService } from "./payment-module"
|
export { default as PaymentModuleService } from "./payment-module"
|
||||||
|
export { default as PaymentCollectionService } from "./payment-collection"
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import { PaymentCollection } from "@models"
|
||||||
|
import {
|
||||||
|
CreatePaymentCollectionDTO,
|
||||||
|
DAL,
|
||||||
|
UpdatePaymentCollectionDTO,
|
||||||
|
} from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
|
||||||
|
type InjectedDependencies = {
|
||||||
|
paymentCollectionRepository: DAL.RepositoryService
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class PaymentCollectionService<
|
||||||
|
TEntity extends PaymentCollection = PaymentCollection
|
||||||
|
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||||
|
InjectedDependencies,
|
||||||
|
{
|
||||||
|
create: CreatePaymentCollectionDTO
|
||||||
|
update: UpdatePaymentCollectionDTO
|
||||||
|
}
|
||||||
|
>(PaymentCollection)<TEntity> {
|
||||||
|
constructor(container: InjectedDependencies) {
|
||||||
|
// @ts-ignore
|
||||||
|
super(...arguments)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,29 +1,274 @@
|
|||||||
import {
|
import {
|
||||||
|
Context,
|
||||||
|
CreatePaymentCollectionDTO,
|
||||||
|
CreatePaymentDTO,
|
||||||
|
CreatePaymentSessionDTO,
|
||||||
DAL,
|
DAL,
|
||||||
|
FilterablePaymentCollectionProps,
|
||||||
|
FindConfig,
|
||||||
InternalModuleDeclaration,
|
InternalModuleDeclaration,
|
||||||
|
IPaymentModuleService,
|
||||||
ModuleJoinerConfig,
|
ModuleJoinerConfig,
|
||||||
|
PaymentCollectionDTO,
|
||||||
|
PaymentDTO,
|
||||||
|
SetPaymentSessionsDTO,
|
||||||
|
UpdatePaymentCollectionDTO,
|
||||||
|
UpdatePaymentDTO,
|
||||||
} from "@medusajs/types"
|
} from "@medusajs/types"
|
||||||
|
import {
|
||||||
|
InjectManager,
|
||||||
|
InjectTransactionManager,
|
||||||
|
MedusaContext,
|
||||||
|
} from "@medusajs/utils"
|
||||||
|
|
||||||
import { Payment } from "@models"
|
import * as services from "@services"
|
||||||
|
|
||||||
import { joinerConfig } from "../joiner-config"
|
import { joinerConfig } from "../joiner-config"
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
baseRepository: DAL.RepositoryService
|
baseRepository: DAL.RepositoryService
|
||||||
|
paymentCollectionService: services.PaymentCollectionService
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: implement IPaymentModule
|
export default class PaymentModuleService implements IPaymentModuleService {
|
||||||
export default class PaymentModule<TPayment extends Payment = Payment> {
|
|
||||||
protected baseRepository_: DAL.RepositoryService
|
protected baseRepository_: DAL.RepositoryService
|
||||||
|
protected paymentCollectionService_: services.PaymentCollectionService
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
{ baseRepository }: InjectedDependencies,
|
{ baseRepository, paymentCollectionService }: InjectedDependencies,
|
||||||
protected readonly moduleDeclaration: InternalModuleDeclaration
|
protected readonly moduleDeclaration: InternalModuleDeclaration
|
||||||
) {
|
) {
|
||||||
this.baseRepository_ = baseRepository
|
this.baseRepository_ = baseRepository
|
||||||
|
|
||||||
|
this.paymentCollectionService_ = paymentCollectionService
|
||||||
}
|
}
|
||||||
|
|
||||||
__joinerConfig(): ModuleJoinerConfig {
|
__joinerConfig(): ModuleJoinerConfig {
|
||||||
return joinerConfig
|
return joinerConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createPaymentCollection(
|
||||||
|
data: CreatePaymentCollectionDTO,
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO>
|
||||||
|
|
||||||
|
createPaymentCollection(
|
||||||
|
data: CreatePaymentCollectionDTO[],
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO[]>
|
||||||
|
|
||||||
|
@InjectTransactionManager("baseRepository_")
|
||||||
|
async createPaymentCollection(
|
||||||
|
data: CreatePaymentCollectionDTO | CreatePaymentCollectionDTO[],
|
||||||
|
@MedusaContext() sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO | PaymentCollectionDTO[]> {
|
||||||
|
const input = Array.isArray(data) ? data : [data]
|
||||||
|
|
||||||
|
const collections = await this.paymentCollectionService_.create(
|
||||||
|
input,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
|
||||||
|
return await this.baseRepository_.serialize<PaymentCollectionDTO[]>(
|
||||||
|
Array.isArray(data) ? collections : collections[0],
|
||||||
|
{
|
||||||
|
populate: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
updatePaymentCollection(
|
||||||
|
data: UpdatePaymentCollectionDTO[],
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO[]>
|
||||||
|
updatePaymentCollection(
|
||||||
|
data: UpdatePaymentCollectionDTO,
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO>
|
||||||
|
|
||||||
|
@InjectTransactionManager("baseRepository_")
|
||||||
|
async updatePaymentCollection(
|
||||||
|
data: UpdatePaymentCollectionDTO | UpdatePaymentCollectionDTO[],
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO | PaymentCollectionDTO[]> {
|
||||||
|
const input = Array.isArray(data) ? data : [data]
|
||||||
|
const result = await this.paymentCollectionService_.update(
|
||||||
|
input,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
|
||||||
|
return await this.baseRepository_.serialize<PaymentCollectionDTO[]>(
|
||||||
|
Array.isArray(data) ? result : result[0],
|
||||||
|
{
|
||||||
|
populate: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
deletePaymentCollection(
|
||||||
|
paymentCollectionId: string[],
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<void>
|
||||||
|
deletePaymentCollection(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
sharedContext?: Context
|
||||||
|
): Promise<void>
|
||||||
|
|
||||||
|
@InjectTransactionManager("baseRepository_")
|
||||||
|
async deletePaymentCollection(
|
||||||
|
ids: string | string[],
|
||||||
|
@MedusaContext() sharedContext?: Context
|
||||||
|
): Promise<void> {
|
||||||
|
const paymentCollectionIds = Array.isArray(ids) ? ids : [ids]
|
||||||
|
await this.paymentCollectionService_.delete(
|
||||||
|
paymentCollectionIds,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@InjectManager("baseRepository_")
|
||||||
|
async retrievePaymentCollection(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
config: FindConfig<PaymentCollectionDTO> = {},
|
||||||
|
@MedusaContext() sharedContext: Context = {}
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
const paymentCollection = await this.paymentCollectionService_.retrieve(
|
||||||
|
paymentCollectionId,
|
||||||
|
config,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
|
||||||
|
return await this.baseRepository_.serialize<PaymentCollectionDTO>(
|
||||||
|
paymentCollection,
|
||||||
|
{ populate: true }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@InjectManager("baseRepository_")
|
||||||
|
async listPaymentCollections(
|
||||||
|
filters: FilterablePaymentCollectionProps = {},
|
||||||
|
config: FindConfig<PaymentCollectionDTO> = {},
|
||||||
|
@MedusaContext() sharedContext?: Context
|
||||||
|
): Promise<PaymentCollectionDTO[]> {
|
||||||
|
const paymentCollections = await this.paymentCollectionService_.list(
|
||||||
|
filters,
|
||||||
|
config,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
|
||||||
|
return await this.baseRepository_.serialize<PaymentCollectionDTO[]>(
|
||||||
|
paymentCollections,
|
||||||
|
{ populate: true }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@InjectManager("baseRepository_")
|
||||||
|
async listAndCountPaymentCollections(
|
||||||
|
filters: FilterablePaymentCollectionProps = {},
|
||||||
|
config: FindConfig<PaymentCollectionDTO> = {},
|
||||||
|
@MedusaContext() sharedContext?: Context
|
||||||
|
): Promise<[PaymentCollectionDTO[], number]> {
|
||||||
|
const [paymentCollections, count] =
|
||||||
|
await this.paymentCollectionService_.listAndCount(
|
||||||
|
filters,
|
||||||
|
config,
|
||||||
|
sharedContext
|
||||||
|
)
|
||||||
|
|
||||||
|
return [
|
||||||
|
await this.baseRepository_.serialize<PaymentCollectionDTO[]>(
|
||||||
|
paymentCollections,
|
||||||
|
{ populate: true }
|
||||||
|
),
|
||||||
|
count,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
|
|
||||||
|
authorizePaymentCollection(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
completePaymentCollection(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
createPayment(data: CreatePaymentDTO): Promise<PaymentDTO>
|
||||||
|
createPayment(data: CreatePaymentDTO[]): Promise<PaymentDTO[]>
|
||||||
|
createPayment(data: unknown): Promise<PaymentDTO | PaymentDTO[]> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
capturePayment(
|
||||||
|
paymentId: string,
|
||||||
|
amount: number,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
refundPayment(
|
||||||
|
paymentId: string,
|
||||||
|
amount: number,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
updatePayment(
|
||||||
|
data: UpdatePaymentDTO,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentDTO>
|
||||||
|
updatePayment(
|
||||||
|
data: UpdatePaymentDTO[],
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentDTO[]>
|
||||||
|
updatePayment(
|
||||||
|
data: unknown,
|
||||||
|
sharedContext?: unknown
|
||||||
|
): Promise<PaymentDTO | PaymentDTO[]> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
createPaymentSession(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
data: CreatePaymentSessionDTO,
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO>
|
||||||
|
createPaymentSession(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
data: CreatePaymentSessionDTO[],
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO>
|
||||||
|
createPaymentSession(
|
||||||
|
paymentCollectionId: unknown,
|
||||||
|
data: unknown,
|
||||||
|
sharedContext?: unknown
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
authorizePaymentSessions(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
sessionIds: string[],
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
completePaymentSessions(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
sessionIds: string[],
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
setPaymentSessions(
|
||||||
|
paymentCollectionId: string,
|
||||||
|
data: SetPaymentSessionsDTO[],
|
||||||
|
sharedContext?: Context | undefined
|
||||||
|
): Promise<PaymentCollectionDTO> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import {
|
||||||
|
DAL,
|
||||||
|
CreatePaymentCollectionDTO,
|
||||||
|
UpdatePaymentCollectionDTO,
|
||||||
|
} from "@medusajs/types"
|
||||||
|
|
||||||
|
import { PaymentCollection } from "@models"
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface IPaymentCollectionRepository<
|
||||||
|
TEntity extends PaymentCollection = PaymentCollection
|
||||||
|
> extends DAL.RepositoryService<
|
||||||
|
TEntity,
|
||||||
|
{
|
||||||
|
create: CreatePaymentCollectionDTO
|
||||||
|
update: UpdatePaymentCollectionDTO
|
||||||
|
}
|
||||||
|
> {}
|
||||||
@@ -3,6 +3,34 @@ import { OperatorMap } from "../dal/utils"
|
|||||||
|
|
||||||
/* ********** PAYMENT COLLECTION ********** */
|
/* ********** PAYMENT COLLECTION ********** */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum
|
||||||
|
*
|
||||||
|
* The payment collection's status.
|
||||||
|
*/
|
||||||
|
export enum PaymentCollectionStatus {
|
||||||
|
/**
|
||||||
|
* The payment collection isn't paid.
|
||||||
|
*/
|
||||||
|
NOT_PAID = "not_paid",
|
||||||
|
/**
|
||||||
|
* The payment collection is awaiting payment.
|
||||||
|
*/
|
||||||
|
AWAITING = "awaiting",
|
||||||
|
/**
|
||||||
|
* The payment collection is authorized.
|
||||||
|
*/
|
||||||
|
AUTHORIZED = "authorized",
|
||||||
|
/**
|
||||||
|
* Some of the payments in the payment collection are authorized.
|
||||||
|
*/
|
||||||
|
PARTIALLY_AUTHORIZED = "partially_authorized",
|
||||||
|
/**
|
||||||
|
* The payment collection is canceled.
|
||||||
|
*/
|
||||||
|
CANCELED = "canceled",
|
||||||
|
}
|
||||||
|
|
||||||
export interface PaymentCollectionDTO {
|
export interface PaymentCollectionDTO {
|
||||||
/**
|
/**
|
||||||
* The ID of the Payment Collection
|
* The ID of the Payment Collection
|
||||||
|
|||||||
@@ -1,15 +1,29 @@
|
|||||||
/**
|
import { PaymentCollectionStatus } from "./common"
|
||||||
* TODO
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payment Collection
|
||||||
|
*/
|
||||||
export interface CreatePaymentCollectionDTO {
|
export interface CreatePaymentCollectionDTO {
|
||||||
region_id: string
|
region_id: string
|
||||||
currency_code: string
|
currency_code: string
|
||||||
amount: number
|
amount: number
|
||||||
|
|
||||||
|
metadata?: Record<string, unknown>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface UpdatePaymentCollectionDTO
|
export interface UpdatePaymentCollectionDTO
|
||||||
extends Partial<CreatePaymentCollectionDTO> {}
|
extends Partial<CreatePaymentCollectionDTO> {
|
||||||
|
id: string
|
||||||
|
|
||||||
|
authorized_amount?: number
|
||||||
|
refunded_amount?: number
|
||||||
|
completed_at?: number
|
||||||
|
status?: PaymentCollectionStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payment
|
||||||
|
*/
|
||||||
|
|
||||||
export interface CreatePaymentDTO {
|
export interface CreatePaymentDTO {
|
||||||
amount: number
|
amount: number
|
||||||
@@ -30,6 +44,10 @@ export interface UpdatePaymentDTO {
|
|||||||
customer_id?: string
|
customer_id?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payment Session
|
||||||
|
*/
|
||||||
|
|
||||||
export interface CreatePaymentSessionDTO {
|
export interface CreatePaymentSessionDTO {
|
||||||
amount: number
|
amount: number
|
||||||
currency_code: string
|
currency_code: string
|
||||||
|
|||||||
Reference in New Issue
Block a user