Feat/manual payment (#318)

What
A dummy payment provider for testing and potentially other relevant use cases like accepting cash payments. Also makes it possible to start server without notification/payment/fulfillment providers.

Why
When setting up a starter project it introduces unnecessary overhead to have to set up an account with a payment provider (e.g. Stripe). Adding a dummy provider will remove friction.

How
Extremely simple wrapper functionality.
This commit is contained in:
Sebastian Rindom authored and GitHub committed 2021-07-16 17:03:35 +02:00
1 parent dde3834124
commit 8783de17cd
9 files changed
+236 -3

No files matched your search

+42 -3
View File
@@ -1,6 +1,36 @@
const silentResolution = (container, name, logger) => {
try {
const resolved = container.resolve(name)
return resolved
} catch (err) {
if (err.name !== "AwilixResolutionError") {
throw err
} else {
let identifier
switch (name) {
case "paymentProviders":
identifier = "payment"
break
case "notificationProviders":
identifier = "notification"
break
case "fulfillmentProviders":
identifier = "fulfillment"
break
default:
identifier = name
}
logger.warn(
`You don't have any ${identifier} provider plugins installed. You may want to add one to your project.`
)
}
}
}
export default async ({ container }) => {
const storeService = container.resolve("storeService")
const profileService = container.resolve("shippingProfileService")
const logger = container.resolve("logger")
const entityManager = container.resolve("manager")
@@ -9,19 +39,28 @@ export default async ({ container }) => {
let payIds
const pProviderService = container.resolve("paymentProviderService")
const payProviders = container.resolve("paymentProviders")
const payProviders =
silentResolution(container, "paymentProviders", logger) || []
payIds = payProviders.map(p => p.getIdentifier())
await pProviderService.registerInstalledProviders(payIds)
let notiIds
const nProviderService = container.resolve("notificationService")
const notiProviders = container.resolve("notificationProviders")
const notiProviders =
silentResolution(container, "notificationProviders", logger) || []
notiIds = notiProviders.map(p => p.getIdentifier())
await nProviderService.registerInstalledProviders(notiIds)
let fulfilIds
const fProviderService = container.resolve("fulfillmentProviderService")
const fulfilProviders = container.resolve("fulfillmentProviders")
const fulfilProviders =
silentResolution(container, "fulfillmentProviders", logger) || []
fulfilIds = fulfilProviders.map(p => p.getIdentifier())
await fProviderService.registerInstalledProviders(fulfilIds)