fix(medusa-payment-klarna, medusa-payment-stripe, medusa-payment-paypal): Totals calculation (#2381)

This commit is contained in:
Sebastian Rindom
2022-10-08 10:53:19 +02:00
committed by GitHub
parent 5f2bc975cb
commit a908a7716c
8 changed files with 157 additions and 198 deletions

View File

@@ -72,7 +72,6 @@ describe("PaypalProviderService", () => {
const paypalProviderService = new PayPalProviderService(
{
regionService: RegionServiceMock,
totalsService: TotalsServiceMock,
},
{
api_key: "test",
@@ -98,7 +97,6 @@ describe("PaypalProviderService", () => {
const paypalProviderService = new PayPalProviderService(
{
regionService: RegionServiceMock,
totalsService: TotalsServiceMock,
},
{
api_key: "test",
@@ -149,7 +147,6 @@ describe("PaypalProviderService", () => {
const paypalProviderService = new PayPalProviderService(
{
regionService: RegionServiceMock,
totalsService: TotalsServiceMock,
},
{
api_key: "test",
@@ -196,7 +193,6 @@ describe("PaypalProviderService", () => {
const paypalProviderService = new PayPalProviderService(
{
regionService: RegionServiceMock,
totalsService: TotalsServiceMock,
},
{
api_key: "test",
@@ -275,7 +271,6 @@ describe("PaypalProviderService", () => {
const paypalProviderService = new PayPalProviderService(
{
regionService: RegionServiceMock,
totalsService: TotalsServiceMock,
},
{
api_key: "test",
@@ -349,9 +344,13 @@ describe("PaypalProviderService", () => {
data: { id: "test-voided" },
})
expect(PayPalMock.payments.AuthorizationsVoidRequest).not.toHaveBeenCalled()
expect(
PayPalMock.payments.AuthorizationsVoidRequest
).not.toHaveBeenCalled()
expect(PayPalMock.payments.CapturesRefundRequest).not.toHaveBeenCalled()
expect(PayPalMock.orders.OrdersGetRequest).toHaveBeenCalledWith("test-voided")
expect(PayPalMock.orders.OrdersGetRequest).toHaveBeenCalledWith(
"test-voided"
)
expect(PayPalClientMock.execute).toHaveBeenCalledTimes(1)
expect(result.id).toEqual("test-voided")
@@ -366,9 +365,13 @@ describe("PaypalProviderService", () => {
},
})
expect(PayPalMock.payments.AuthorizationsVoidRequest).not.toHaveBeenCalled()
expect(
PayPalMock.payments.AuthorizationsVoidRequest
).not.toHaveBeenCalled()
expect(PayPalMock.payments.CapturesRefundRequest).not.toHaveBeenCalled()
expect(PayPalMock.orders.OrdersGetRequest).toHaveBeenCalledWith("test-refund")
expect(PayPalMock.orders.OrdersGetRequest).toHaveBeenCalledWith(
"test-refund"
)
expect(PayPalClientMock.execute).toHaveBeenCalledTimes(1)
expect(result.id).toEqual("test-refund")

View File

@@ -12,7 +12,7 @@ function roundToTwo(num, currency) {
class PayPalProviderService extends PaymentService {
static identifier = "paypal"
constructor({ totalsService, regionService }, options) {
constructor({ regionService }, options) {
super()
/**
@@ -44,9 +44,6 @@ class PayPalProviderService extends PaymentService {
/** @private @const {RegionService} */
this.regionService_ = regionService
/** @private @const {TotalsService} */
this.totalsService_ = totalsService
}
/**
@@ -94,7 +91,7 @@ class PayPalProviderService extends PaymentService {
const { region_id } = cart
const { currency_code } = await this.regionService_.retrieve(region_id)
const amount = await this.totalsService_.getTotal(cart)
const amount = cart.total
const request = new PayPal.orders.OrdersCreateRequest()
request.requestBody({
@@ -289,7 +286,8 @@ class PayPalProviderService extends PaymentService {
async cancelPayment(payment) {
const order = await this.retrievePayment(payment.data)
const isAlreadyCanceled = order.status === "VOIDED"
const isCanceledAndFullyRefund = order.status === "COMPLETED" && !!order.invoice_id
const isCanceledAndFullyRefund =
order.status === "COMPLETED" && !!order.invoice_id
if (isAlreadyCanceled || isCanceledAndFullyRefund) {
return order
}