Merge pull request #308 from medusajs/fix/paypal-complete-order
fix(medusa-payment-paypal): fixes bug where swap carts completed by webhook resulted in regular orders
This commit is contained in:
@@ -22,7 +22,8 @@ export default async (req, res) => {
|
||||
}
|
||||
|
||||
try {
|
||||
const authId = req.body.resource.id
|
||||
const body = req.body
|
||||
const authId = body.resource.id
|
||||
const auth = await paypalService.retrieveAuthorization(authId)
|
||||
|
||||
const order = await paypalService.retrieveOrderFromAuth(auth)
|
||||
@@ -37,18 +38,44 @@ export default async (req, res) => {
|
||||
|
||||
const manager = req.scope.resolve("manager")
|
||||
const cartService = req.scope.resolve("cartService")
|
||||
const swapService = req.scope.resolve("swapService")
|
||||
const orderService = req.scope.resolve("orderService")
|
||||
|
||||
await manager.transaction(async (m) => {
|
||||
const order = await orderService
|
||||
.withTransaction(m)
|
||||
.retrieveByCartId(cartId)
|
||||
.catch((_) => undefined)
|
||||
const cart = await cartService.withTransaction(m).retrieve(cartId)
|
||||
|
||||
if (!order) {
|
||||
await cartService.withTransaction(m).setPaymentSession(cartId, "paypal")
|
||||
await cartService.withTransaction(m).authorizePayment(cartId)
|
||||
await orderService.withTransaction(m).createFromCart(cartId)
|
||||
switch (cart.type) {
|
||||
case "swap": {
|
||||
const swap = await swapService
|
||||
.withTransaction(m)
|
||||
.retrieveByCartId(cartId)
|
||||
.catch((_) => undefined)
|
||||
|
||||
if (swap && swap.confirmed_at === null) {
|
||||
await cartService
|
||||
.withTransaction(m)
|
||||
.setPaymentSession(cartId, "paypal")
|
||||
await cartService.withTransaction(m).authorizePayment(cartId)
|
||||
await swapService.withTransaction(m).registerCartCompletion(swap.id)
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
default: {
|
||||
const order = await orderService
|
||||
.withTransaction(m)
|
||||
.retrieveByCartId(cartId)
|
||||
.catch((_) => undefined)
|
||||
|
||||
if (!order) {
|
||||
await cartService
|
||||
.withTransaction(m)
|
||||
.setPaymentSession(cartId, "paypal")
|
||||
await cartService.withTransaction(m).authorizePayment(cartId)
|
||||
await orderService.withTransaction(m).createFromCart(cartId)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user