@unchainedshop/plugins 2.6.1 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/lib/payment/payrexx/api/index.d.ts +35 -0
  2. package/lib/payment/payrexx/api/index.js +100 -0
  3. package/lib/payment/payrexx/api/index.js.map +1 -0
  4. package/lib/payment/payrexx/index.d.ts +1 -0
  5. package/lib/payment/payrexx/index.js +139 -0
  6. package/lib/payment/payrexx/index.js.map +1 -0
  7. package/lib/payment/payrexx/middleware.d.ts +1 -0
  8. package/lib/payment/payrexx/middleware.js +55 -0
  9. package/lib/payment/payrexx/middleware.js.map +1 -0
  10. package/lib/payment/payrexx/payrexx.d.ts +16 -0
  11. package/lib/payment/payrexx/payrexx.js +19 -0
  12. package/lib/payment/payrexx/payrexx.js.map +1 -0
  13. package/lib/payment/stripe/middleware.d.ts +4 -0
  14. package/lib/payment/stripe/middleware.js +54 -47
  15. package/lib/payment/stripe/middleware.js.map +1 -1
  16. package/lib/plugins-index.js +3 -1
  17. package/lib/plugins-index.js.map +1 -1
  18. package/lib/pricing/delivery-swiss-tax.js +3 -0
  19. package/lib/pricing/delivery-swiss-tax.js.map +1 -1
  20. package/lib/pricing/discount-100-off.d.ts +2 -1
  21. package/lib/pricing/discount-100-off.js.map +1 -1
  22. package/lib/pricing/discount-half-price-manual.d.ts +2 -1
  23. package/lib/pricing/discount-half-price-manual.js.map +1 -1
  24. package/lib/pricing/discount-half-price.d.ts +2 -1
  25. package/lib/pricing/discount-half-price.js.map +1 -1
  26. package/lib/pricing/order-discount.d.ts +2 -1
  27. package/lib/pricing/order-discount.js +2 -8
  28. package/lib/pricing/order-discount.js.map +1 -1
  29. package/lib/pricing/order-items-discount.js +4 -3
  30. package/lib/pricing/order-items-discount.js.map +1 -1
  31. package/lib/pricing/product-discount.js +35 -18
  32. package/lib/pricing/product-discount.js.map +1 -1
  33. package/lib/pricing/product-swiss-tax.js +3 -0
  34. package/lib/pricing/product-swiss-tax.js.map +1 -1
  35. package/package.json +22 -22
  36. package/src/payment/payrexx/api/index.ts +132 -0
  37. package/src/payment/payrexx/index.ts +184 -0
  38. package/src/payment/payrexx/middleware.ts +64 -0
  39. package/src/payment/payrexx/payrexx.ts +25 -0
  40. package/src/payment/payrexx/readme.md +4 -0
  41. package/src/payment/stripe/middleware.ts +58 -51
  42. package/src/plugins-index.ts +10 -0
  43. package/src/pricing/delivery-swiss-tax.ts +6 -1
  44. package/src/pricing/discount-100-off.ts +2 -1
  45. package/src/pricing/discount-half-price-manual.ts +2 -1
  46. package/src/pricing/discount-half-price.ts +2 -1
  47. package/src/pricing/order-discount.ts +4 -10
  48. package/src/pricing/order-items-discount.ts +9 -4
  49. package/src/pricing/product-discount.ts +48 -20
  50. package/src/pricing/product-swiss-tax.ts +6 -1
@@ -1,4 +1,5 @@
1
1
  import { DeliveryPricingAdapter, DeliveryPricingDirector } from '@unchainedshop/core-delivery';
2
+ import { DeliveryPricingRowCategory, } from '@unchainedshop/types/delivery.pricing.js';
2
3
  import { SwissTaxCategories } from './tax/ch.js';
