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:
1 parent
dde3834124
commit
8783de17cd
9 files changed
+236
-3
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user