diff --git a/packages/medusa-payment-stripe/src/__mocks__/cart.js b/packages/medusa-payment-stripe/src/__mocks__/cart.js index 361f80386d..062dc1003b 100644 --- a/packages/medusa-payment-stripe/src/__mocks__/cart.js +++ b/packages/medusa-payment-stripe/src/__mocks__/cart.js @@ -61,7 +61,6 @@ export const carts = { id: IdMap.getId("product"), }, quantity: 1, - quantity: 10, }, ], shipping_methods: [ @@ -96,6 +95,7 @@ export const carts = { billing_address: {}, discounts: [], customer_id: IdMap.getId("lebron"), + context: {} }, frCartNoStripeCustomer: { id: IdMap.getId("fr-cart-no-customer"), diff --git a/packages/medusa-payment-stripe/src/__mocks__/stripe.js b/packages/medusa-payment-stripe/src/__mocks__/stripe.js index 7aa040b8f6..23b250a650 100644 --- a/packages/medusa-payment-stripe/src/__mocks__/stripe.js +++ b/packages/medusa-payment-stripe/src/__mocks__/stripe.js @@ -22,6 +22,7 @@ export const StripeMock = { id: "pi_lebron", amount: 100, customer: "cus_123456789_new", + description: data?.description, }) } if (data.customer === "cus_lebron") { @@ -29,6 +30,7 @@ export const StripeMock = { id: "pi_lebron", amount: 100, customer: "cus_lebron", + description: data?.description, }) } }), diff --git a/packages/medusa-payment-stripe/src/services/__tests__/stripe-provider.js b/packages/medusa-payment-stripe/src/services/__tests__/stripe-provider.js index f4ec7ac711..5bb2874d86 100644 --- a/packages/medusa-payment-stripe/src/services/__tests__/stripe-provider.js +++ b/packages/medusa-payment-stripe/src/services/__tests__/stripe-provider.js @@ -70,11 +70,13 @@ describe("StripeProviderService", () => { it("returns created stripe payment intent for cart with no customer", async () => { carts.frCart.customer_id = "" + carts.frCart.context.payment_description = 'some description' result = await stripeProviderService.createPayment(carts.frCart) expect(result).toEqual({ id: "pi_lebron", customer: "cus_lebron", amount: 100, + description: 'some description', }) }) }) diff --git a/packages/medusa-payment-stripe/src/services/stripe-bancontact.js b/packages/medusa-payment-stripe/src/services/stripe-bancontact.js index 3b731e74d4..8ed87606e9 100644 --- a/packages/medusa-payment-stripe/src/services/stripe-bancontact.js +++ b/packages/medusa-payment-stripe/src/services/stripe-bancontact.js @@ -90,6 +90,7 @@ class BancontactProviderService extends PaymentService { const intentRequest = { amount: Math.round(amount), + description: cart?.context?.payment_description ?? this.options?.payment_description, currency: currency_code, payment_method_types: ["bancontact"], capture_method: "automatic", diff --git a/packages/medusa-payment-stripe/src/services/stripe-giropay.js b/packages/medusa-payment-stripe/src/services/stripe-giropay.js index 9df35469df..05743831e9 100644 --- a/packages/medusa-payment-stripe/src/services/stripe-giropay.js +++ b/packages/medusa-payment-stripe/src/services/stripe-giropay.js @@ -90,6 +90,7 @@ class GiropayProviderService extends PaymentService { const intentRequest = { amount: Math.round(amount), + description: cart?.context?.payment_description ?? this.options?.payment_description, currency: currency_code, payment_method_types: ["giropay"], capture_method: "automatic", diff --git a/packages/medusa-payment-stripe/src/services/stripe-ideal.js b/packages/medusa-payment-stripe/src/services/stripe-ideal.js index e5bee5a99f..934de954aa 100644 --- a/packages/medusa-payment-stripe/src/services/stripe-ideal.js +++ b/packages/medusa-payment-stripe/src/services/stripe-ideal.js @@ -90,6 +90,7 @@ class IdealProviderService extends PaymentService { const intentRequest = { amount: Math.round(amount), + description: cart?.context?.payment_description ?? this.options?.payment_description, currency: currency_code, payment_method_types: ["ideal"], capture_method: "automatic", diff --git a/packages/medusa-payment-stripe/src/services/stripe-provider.js b/packages/medusa-payment-stripe/src/services/stripe-provider.js index 781dabbcf4..c0c406a1fb 100644 --- a/packages/medusa-payment-stripe/src/services/stripe-provider.js +++ b/packages/medusa-payment-stripe/src/services/stripe-provider.js @@ -1,6 +1,6 @@ -import _ from "lodash" import Stripe from "stripe" import { PaymentService } from "medusa-interfaces" +import { PaymentSessionStatus } from '@medusajs/medusa/dist' class StripeProviderService extends PaymentService { static identifier = "stripe" @@ -42,37 +42,21 @@ class StripeProviderService extends PaymentService { const { id } = paymentData const paymentIntent = await this.stripe_.paymentIntents.retrieve(id) - let status = "pending" - - if (paymentIntent.status === "requires_payment_method") { - return status + switch (paymentIntent.status) { + case "requires_payment_method": + case "requires_confirmation": + case "processing": + return PaymentSessionStatus.PENDING + case "requires_action": + return PaymentSessionStatus.REQUIRES_MORE + case "canceled": + return PaymentSessionStatus.CANCELED + case "requires_capture": + case "succeeded": + return PaymentSessionStatus.AUTHORIZED + default: + return PaymentSessionStatus.PENDING } - - if (paymentIntent.status === "requires_confirmation") { - return status - } - - if (paymentIntent.status === "processing") { - return status - } - - if (paymentIntent.status === "requires_action") { - status = "requires_more" - } - - if (paymentIntent.status === "canceled") { - status = "canceled" - } - - if (paymentIntent.status === "requires_capture") { - status = "authorized" - } - - if (paymentIntent.status === "succeeded") { - status = "authorized" - } - - return status } /** @@ -141,6 +125,7 @@ class StripeProviderService extends PaymentService { const amount = await this.totalsService_.getTotal(cart) const intentRequest = { + description: cart?.context?.payment_description ?? this.options?.payment_description, amount: Math.round(amount), currency: currency_code, setup_future_usage: "on_session", @@ -169,11 +154,9 @@ class StripeProviderService extends PaymentService { intentRequest.customer = stripeCustomer.id } - const paymentIntent = await this.stripe_.paymentIntents.create( + return await this.stripe_.paymentIntents.create( intentRequest ) - - return paymentIntent } /**