diff --git a/packages/medusa-payment-adyen/src/api/routes/store/retrieve-payment-methods.js b/packages/medusa-payment-adyen/src/api/routes/store/retrieve-payment-methods.js index f8bddd9793..1346270d88 100644 --- a/packages/medusa-payment-adyen/src/api/routes/store/retrieve-payment-methods.js +++ b/packages/medusa-payment-adyen/src/api/routes/store/retrieve-payment-methods.js @@ -36,7 +36,16 @@ export default async (req, res) => { region.currency_code ) - res.status(200).json({ paymentMethods: data }) + // Adyen does not behave 100% correctly in regards to allowed methods + // Therefore, we sanity filter before sending them to the storefront + const { paymentMethods, groups } = data + const methods = paymentMethods.filter((pm) => + allowedMethods.includes(pm.type) + ) + + res + .status(200) + .json({ paymentMethods: { paymentMethods: methods, groups } }) } catch (err) { throw err } diff --git a/packages/medusa-payment-adyen/src/services/adyen.js b/packages/medusa-payment-adyen/src/services/adyen.js index 2778fda451..d90b51e492 100644 --- a/packages/medusa-payment-adyen/src/services/adyen.js +++ b/packages/medusa-payment-adyen/src/services/adyen.js @@ -24,7 +24,7 @@ class AdyenService extends BaseService { }) this.adyenPaymentApi = axios.create({ - baseURL: "https://pal-test.adyen.com/pal/servlet/Payment/v53", + baseURL: "https://pal-test.adyen.com/pal/servlet/Payment/v52", headers: { "Content-Type": "application/json", "x-API-key": this.options_.api_key, @@ -154,7 +154,7 @@ class AdyenService extends BaseService { const { pspReference, amount } = data try { - const captured = this.adyenPaymentApi.post("/capture", { + const captured = await this.adyenPaymentApi.post("/capture", { originalReference: pspReference, modificationAmount: amount, merchantAccount: this.options_.merchant_account, @@ -187,7 +187,7 @@ class AdyenService extends BaseService { const { pspReference, amount } = data try { - return this.adyenPaymentApi.post("/capture", { + return this.adyenPaymentApi.post("/refund", { originalReference: pspReference, merchantAccount: this.options_.merchant_account, modificationAmount: amount, @@ -206,7 +206,7 @@ class AdyenService extends BaseService { const { pspReference } = paymentData try { - return this.adyenPaymentApi.post("/capture", { + return this.adyenPaymentApi.post("/cancel", { originalReference: pspReference, merchantAccount: this.options_.merchant_account, }) diff --git a/packages/medusa/src/api/routes/admin/customers/get-customer.js b/packages/medusa/src/api/routes/admin/customers/get-customer.js index 98efd486c3..c028d89795 100644 --- a/packages/medusa/src/api/routes/admin/customers/get-customer.js +++ b/packages/medusa/src/api/routes/admin/customers/get-customer.js @@ -3,11 +3,12 @@ export default async (req, res) => { try { const customerService = req.scope.resolve("customerService") let customer = await customerService.retrieve(id) - customer = customerService.decorate(customer, [ - "email", - "first_name", - "last_name", - ]) + customer = await customerService.decorate( + customer, + ["email", "payment_methods", "has_account", "shipping_addresses"], + ["orders"] + ) + res.json({ customer }) } catch (err) { throw err diff --git a/packages/medusa/src/api/routes/admin/orders/get-order.js b/packages/medusa/src/api/routes/admin/orders/get-order.js index d3912b871e..3523bef558 100644 --- a/packages/medusa/src/api/routes/admin/orders/get-order.js +++ b/packages/medusa/src/api/routes/admin/orders/get-order.js @@ -3,9 +3,14 @@ export default async (req, res) => { try { const orderService = req.scope.resolve("orderService") + const customerService = req.scope.resolve("customerService") let order = await orderService.retrieve(id) - order = await orderService.decorate(order, [], ["region"]) + order = await orderService.decorate(order, [], ["region", "customer"]) + + if (order.customer_id) { + order.customer = await customerService.retrieve(order.customer_id) + } res.json({ order }) } catch (error) { diff --git a/packages/medusa/src/api/routes/admin/shipping-profiles/get-shipping-profile.js b/packages/medusa/src/api/routes/admin/shipping-profiles/get-shipping-profile.js index c0240442a1..9c0adad813 100644 --- a/packages/medusa/src/api/routes/admin/shipping-profiles/get-shipping-profile.js +++ b/packages/medusa/src/api/routes/admin/shipping-profiles/get-shipping-profile.js @@ -5,7 +5,13 @@ export default async (req, res) => { const data = await profileService.retrieve(profile_id) - res.status(200).json({ shipping_profile: data }) + const profile = await profileService.decorate( + data, + ["name"], + ["products", "shipping_options"] + ) + + res.status(200).json({ shipping_profile: profile }) } catch (err) { throw err } diff --git a/packages/medusa/src/services/shipping-profile.js b/packages/medusa/src/services/shipping-profile.js index ec63af4698..a6fdb668d1 100644 --- a/packages/medusa/src/services/shipping-profile.js +++ b/packages/medusa/src/services/shipping-profile.js @@ -333,13 +333,13 @@ class ShippingProfileService extends BaseService { const requiredFields = ["_id", "metadata"] let decorated = _.pick(profile, fields.concat(requiredFields)) - if (expandFields.includes("products")) { + if (expandFields.includes("products") && profile.products) { decorated.products = await Promise.all( profile.products.map(pId => this.productService_.retrieve(pId)) ) } - if (expandFields.includes("shipping_options")) { + if (expandFields.includes("shipping_options") && profile.shipping_options) { decorated.shipping_options = await Promise.all( profile.shipping_options.map(oId => this.shippingOptionService_.retrieve(oId)