From 98a72ca7b40b0015e85d93d99cb102114180d4d6 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Thu, 28 May 2020 20:17:13 +0200 Subject: [PATCH] registers payment/fulfillment providers with correct names --- .../src/services/stripe-provider.js | 13 ++++++++----- .../src/api/routes/store/carts/index.js | 4 ---- packages/medusa/src/loaders/plugins.js | 12 +++++++----- packages/medusa/src/services/cart.js | 19 +++++++++++++++++-- .../medusa/src/services/shipping-profile.js | 5 +++-- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/packages/medusa-payment-stripe/src/services/stripe-provider.js b/packages/medusa-payment-stripe/src/services/stripe-provider.js index 330f306b6d..0e52d4b2ce 100644 --- a/packages/medusa-payment-stripe/src/services/stripe-provider.js +++ b/packages/medusa-payment-stripe/src/services/stripe-provider.js @@ -5,7 +5,7 @@ import { PaymentService } from "medusa-interfaces" class StripeProviderService extends PaymentService { static identifier = "stripe" - constructor({ customerService, totalsService }, options) { + constructor({ customerService, totalsService, regionService }, options) { super() this.options_ = options @@ -14,6 +14,8 @@ class StripeProviderService extends PaymentService { this.customerService_ = customerService + this.regionService_ = regionService + this.totalsService_ = totalsService } @@ -76,10 +78,10 @@ class StripeProviderService extends PaymentService { * @returns {string} id of payment intent */ async createPayment(cart) { - const { customer_id } = cart + const { customer_id, region_id } = cart + const { currency_code } = await this.regionService_.retrieve(region_id) let stripeCustomerId - if (!customer_id) { const { id } = await this.stripe_.customers.create({ email: cart.email, @@ -97,10 +99,11 @@ class StripeProviderService extends PaymentService { } } - const amount = this.totalsService_.getTotal(cart) + const amount = await this.totalsService_.getTotal(cart) const paymentIntent = await this.stripe_.paymentIntents.create({ customer: stripeCustomerId, - amount, + amount: amount * 100, // Stripe amount is in cents + currency: currency_code }) return paymentIntent diff --git a/packages/medusa/src/api/routes/store/carts/index.js b/packages/medusa/src/api/routes/store/carts/index.js index 3e9e9d0604..f072db9dd4 100644 --- a/packages/medusa/src/api/routes/store/carts/index.js +++ b/packages/medusa/src/api/routes/store/carts/index.js @@ -32,10 +32,6 @@ export default app => { ) // Shipping Options - route.post( - "/:id/shipping-options", - middlewares.wrap(require("./create-shipping-options").default) - ) route.post( "/:id/shipping-methods", middlewares.wrap(require("./add-shipping-method").default) diff --git a/packages/medusa/src/loaders/plugins.js b/packages/medusa/src/loaders/plugins.js index 5cd115f09f..65d5a36e3a 100644 --- a/packages/medusa/src/loaders/plugins.js +++ b/packages/medusa/src/loaders/plugins.js @@ -148,12 +148,14 @@ function registerServices(pluginDetails, container) { cradle => new loaded(cradle, pluginDetails.options) ), }) - } else { - const name = formatRegistrationName(fn) - container.register({ - [name]: asFunction(cradle => new loaded(cradle, pluginDetails.options)), - }) } + + // Always register the service with a nice name, if we need to import it + // from somewhere + const name = formatRegistrationName(fn) + container.register({ + [name]: asFunction(cradle => new loaded(cradle, pluginDetails.options)), + }) }) } diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index 3d8d072c88..09a0bc7583 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -692,7 +692,15 @@ class CartService extends BaseService { if (!region.payment_providers.includes(pSession.provider_id)) { return null } - return this.paymentProviderService_.updateSession(pSession, cart) + + const data = await this.paymentProviderService_.updateSession( + pSession, + cart + ) + return { + provider_id: pSession.provider_id, + data, + } }) ) } @@ -708,13 +716,20 @@ class CartService extends BaseService { return null } - return this.paymentProviderService_.createSession(pId, cart) + const data = await this.paymentProviderService_.createSession(pId, cart) + return { + provider_id: pId, + data, + } }) ) // Filter null sessions newSessions = newSessions.filter(s => !!s) + console.log(sessions) + console.log(newSessions) + // Update the payment sessions with the concatenated array of updated and // newly created payment sessions return this.cartModel_ diff --git a/packages/medusa/src/services/shipping-profile.js b/packages/medusa/src/services/shipping-profile.js index 24ea54337f..5581e946de 100644 --- a/packages/medusa/src/services/shipping-profile.js +++ b/packages/medusa/src/services/shipping-profile.js @@ -335,8 +335,9 @@ class ShippingProfileService extends BaseService { async fetchCartOptions(cart) { const products = this.getProductsInCart_(cart) const profiles = await this.list({ products: { $in: products } }) - const optionIds = profiles.reduce((acc, next) => - acc.concat(next.shipping_options) + const optionIds = profiles.reduce( + (acc, next) => acc.concat(next.shipping_options), + [] ) const options = await Promise.all(