From 19d7d0180596e708821457e073cc04dd04c07627 Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Wed, 3 Jul 2024 12:51:38 +0200 Subject: [PATCH] fix: Update stripe options input (#7919) --- packages/modules/payment/src/index.ts | 10 ++---- .../modules/payment/src/loaders/defaults.ts | 26 -------------- packages/modules/payment/src/loaders/index.ts | 1 - .../modules/payment/src/loaders/providers.ts | 36 ++++++++++++++++++- .../payment-stripe/src/core/stripe-base.ts | 9 +++-- .../payment-stripe/src/types/index.ts | 20 ++++++----- 6 files changed, 53 insertions(+), 49 deletions(-) delete mode 100644 packages/modules/payment/src/loaders/defaults.ts diff --git a/packages/modules/payment/src/index.ts b/packages/modules/payment/src/index.ts index 258757a402..d009f3e36c 100644 --- a/packages/modules/payment/src/index.ts +++ b/packages/modules/payment/src/index.ts @@ -2,14 +2,10 @@ import { ModuleExports } from "@medusajs/types" import { PaymentModuleService } from "@services" import loadProviders from "./loaders/providers" -import loadDefaults from "./loaders/defaults" -const service = PaymentModuleService -const loaders = [loadProviders, loadDefaults] as any - -export const moduleDefinition: ModuleExports = { - service, - loaders, +const moduleDefinition: ModuleExports = { + service: PaymentModuleService, + loaders: [loadProviders], } export default moduleDefinition diff --git a/packages/modules/payment/src/loaders/defaults.ts b/packages/modules/payment/src/loaders/defaults.ts deleted file mode 100644 index e5baf21e55..0000000000 --- a/packages/modules/payment/src/loaders/defaults.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CreatePaymentProviderDTO, LoaderOptions } from "@medusajs/types" -import { PaymentProviderService } from "@services" - -export default async ({ container }: LoaderOptions): Promise => { - const providersToLoad = container.resolve("payment_providers") - const paymentProviderService = container.resolve( - "paymentProviderService" - ) - - const providers = await paymentProviderService.list({ - id: providersToLoad, - }) - - const loadedProvidersMap = new Map(providers.map((p) => [p.id, p])) - - const providersToCreate: CreatePaymentProviderDTO[] = [] - for (const id of providersToLoad) { - if (loadedProvidersMap.has(id)) { - continue - } - - providersToCreate.push({ id }) - } - - await paymentProviderService.create(providersToCreate) -} diff --git a/packages/modules/payment/src/loaders/index.ts b/packages/modules/payment/src/loaders/index.ts index 4fff0c18cb..96bcb99b21 100644 --- a/packages/modules/payment/src/loaders/index.ts +++ b/packages/modules/payment/src/loaders/index.ts @@ -1,2 +1 @@ export * from "./providers" -export * from "./defaults" diff --git a/packages/modules/payment/src/loaders/providers.ts b/packages/modules/payment/src/loaders/providers.ts index 7c350a587c..2416385965 100644 --- a/packages/modules/payment/src/loaders/providers.ts +++ b/packages/modules/payment/src/loaders/providers.ts @@ -1,8 +1,14 @@ import { moduleProviderLoader } from "@medusajs/modules-sdk" -import { LoaderOptions, ModuleProvider, ModulesSdkTypes } from "@medusajs/types" +import { + CreatePaymentProviderDTO, + LoaderOptions, + ModuleProvider, + ModulesSdkTypes, +} from "@medusajs/types" import { Lifetime, asFunction, asValue } from "awilix" import * as providers from "../providers" +import { PaymentProviderService } from "@services" const registrationFn = async (klass, container, pluginOptions) => { Object.entries(pluginOptions.config || []).map(([name, config]) => { @@ -37,4 +43,32 @@ export default async ({ providers: options?.providers || [], registerServiceFn: registrationFn, }) + + await registerProvidersInDb({ container }) +} + +const registerProvidersInDb = async ({ + container, +}: LoaderOptions): Promise => { + const providersToLoad = container.resolve("payment_providers") + const paymentProviderService = container.resolve( + "paymentProviderService" + ) + + const providers = await paymentProviderService.list({ + id: providersToLoad, + }) + + const loadedProvidersMap = new Map(providers.map((p) => [p.id, p])) + + const providersToCreate: CreatePaymentProviderDTO[] = [] + for (const id of providersToLoad) { + if (loadedProvidersMap.has(id)) { + continue + } + + providersToCreate.push({ id }) + } + + await paymentProviderService.create(providersToCreate) } diff --git a/packages/modules/providers/payment-stripe/src/core/stripe-base.ts b/packages/modules/providers/payment-stripe/src/core/stripe-base.ts index 27b815f734..32f0f97377 100644 --- a/packages/modules/providers/payment-stripe/src/core/stripe-base.ts +++ b/packages/modules/providers/payment-stripe/src/core/stripe-base.ts @@ -23,7 +23,6 @@ import { ErrorCodes, ErrorIntentStatus, PaymentIntentOptions, - StripeCredentials, StripeOptions, } from "../types" import { @@ -31,7 +30,7 @@ import { getSmallestUnit, } from "../utils/get-smallest-unit" -abstract class StripeBase extends AbstractPaymentProvider { +abstract class StripeBase extends AbstractPaymentProvider { protected readonly options_: StripeOptions protected stripe_: Stripe protected container_: MedusaContainer @@ -54,7 +53,7 @@ abstract class StripeBase extends AbstractPaymentProvider { abstract get paymentIntentOptions(): PaymentIntentOptions - private validateOptions(options: StripeCredentials): void { + private validateOptions(options: StripeOptions): void { if (!isDefined(options.apiKey)) { throw new Error("Required option `apiKey` is missing in Stripe plugin") } @@ -114,7 +113,7 @@ abstract class StripeBase extends AbstractPaymentProvider { const { currency_code, amount } = input const description = (extra?.payment_description ?? - this.options_?.payment_description) as string + this.options_?.paymentDescription) as string const intentRequest: Stripe.PaymentIntentCreateParams = { description, @@ -125,7 +124,7 @@ abstract class StripeBase extends AbstractPaymentProvider { ...intentRequestData, } - if (this.options_?.automatic_payment_methods) { + if (this.options_?.automaticPaymentMethods) { intentRequest.automatic_payment_methods = { enabled: true } } diff --git a/packages/modules/providers/payment-stripe/src/types/index.ts b/packages/modules/providers/payment-stripe/src/types/index.ts index 1ef40c7999..abeb3cb7aa 100644 --- a/packages/modules/providers/payment-stripe/src/types/index.ts +++ b/packages/modules/providers/payment-stripe/src/types/index.ts @@ -1,22 +1,24 @@ -export interface StripeCredentials { - apiKey: string - webhookSecret: string -} - export interface StripeOptions { - credentials: Record + /** + * The API key for the Stripe account + */ + apiKey: string + /** + * The webhook secret used to verify webhooks + */ + webhookSecret: string /** * Use this flag to capture payment immediately (default is false) */ capture?: boolean /** - * set `automatic_payment_methods` to `{ enabled: true }` + * set `automatic_payment_methods` on the intent request to `{ enabled: true }` */ - automatic_payment_methods?: boolean + automaticPaymentMethods?: boolean /** * Set a default description on the intent if the context does not provide one */ - payment_description?: string + paymentDescription?: string } export interface PaymentIntentOptions {