3
4
  const getTaxRate = ({ order, provider }) => {
4
5
  const taxCategoryFromProvider = provider?.configuration?.find(({ key }) => {
@@ -47,6 +48,7 @@ export const DeliverySwissTax = {
47
48
  pricingAdapter.resultSheet().addTax({
48
49
  amount: taxAmount,
49
50
  rate: taxRate,
51
+ baseCategory: DeliveryPricingRowCategory.Delivery,
50
52
  meta: { adapter: DeliverySwissTax.key },
51
53
  });
52
54
  }
@@ -55,6 +57,7 @@ export const DeliverySwissTax = {
55
57
  pricingAdapter.resultSheet().addTax({
56
58
  amount: taxAmount,
57
59
  rate: taxRate,
60
+ baseCategory: DeliveryPricingRowCategory.Delivery,
58
61
  meta: { adapter: DeliverySwissTax.key },
59
62
  });
60
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/delivery-swiss-tax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delivery-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/delivery-swiss-tax.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { IDiscountAdapter } from '@unchainedshop/types/discount.js';
2
- export declare const HundredOff: IDiscountAdapter;
2
+ import { OrderDiscountConfiguration } from '@unchainedshop/core-orders/director/OrderDiscountConfiguration.js';
3
+ export declare const HundredOff: IDiscountAdapter<OrderDiscountConfiguration>;
@@ -1 +1 @@
1
- {"version":3,"file":"discount-100-off.js","sourceRoot":"","sources":["../../src/pricing/discount-100-off.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,MAAM,CAAC,MAAM,UAAU,GAAqB;IAC1C,GAAG,oBAAoB;IAEvB,GAAG,EAAE,iCAAiC;IACtC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;QACzC,CAAC;QAED,qEAAqE;QACrE,4BAA4B,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;YACtD,IAAI,iBAAiB,KAAK,uCAAuC,EAAE,CAAC;gBAClE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"discount-100-off.js","sourceRoot":"","sources":["../../src/pricing/discount-100-off.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,MAAM,CAAC,MAAM,UAAU,GAAiD;IACtE,GAAG,oBAAoB;IAEvB,GAAG,EAAE,iCAAiC;IACtC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;QACzC,CAAC;QAED,qEAAqE;QACrE,4BAA4B,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;YACtD,IAAI,iBAAiB,KAAK,uCAAuC,EAAE,CAAC;gBAClE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { IDiscountAdapter } from '@unchainedshop/types/discount.js';
2
- export declare const HalfPriceManual: IDiscountAdapter;
2
+ import { ProductDiscountConfiguration } from '@unchainedshop/core-products/director/ProductDiscountConfiguration.js';
3
+ export declare const HalfPriceManual: IDiscountAdapter<ProductDiscountConfiguration>;
@@ -1 +1 @@
1
- {"version":3,"file":"discount-half-price-manual.js","sourceRoot":"","sources":["../../src/pricing/discount-half-price-manual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,GAAG,oBAAoB;IAEvB,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,OAAO,IAAI,KAAK,WAAW,CAAC;QAC9B,CAAC;QAED,qEAAqE;QACrE,4BAA4B,CAAC,EAAE,iBAAiB,EAAE;YAChD,IAAI,iBAAiB,KAAK,yCAAyC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"discount-half-price-manual.js","sourceRoot":"","sources":["../../src/pricing/discount-half-price-manual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,MAAM,CAAC,MAAM,eAAe,GAAmD;IAC7E,GAAG,oBAAoB;IAEvB,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,OAAO,IAAI,KAAK,WAAW,CAAC;QAC9B,CAAC;QAED,qEAAqE;QACrE,4BAA4B,CAAC,EAAE,iBAAiB,EAAE;YAChD,IAAI,iBAAiB,KAAK,yCAAyC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { IDiscountAdapter } from '@unchainedshop/types/discount.js';
2
- export declare const HalfPrice: IDiscountAdapter;
2
+ import { ProductDiscountConfiguration } from '@unchainedshop/core-products/director/ProductDiscountConfiguration.js';
3
+ export declare const HalfPrice: IDiscountAdapter<ProductDiscountConfiguration>;
@@ -1 +1 @@
1
- {"version":3,"file":"discount-half-price.js","sourceRoot":"","sources":["../../src/pricing/discount-half-price.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,GAAG,oBAAoB;IAEvB,GAAG,EAAE,oCAAoC;IACzC,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,0BAA0B,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,CAAC,0BAA0B,CAAC;QACtC,CAAC;QAED,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,4BAA4B,CAAC,EAAE,iBAAiB,EAAE;YAChD,IAAI,iBAAiB,KAAK,yCAAyC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"discount-half-price.js","sourceRoot":"","sources":["../../src/pricing/discount-half-price.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,MAAM,CAAC,MAAM,SAAS,GAAmD;IACvE,GAAG,oBAAoB;IAEvB,GAAG,EAAE,oCAAoC;IACzC,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IAEd,uEAAuE;IACvE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,0BAA0B,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,CAAC,0BAA0B,CAAC;QACtC,CAAC;QAED,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,4BAA4B,CAAC,EAAE,iBAAiB,EAAE;YAChD,IAAI,iBAAiB,KAAK,yCAAyC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH,CAAC;AAEF,qBAAqB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { IOrderPricingAdapter } from '@unchainedshop/types/orders.pricing.js';
2
- export declare const OrderDiscount: IOrderPricingAdapter;
2
+ import { OrderDiscountConfiguration } from '@unchainedshop/core-orders/director/OrderDiscountConfiguration.js';
3
+ export declare const OrderDiscount: IOrderPricingAdapter<OrderDiscountConfiguration>;
@@ -16,9 +16,6 @@ export const OrderDiscount = {
16
16
  return {
17
17
  ...pricingAdapter,
18
18
  calculate: async () => {
19
- // discounts need to provide a *fixedRate*
20
- // if you want to add percentual discounts,
21
- // add it to the order item calculation
22
19
  const totalAmountOfItems = params.calculationSheet.total({
23
20
  category: OrderPricingRowCategory.Items,
24
21
  useNetPrice: false,
@@ -39,16 +36,13 @@ export const OrderDiscount = {
39
36
  let amountLeft = totalAmountOfPaymentAndDelivery + totalAmountOfItems;
40
37
  params.discounts.forEach(({ configuration, discountId }) => {
41
38
  // First, we deduce the discount from the items
42
- let alreadyDeducted = 0;
43
- const leftInDiscountToSplit = calcUtils.calculateAmountToSplit({ ...configuration, alreadyDeducted }, totalAmountOfItems);
39
+ const leftInDiscountToSplit = calcUtils.calculateAmountToSplit({ ...configuration }, totalAmountOfItems);
44
40
  const [itemsDiscountAmount, itemsTaxAmount] = calcUtils.applyDiscountToMultipleShares(itemShares, Math.max(0, Math.min(amountLeft, leftInDiscountToSplit)));
45
41
  amountLeft -= itemsDiscountAmount;
46
- alreadyDeducted += itemsDiscountAmount;
47
42
  // After the items, we deduct the remaining discount from payment & delivery fees
48
- const leftInFeesToSplit = calcUtils.calculateAmountToSplit({ ...configuration, alreadyDeducted }, totalAmountOfPaymentAndDelivery);
43
+ const leftInFeesToSplit = calcUtils.calculateAmountToSplit({ ...configuration }, totalAmountOfPaymentAndDelivery);
49
44
  const [deliveryAndPaymentDiscountAmount, deliveryAndPaymentTaxAmount] = calcUtils.applyDiscountToMultipleShares([deliveryShare, paymentShare], Math.max(0, Math.min(amountLeft, leftInFeesToSplit)));
50
45
  amountLeft -= deliveryAndPaymentDiscountAmount;
51
- alreadyDeducted += itemsDiscountAmount;
52
46
  const discountAmount = (itemsDiscountAmount + deliveryAndPaymentDiscountAmount) * -1;
53
47
  const taxAmount = (itemsTaxAmount + deliveryAndPaymentTaxAmount) * -1;
54
48
  if (discountAmount) {
@@ -1 +1 @@
1
- {"version":3,"file":"order-discount.js","sourceRoot":"","sources":["../../src/pricing/order-discount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order-discount.js","sourceRoot":"","sources":["../../src/pricing/order-discount.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,12 @@ const OrderItemsDiscount = {
24
24
  useNetPrice: false,
25
25
  }).amount;
26
26
  const itemShares = orderPositions.map((orderPosition) => calcUtils.resolveRatioAndTaxDivisorForPricingSheet(modules.orders.positions.pricingSheet(orderPosition, order.currency, params.context), totalAmountOfItems));
27
- let alreadyDeducted = 0;
27
+ let amountLeft = totalAmountOfItems;
28
28
  params.discounts.forEach(({ configuration, discountId }) => {
29
29
  // First, we deduce the discount from the items
30
- const [itemsDiscountAmount, itemsTaxAmount] = calcUtils.applyDiscountToMultipleShares(itemShares, calcUtils.calculateAmountToSplit({ ...configuration, alreadyDeducted }, totalAmountOfItems));
31
- alreadyDeducted = +itemsDiscountAmount;
30
+ const leftInItemsToSplit = calcUtils.calculateAmountToSplit({ ...configuration }, totalAmountOfItems);
31
+ const [itemsDiscountAmount, itemsTaxAmount] = calcUtils.applyDiscountToMultipleShares(itemShares, Math.max(0, Math.min(amountLeft, leftInItemsToSplit)));
32
+ amountLeft -= itemsDiscountAmount;
32
33
  const discountAmount = itemsDiscountAmount * -1;
33
34
  const taxAmount = itemsTaxAmount * -1;
34
35
  if (discountAmount) {
@@ -1 +1 @@
1
- {"version":3,"file":"order-items-discount.js","sourceRoot":"","sources":["../../src/pricing/order-items-discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,kBAAkB,GAAyB;IAC/C,GAAG,mBAAmB;IAEtB,GAAG,EAAE,6CAA6C;IAClD,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,yCAAyC;IAChD,UAAU,EAAE,EAAE;IAEd,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,0CAA0C;gBAC1C,2CAA2C;gBAC3C,uCAAuC;gBAEvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBACvD,QAAQ,EAAE,uBAAuB,CAAC,KAAK;oBACvC,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC,MAAM,CAAC;gBAEV,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACtD,SAAS,CAAC,wCAAwC,CAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EACpF,kBAAkB,CACnB,CACF,CAAC;gBAEF,IAAI,eAAe,GAAG,CAAC,CAAC;gBAExB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE;oBACzD,+CAA+C;oBAC/C,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC,6BAA6B,CACnF,UAAU,EACV,SAAS,CAAC,sBAAsB,CAAC,EAAE,GAAG,aAAa,EAAE,eAAe,EAAE,EAAE,kBAAkB,CAAC,CAC5F,CAAC;oBACF,eAAe,GAAG,CAAC,mBAAmB,CAAC;oBAEvC,MAAM,cAAc,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;oBACtC,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;4BACvC,MAAM,EAAE,cAAc;4BACtB,SAAS;4BACT,UAAU;4BACV,IAAI,EAAE;gCACJ,OAAO,EAAE,kBAAkB,CAAC,GAAG;6BAChC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,oBAAoB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"order-items-discount.js","sourceRoot":"","sources":["../../src/pricing/order-items-discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGhE,MAAM,kBAAkB,GAAqD;IAC3E,GAAG,mBAAmB;IAEtB,GAAG,EAAE,6CAA6C;IAClD,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,yCAAyC;IAChD,UAAU,EAAE,EAAE;IAEd,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,0CAA0C;gBAC1C,2CAA2C;gBAC3C,uCAAuC;gBAEvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBACvD,QAAQ,EAAE,uBAAuB,CAAC,KAAK;oBACvC,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC,MAAM,CAAC;gBAEV,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACtD,SAAS,CAAC,wCAAwC,CAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EACpF,kBAAkB,CACnB,CACF,CAAC;gBAEF,IAAI,UAAU,GAAG,kBAAkB,CAAC;gBAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE;oBACzD,+CAA+C;oBAC/C,MAAM,kBAAkB,GAAG,SAAS,CAAC,sBAAsB,CACzD,EAAE,GAAG,aAAa,EAAE,EACpB,kBAAkB,CACnB,CAAC;oBACF,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC,6BAA6B,CACnF,UAAU,EACV,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CACtD,CAAC;oBACF,UAAU,IAAI,mBAAmB,CAAC;oBAElC,MAAM,cAAc,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;oBACtC,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;4BACvC,MAAM,EAAE,cAAc;4BACtB,SAAS;4BACT,UAAU;4BACV,IAAI,EAAE;gCACJ,OAAO,EAAE,kBAAkB,CAAC,GAAG;6BAChC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,oBAAoB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC"}
@@ -12,10 +12,11 @@ const ProductDiscount = {
12
12
  },
13
13
  actions: (params) => {
14
14
  const pricingAdapter = ProductPricingAdapter.actions(params);
15
- const addDiscount = (discount, total, isTaxable) => {
16
- const { configuration, discountId } = discount;
17
- const { isNetPrice = false, ...meta } = configuration;
18
- const amount = calcUtils.applyRate(configuration, total);
15
+ const addDiscounts = (discount, total, resolvedConfiguration) => {
16
+ const { discountId } = discount;
17
+ const { isNetPrice = false, taxRate, ...meta } = resolvedConfiguration;
18
+ const amount = calcUtils.applyRate(resolvedConfiguration, total);
19
+ const isTaxable = taxRate === undefined || taxRate === null;
19
20
  pricingAdapter.resultSheet().addDiscount({
20
21
  amount: amount * -1,
21
22
  discountId,
@@ -23,25 +24,41 @@ const ProductDiscount = {
23
24
  isTaxable,
24
25
  meta: { adapter: ProductDiscount.key, ...meta },
25
26
  });
27
+ if (!isTaxable && taxRate) {
28
+ const taxAmount = calcUtils.getTaxAmount(amount, taxRate, isNetPrice);
29
+ pricingAdapter.resultSheet().addTax({
30
+ amount: taxAmount * -1,
31
+ rate: taxRate,
32
+ discountId,
33
+ baseCategory: ProductPricingRowCategory.Discount,
34
+ meta: { adapter: ProductDiscount.key, discountId, ...meta },
35
+ });
36
+ if (!isNetPrice) {
37
+ pricingAdapter.resultSheet().addDiscount({
38
+ amount: taxAmount,
39
+ discountId,
40
+ isNetPrice: false,
41
+ isTaxable: false,
42
+ meta: { adapter: ProductDiscount.key, discountId, ...meta },
43
+ });
44
+ }
45
+ }
26
46
  };
27
47
  return {
28
48
  ...pricingAdapter,
29
49
  calculate: async () => {
30
- const taxableTotal = params.calculationSheet.sum({
31
- category: ProductPricingRowCategory.Item,
32
- isTaxable: true,
33
- });
34
- const nonTaxableTotal = params.calculationSheet.sum({
35
- category: ProductPricingRowCategory.Item,
36
- isTaxable: false,
37
- });
38
50
  params.discounts.forEach((discount) => {
39
- if (taxableTotal !== 0) {
40
- addDiscount(discount, taxableTotal, true);
41
- }
42
- if (nonTaxableTotal !== 0) {
43
- addDiscount(discount, nonTaxableTotal, false);
44
- }
51
+ const { configuration } = discount;
52
+ const resolvedConfiguration = configuration.customPriceConfigurationResolver
53
+ ? configuration.customPriceConfigurationResolver(params.context.product, params.context.quantity, params.context.configuration)
54
+ : configuration;
55
+ if (!resolvedConfiguration)
56
+ return;
57
+ const total = params.calculationSheet.total({
58
+ category: ProductPricingRowCategory.Item,
59
+ useNetPrice: resolvedConfiguration.isNetPrice,
60
+ });
61
+ addDiscounts(discount, total.amount, resolvedConfiguration);
45
62
  });
46
63
  return pricingAdapter.calculate();
47
64
  },
@@ -1 +1 @@
1
- {"version":3,"file":"product-discount.js","sourceRoot":"","sources":["../../src/pricing/product-discount.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,yBAAyB,GAC1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,eAAe,GAA2B;IAC9C,GAAG,qBAAqB;IAExB,GAAG,EAAE,yCAAyC;IAC9C,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,kCAAkC;IACzC,UAAU,EAAE,EAAE;IAEd,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,KAAa,EAAE,SAAkB,EAAE,EAAE;YAC5E,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;YAC/C,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,aAAa,CAAC;YACtD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAEzD,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;gBACvC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;gBACnB,UAAU;gBACV,UAAU;gBACV,SAAS;gBACT,IAAI,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE;aAChD,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAC/C,QAAQ,EAAE,yBAAyB,CAAC,IAAI;oBACxC,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAClD,QAAQ,EAAE,yBAAyB,CAAC,IAAI;oBACxC,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBAEH,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACpC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;wBACvB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;wBAC1B,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"product-discount.js","sourceRoot":"","sources":["../../src/pricing/product-discount.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
2
+ import { ProductPricingRowCategory, } from '@unchainedshop/types/products.pricing.js';
2
3
  import { SwissTaxCategories } from './tax/ch.js';
3
4
  export const getTaxRate = (context) => {
4
5
  const { product, order } = context;
@@ -52,6 +53,7 @@ export const ProductSwissTax = {
52
53
  pricingAdapter.resultSheet().addTax({
53
54
  amount: taxAmount,
54
55
  rate: taxRate,
56
+ baseCategory: ProductPricingRowCategory.Item,
55
57
  meta: { adapter: ProductSwissTax.key },
56
58
  });
57
59
  }
@@ -60,6 +62,7 @@ export const ProductSwissTax = {
60
62
  pricingAdapter.resultSheet().addTax({
61
63
  amount: taxAmount,
62
64
  rate: taxRate,
65
+ baseCategory: ProductPricingRowCategory.Item,
63
66
  meta: { adapter: ProductSwissTax.key },
64
67
  });
65
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"product-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/product-swiss-tax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-swiss-tax.js","sourceRoot":"","sources":["../../src/pricing/product-swiss-tax.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "2.6.1",
3
+ "version": "2.7.1",
4
4
  "main": "lib/plugins-index.js",
5
5
  "types": "lib/plugins-index.d.ts",
6
6
  "exports": {
@@ -75,35 +75,35 @@
75
75
  "@redis/client": "^1.5.8",
76
76
  "bip32": "^4.0.0",
77
77
  "escape-string-regexp": "^5.0.0",
78
- "ethers": "^6.10.0",
78
+ "ethers": "^6.11.0",
79
79
  "express": "^4.18.2",
80
80
  "lru-cache": "^10.0.0",
81
81
  "open": "^10.0.0",
82
82
  "postfinancecheckout": "^4.1.1",
83
83
  "stripe": "^13.11.0",
84
84
  "tiny-secp256k1": "^2.2.3",
85
- "twilio": "^4.21.0",
85
+ "twilio": "^4.22.0",
86
86
  "web-push": "^3.6.3"
87
87
  },
88
88
  "devDependencies": {
89
- "@redis/client": "^1.5.13",
90
- "@types/node": "^20.11.10",
91
- "@unchainedshop/api": "^2.6.1",
92
- "@unchainedshop/core-delivery": "^2.6.1",
93
- "@unchainedshop/core-enrollments": "^2.6.1",
94
- "@unchainedshop/core-filters": "^2.6.1",
95
- "@unchainedshop/core-messaging": "^2.6.1",
96
- "@unchainedshop/core-orders": "^2.6.1",
97
- "@unchainedshop/core-payment": "^2.6.1",
98
- "@unchainedshop/core-products": "^2.6.1",
99
- "@unchainedshop/core-quotations": "^2.6.1",
100
- "@unchainedshop/core-warehousing": "^2.6.1",
101
- "@unchainedshop/core-worker": "^2.6.1",
102
- "@unchainedshop/events": "^2.6.1",
103
- "@unchainedshop/file-upload": "^2.6.1",
104
- "@unchainedshop/logger": "^2.6.1",
105
- "@unchainedshop/types": "^2.6.1",
106
- "@unchainedshop/utils": "^2.6.1",
89
+ "@redis/client": "^1.5.14",
90
+ "@types/node": "^20.11.17",
91
+ "@unchainedshop/api": "^2.7.1",
92
+ "@unchainedshop/core-delivery": "^2.7.1",
93
+ "@unchainedshop/core-enrollments": "^2.7.1",
94
+ "@unchainedshop/core-filters": "^2.7.1",
95
+ "@unchainedshop/core-messaging": "^2.7.1",
96
+ "@unchainedshop/core-orders": "^2.7.1",
97
+ "@unchainedshop/core-payment": "^2.7.1",
98
+ "@unchainedshop/core-products": "^2.7.1",
99
+ "@unchainedshop/core-quotations": "^2.7.1",
100
+ "@unchainedshop/core-warehousing": "^2.7.1",
101
+ "@unchainedshop/core-worker": "^2.7.1",
102
+ "@unchainedshop/events": "^2.7.1",
103
+ "@unchainedshop/file-upload": "^2.7.1",
104
+ "@unchainedshop/logger": "^2.7.1",
105
+ "@unchainedshop/types": "^2.7.1",
106
+ "@unchainedshop/utils": "^2.7.1",
107
107
  "bluebird": "^3.7.2",
108
108
  "event-iterator": "^2.0.0",
109
109
  "express": "^4.18.2",
@@ -112,7 +112,7 @@
112
112
  "lru-cache": "^10.2.0",
113
113
  "minio": "^7.1.3",
114
114
  "node-sheets": "^1.2.0",
115
- "nodemailer": "^6.9.8",
115
+ "nodemailer": "^6.9.9",
116
116
  "open": "^10.0.3",
117
117
  "postfinancecheckout": "^4.5.0",
118
118
  "request": "^2.88.2",
@@ -0,0 +1,132 @@
1
+ const baseUrl = 'https://api.payrexx.com/v1.0/';
2
+
3
+ export enum GatewayObjectStatus {
4
+ waiting = 'waiting',
5
+ confirmed = 'confirmed',
6
+ cancelled = 'cancelled',
7
+ declined = 'declined',
8
+ authorized = 'authorized',
9
+ reserved = 'reserved',
10
+ refunded = 'refunded',
11
+ refundpending = 'refundpending',
12
+ 'partially-refunded' = 'partially-refunded',
13
+ chargeback = 'chargeback',
14
+ error = 'error',
15
+ uncaptured = '_',
16
+ }
17
+
18
+ export type GatewayObject = {
19
+ status: GatewayObjectStatus;
20
+ currency: string;
21
+ amount: number;
22
+ referenceId: string;
23
+ invoices: {
24
+ transactions: {
25
+ id: string;
26
+ }[];
27
+ }[];
28
+ };
29
+
30
+ export type TransactionObject = any;
31
+
32
+ const createPayrexxAPI = (instance: string, secret: string) => ({
33
+ async buildSignature(query = '') {
34
+ const key = await crypto.subtle.importKey(
35
+ 'raw',
36
+ new TextEncoder().encode(secret),
37
+ { name: 'HMAC', hash: 'SHA-256' },
38
+ false,
39
+ ['sign', 'verify'],
40
+ );
41
+ const signature = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(query));
42
+ return btoa(String.fromCharCode(...new Uint8Array(signature)));
43
+ },
44
+
45
+ buildUrl(path, params = {}) {
46
+ const url = new URL(path, baseUrl);
47
+ url.search = new URLSearchParams({ instance, ...params }).toString();
48
+ return url.href;
49
+ },
50
+
51
+ async chargePreAuthorized(id, params) {
52
+ const queryParams = { ...params };
53
+ const signature = await this.buildSignature(new URLSearchParams(queryParams).toString());
54
+ queryParams.ApiSignature = signature;
55
+
56
+ const url = this.buildUrl(`Transaction/${id}/`);
57
+
58
+ const result = await fetch(url, {
59
+ method: 'POST',
60
+ body: new URLSearchParams(queryParams).toString(),
61
+ headers: {
62
+ accept: 'application/json',
63
+ 'content-type': 'application/x-www-form-urlencoded',
64
+ },
65
+ });
66
+
67
+ if (result.ok) {
68
+ return result.json();
69
+ }
70
+ throw new Error(await result.text());
71
+ },
72
+
73
+ async deleteReservation(id) {
74
+ const url = this.buildUrl(`Transaction/${id}/`, { ApiSignature: await this.buildSignature() });
75
+ const result = await fetch(url, {
76
+ method: 'DELETE',
77
+ headers: {
78
+ accept: 'application/json',
79
+ 'content-type': 'application/x-www-form-urlencoded',
80
+ },
81
+ });
82
+
83
+ if (result.ok) {
84
+ return result.json();
85
+ }
86
+ throw new Error(await result.text());
87
+ },
88
+
89
+ async getGateway(id): Promise<GatewayObject> {
90
+ const url = this.buildUrl(`Gateway/${id}/`, { ApiSignature: await this.buildSignature() });
91
+ const result = await fetch(url);
92
+ if (!result.ok) throw new Error(await result.text());
93
+ const { status, data } = await result.json();
94
+ if (status !== 'success') return null;
95
+ return data?.[0];
96
+ },
97
+
98
+ async createGateway(params): Promise<GatewayObject> {
99
+ const queryParams = { ...params };
100
+ const signature = await this.buildSignature(new URLSearchParams(queryParams).toString());
101
+ queryParams.ApiSignature = signature;
102
+
103
+ const url = this.buildUrl('Gateway/');
104
+ const result = await fetch(url, {
105
+ method: 'POST',
106
+ body: new URLSearchParams(queryParams).toString(),
107
+ headers: {
108
+ accept: 'application/json',
109
+ 'content-type': 'application/x-www-form-urlencoded',
110
+ },
111
+ });
112
+
113
+ if (result.ok) {
114
+ return result.json();
115
+ }
116
+ throw new Error(await result.text());
117
+ },
118
+ });
119
+
120
+ export default createPayrexxAPI;
121
+
122
+ // where you want to consume the payrexx module:
123
+ // const payrexx = payrexx.init(instance, api_secret);
124
+ // const response = await payrexx.createGateway({
125
+ // amount: 100,
126
+ // // add more fields here
127
+ // });
128
+
129
+ // if (response.status === 200) {
130
+ // const gateway = response.data.data[0];
131
+ // // here you will get the gateway
132
+ // }