fix(medusa-payment-stripe): Missing transactions in Stripe provider (#2603)
This commit is contained in:
1 parent
d0809bdf25
commit
9e91a50df1
4 files changed
+58
-47
No files matched your search
@@ -12,8 +12,7 @@ class StripeBase extends AbstractPaymentService {
|
||||
regionService,
|
||||
manager,
|
||||
},
|
||||
options,
|
||||
paymentMethodTypes
|
||||
options
|
||||
) {
|
||||
super(
|
||||
{
|
||||
@@ -25,8 +24,6 @@ class StripeBase extends AbstractPaymentService {
|
||||
},
|
||||
options
|
||||
)
|
||||
/** @private @const {string[]} */
|
||||
this.paymentMethodTypes_ = paymentMethodTypes
|
||||
|
||||
/**
|
||||
* Required Stripe options:
|
||||
@@ -123,18 +120,19 @@ class StripeBase extends AbstractPaymentService {
|
||||
* @return {Promise<PaymentSessionData>} Stripe payment intent
|
||||
*/
|
||||
async createPayment(cart) {
|
||||
const intentRequest = this.getPaymentIntentOptions()
|
||||
const intentRequestData = this.getPaymentIntentOptions()
|
||||
|
||||
return await this.stripeProviderService_.createPayment(cart, intentRequest)
|
||||
return await this.stripeProviderService_
|
||||
.withTransaction(this.manager_)
|
||||
.createPayment(cart, intentRequestData)
|
||||
}
|
||||
|
||||
async createPaymentNew(paymentInput) {
|
||||
const intentRequest = this.getPaymentIntentOptions()
|
||||
const intentRequestData = this.getPaymentIntentOptions()
|
||||
|
||||
return await this.stripeProviderService_.createPaymentNew(
|
||||
paymentInput,
|
||||
intentRequest
|
||||
)
|
||||
return await this.stripeProviderService_
|
||||
.withTransaction(this.manager_)
|
||||
.createPaymentNew(paymentInput, intentRequestData)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,17 +181,19 @@ class StripeBase extends AbstractPaymentService {
|
||||
* @return {Promise<PaymentSessionData>} Stripe payment intent
|
||||
*/
|
||||
async updatePayment(paymentSessionData, cart) {
|
||||
return await this.stripeProviderService_.updatePayment(
|
||||
paymentSessionData,
|
||||
cart
|
||||
)
|
||||
const intentRequestData = this.getPaymentIntentOptions()
|
||||
|
||||
return await this.stripeProviderService_
|
||||
.withTransaction(this.manager_)
|
||||
.updatePayment(paymentSessionData, cart, intentRequestData)
|
||||
}
|
||||
|
||||
async updatePaymentNew(paymentSessionData, paymentInput) {
|
||||
return await this.stripeProviderService_.updatePaymentNew(
|
||||
paymentSessionData,
|
||||
paymentInput
|
||||
)
|
||||
const intentRequestData = this.getPaymentIntentOptions()
|
||||
|
||||
return await this.stripeProviderService_
|
||||
.withTransaction(this.manager_)
|
||||
.updatePaymentNew(paymentSessionData, paymentInput, intentRequestData)
|
||||
}
|
||||
|
||||
async deletePayment(paymentSession) {
|
||||
|
||||
@@ -127,6 +127,7 @@ class StripeProviderService extends AbstractPaymentService {
|
||||
* Creates a Stripe payment intent.
|
||||
* If customer is not registered in Stripe, we do so.
|
||||
* @param {Cart} cart - cart to create a payment for
|
||||
* @param intentRequestData
|
||||
* @return {Promise<PaymentSessionData>} Stripe payment intent
|
||||
*/
|
||||
async createPayment(cart, intentRequestData = {}) {
|
||||
@@ -271,20 +272,24 @@ class StripeProviderService extends AbstractPaymentService {
|
||||
* Updates Stripe payment intent.
|
||||
* @param {PaymentSessionData} paymentSessionData - payment session data.
|
||||
* @param {Cart} cart
|
||||
* @param intentRequestData
|
||||
* @return {Promise<PaymentSessionData>} Stripe payment intent
|
||||
*/
|
||||
async updatePayment(sessionData, cart) {
|
||||
async updatePayment(paymentSessionData, cart, intentRequestData) {
|
||||
try {
|
||||
const stripeId = cart.customer?.metadata?.stripe_id || undefined
|
||||
|
||||
if (stripeId !== sessionData.customer) {
|
||||
return await this.createPayment(cart)
|
||||
if (stripeId !== paymentSessionData.customer) {
|
||||
return await this.createPayment(cart, intentRequestData)
|
||||
} else {
|
||||
if (cart.total && sessionData.amount === Math.round(cart.total)) {
|
||||
return sessionData
|
||||
if (
|
||||
cart.total &&
|
||||
paymentSessionData.amount === Math.round(cart.total)
|
||||
) {
|
||||
return paymentSessionData
|
||||
}
|
||||
|
||||
return await this.stripe_.paymentIntents.update(sessionData.id, {
|
||||
return await this.stripe_.paymentIntents.update(paymentSessionData.id, {
|
||||
amount: Math.round(cart.total),
|
||||
})
|
||||
}
|
||||
@@ -293,15 +298,15 @@ class StripeProviderService extends AbstractPaymentService {
|
||||
}
|
||||
}
|
||||
|
||||
async updatePaymentNew(paymentSessionData, paymentInput) {
|
||||
async updatePaymentNew(paymentSessionData, paymentInput, intentRequestData) {
|
||||
try {
|
||||
const stripeId = paymentInput.customer?.metadata?.stripe_id
|
||||
|
||||
if (stripeId !== paymentInput.customer_id) {
|
||||
return await this.createPaymentNew(paymentInput)
|
||||
return await this.createPaymentNew(paymentInput, intentRequestData)
|
||||
} else {
|
||||
if (paymentSessionData.amount === Math.round(paymentInput.amount)) {
|
||||
return sessionData
|
||||
return paymentSessionData
|
||||
}
|
||||
|
||||
return await this.stripe_.paymentIntents.update(paymentSessionData.id, {
|
||||
|
||||
Reference in new issue
Block a user