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:
Sebastian Rindom
2021-07-09 12:09:19 +02:00
committed by GitHub

View File

@@ -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
}
}
})