feat(medusa): Payment Collection endpoints (#2525)

This commit is contained in:
Carlos R. L. Rodrigues authored and GitHub committed 2022-11-11 18:28:45 +01:00
1 parent 27184f3878
commit 755ba90c05
58 files changed
+1190 -484

No files matched your search

@@ -50,13 +50,43 @@ export default async (req, res) => {
res.sendStatus(200)
}
async function handlePaymentCollection(event, req, res, id, paymentIntentId) {
const manager = req.scope.resolve("manager")
const paymentCollectionService = req.scope.resolve(
"paymentCollectionService"
)
const paycol = await paymentCollectionService
.retrieve(id, { relations: ["payments"] })
.catch(() => undefined)
if (paycol?.payments?.length) {
if (event.type === "payment_intent.succeeded") {
const payment = paycol.payments.find(
(pay) => pay.data.id === paymentIntentId
)
if (payment && !payment.captured_at) {
await manager.transaction(async (manager) => {
await paymentCollectionService
.withTransaction(manager)
.capture(payment.id)
})
}
res.sendStatus(200)
return
}
}
res.sendStatus(204)
}
const paymentIntent = event.data.object
const cartId = paymentIntent.metadata.cart_id
const cartId = paymentIntent.metadata.cart_id // Backward compatibility
const resourceId = paymentIntent.metadata.resource_id
if (isPaymentCollection(resourceId)) {
// TODO: handle payment collection
await handlePaymentCollection(event, req, res, resourceId, paymentIntentId)
} else {
await handleCartPayments(event, req, res, resourceId ?? cartId)
await handleCartPayments(event, req, res, cartId ?? resourceId)
}
}
@@ -26,7 +26,7 @@ class StripeBase extends AbstractPaymentService {
options
)
/** @private @const {string[]} */
this.paymentMethodTypes = paymentMethodTypes
this.paymentMethodTypes_ = paymentMethodTypes
/**
* Required Stripe options:
@@ -93,7 +93,7 @@ class StripeBase extends AbstractPaymentService {
* @return {Promise<Data[]>} saved payments methods
*/
async retrieveSavedMethods(customer) {
return Promise.resolve([])
return []
}
/**
@@ -83,7 +83,7 @@ class StripeProviderService extends AbstractPaymentService {
return methods.data
}
return Promise.resolve([])
return []
}
/**
@@ -222,7 +222,7 @@ class StripeProviderService extends AbstractPaymentService {
*/
async retrievePayment(data) {
try {
return this.stripe_.paymentIntents.retrieve(data.id)
return await this.stripe_.paymentIntents.retrieve(data.id)
} catch (error) {
throw error
}
@@ -235,7 +235,7 @@ class StripeProviderService extends AbstractPaymentService {
*/
async getPaymentData(paymentSession) {
try {
return this.stripe_.paymentIntents.retrieve(paymentSession.data.id)
return await this.stripe_.paymentIntents.retrieve(paymentSession.data.id)
} catch (error) {
throw error
}
@@ -259,7 +259,7 @@ class StripeProviderService extends AbstractPaymentService {
async updatePaymentData(sessionData, update) {
try {
return this.stripe_.paymentIntents.update(sessionData.id, {
return await this.stripe_.paymentIntents.update(sessionData.id, {
...update.data,
})
} catch (error) {
@@ -284,7 +284,7 @@ class StripeProviderService extends AbstractPaymentService {
return sessionData
}
return this.stripe_.paymentIntents.update(sessionData.id, {
return await this.stripe_.paymentIntents.update(sessionData.id, {
amount: Math.round(cart.total),
})
}
@@ -304,7 +304,7 @@ class StripeProviderService extends AbstractPaymentService {
return sessionData
}
return this.stripe_.paymentIntents.update(paymentSessionData.id, {
return await this.stripe_.paymentIntents.update(paymentSessionData.id, {
amount: Math.round(paymentInput.amount),
})
}
@@ -335,7 +335,7 @@ class StripeProviderService extends AbstractPaymentService {
*/
async updatePaymentIntentCustomer(paymentIntentId, customerId) {
try {
return this.stripe_.paymentIntents.update(paymentIntentId, {
return await this.stripe_.paymentIntents.update(paymentIntentId, {
customer: customerId,
})
} catch (error) {