@webbers/pay-payments-medusa 1.0.3 → 1.0.5

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webbers/pay-payments-medusa",
3
3
  "displayName": "Medusa v2 Pay. Plugin",
4
- "version": "1.0.3",
4
+ "version": "1.0.5",
5
5
  "description": "The Pay.nl payment provider plugin for Medusa v2",
6
6
  "author": "Webbers B.V. <development@webbers.com>",
7
7
  "license": "MIT",
@@ -42,11 +42,11 @@
42
42
  "@medusajs/test-utils": "^2.7.1",
43
43
  "@medusajs/types": "^2.7.1",
44
44
  "@medusajs/ui": "^4.0.9",
45
- "@mikro-orm/cli": "6.4.3",
46
- "@mikro-orm/core": "6.4.3",
47
- "@mikro-orm/knex": "6.4.3",
48
- "@mikro-orm/migrations": "6.4.3",
49
- "@mikro-orm/postgresql": "6.4.3",
45
+ "@mikro-orm/cli": "^6.4.3",
46
+ "@mikro-orm/core": "^6.4.3",
47
+ "@mikro-orm/knex": "^6.4.3",
48
+ "@mikro-orm/migrations": "^6.4.3",
49
+ "@mikro-orm/postgresql": "^6.4.3",
50
50
  "@swc/core": "1.5.7",
51
51
  "@types/node": "^20.17.45",
52
52
  "@types/react": "^18.3.21",
@@ -71,13 +71,13 @@
71
71
  "@medusajs/js-sdk": "^2.7.1",
72
72
  "@medusajs/medusa": "^2.7.1",
73
73
  "@medusajs/test-utils": "^2.7.1",
74
- "@medusajs/ui": "4.0.3",
75
- "@mikro-orm/cli": "6.4.3",
76
- "@mikro-orm/core": "6.4.3",
77
- "@mikro-orm/knex": "6.4.3",
78
- "@mikro-orm/migrations": "6.4.3",
79
- "@mikro-orm/postgresql": "6.4.3",
80
- "@tanstack/react-query": "^5.75.7",
74
+ "@medusajs/ui": "^4.0.3",
75
+ "@mikro-orm/cli": "^6.4.3",
76
+ "@mikro-orm/core": "^6.4.3",
77
+ "@mikro-orm/knex": "^6.4.3",
78
+ "@mikro-orm/migrations": "^6.4.3",
79
+ "@mikro-orm/postgresql": "^6.4.3",
80
+ "@tanstack/react-query": "5.64.2",
81
81
  "awilix": "^8.0.1",
82
82
  "pg": "^8.13.0"
83
83
  },
@@ -57,7 +57,7 @@ const sdk = new Medusa__default.default({
57
57
  }
58
58
  });
59
59
  const displayName = "Medusa v2 Pay. Plugin";
60
- const version = "1.0.3";
60
+ const version = "1.0.5";
61
61
  function getSortedPaymentMethods(data) {
62
62
  const { checkoutOptions, checkoutSequence } = data;
63
63
  const { primary } = checkoutSequence.default;
@@ -133,6 +133,7 @@ const PaySettingPage = () => {
133
133
  refetchConfig();
134
134
  ui.toast.success("Success", { description: "Successfully cleared cache" });
135
135
  }).catch((error) => {
136
+ console.log("error", error);
136
137
  ui.toast.error("Error", { description: getErrorMessage(error) });
137
138
  });
138
139
  };
@@ -54,7 +54,7 @@ const sdk = new Medusa({
54
54
  }
55
55
  });
56
56
  const displayName = "Medusa v2 Pay. Plugin";
57
- const version = "1.0.3";
57
+ const version = "1.0.5";
58
58
  function getSortedPaymentMethods(data) {
59
59
  const { checkoutOptions, checkoutSequence } = data;
60
60
  const { primary } = checkoutSequence.default;
@@ -130,6 +130,7 @@ const PaySettingPage = () => {
130
130
  refetchConfig();
131
131
  toast.success("Success", { description: "Successfully cleared cache" });
132
132
  }).catch((error) => {
133
+ console.log("error", error);
133
134
  toast.error("Error", { description: getErrorMessage(error) });
134
135
  });
135
136
  };
@@ -13,11 +13,13 @@ const GET = async (req, res) => {
13
13
  const slCode = payProviderOptions.slCode;
14
14
  const key = `${constants_1.PAY_CACHE_KEY.CONFIG}:${slCode}`;
15
15
  await cacheModuleService.invalidate(key);
16
- return res.status(200).send("Successfully cleared cache");
16
+ return res.status(200).send({
17
+ message: "Successfully cleared cache",
18
+ });
17
19
  }
18
20
  catch (err) {
19
21
  return res.status(500).send(err);
20
22
  }
21
23
  };
22
24
  exports.GET = GET;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BheS9jbGVhci1jYWNoZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBNEU7QUFDNUUsd0VBQXNFO0FBRy9ELE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNwQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUFJLFlBQVksQ0FBQyxPQUFRO2FBQzlDLE9BQWdCLENBQUMsT0FBUSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDO2FBQ2hFLE9BQTBCLENBQUE7UUFFN0IsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFBO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEdBQUcseUJBQWEsQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUE7UUFFL0MsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFeEMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBdkJZLFFBQUEsR0FBRyxPQXVCZiJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BheS9jbGVhci1jYWNoZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBNEU7QUFDNUUsd0VBQXNFO0FBRy9ELE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNwQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUFJLFlBQVksQ0FBQyxPQUFRO2FBQzlDLE9BQWdCLENBQUMsT0FBUSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDO2FBQ2hFLE9BQTBCLENBQUE7UUFFN0IsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFBO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEdBQUcseUJBQWEsQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUE7UUFFL0MsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFeEMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBekJZLFFBQUEsR0FBRyxPQXlCZiJ9
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const types_1 = require("../../../../providers/pay/types");
6
+ const isPayProvider = (providerId) => Object.values(types_1.PaymentProviderKeys).some((key) => providerId.startsWith(key));
7
+ const POST = async (req, res) => {
8
+ const { provider } = req.params;
9
+ const isPay = isPayProvider(provider);
10
+ try {
11
+ const options =
12
+ // @ts-expect-error "Not sure if .options exists on a module"
13
+ req.scope.resolve(utils_1.Modules.PAYMENT).options || {};
14
+ const event = {
15
+ provider,
16
+ payload: { data: req.body, rawData: req.rawBody, headers: req.headers },
17
+ };
18
+ const eventBus = req.scope.resolve(utils_1.Modules.EVENT_BUS);
19
+ // we delay the processing of the event to avoid a conflict caused by a race condition
20
+ await eventBus.emit({
21
+ name: utils_1.PaymentWebhookEvents.WebhookReceived,
22
+ data: event,
23
+ }, {
24
+ delay: options.webhook_delay || 5000,
25
+ attempts: options.webhook_retries || 3,
26
+ });
27
+ }
28
+ catch (err) {
29
+ if (isPay) {
30
+ res.status(400).send("FALSE");
31
+ }
32
+ else {
33
+ res.status(400).send(`Webhook Error: ${err.message}`);
34
+ }
35
+ return;
36
+ }
37
+ if (isPay) {
38
+ res.status(200).send("TRUE");
39
+ }
40
+ else {
41
+ res.sendStatus(200);
42
+ }
43
+ };
44
+ exports.POST = POST;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2hvb2tzL3BheW1lbnQvW3Byb3ZpZGVyXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFBdUU7QUFDdkUsMkRBR3dDO0FBRXhDLE1BQU0sYUFBYSxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsMkJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUF5QixFQUFFLEVBQUUsQ0FDcEUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FDM0IsQ0FBQTtBQUVJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUU3QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFckMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPO1FBQ1gsNkRBQTZEO1FBQzdELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFBO1FBRWxELE1BQU0sS0FBSyxHQUFHO1lBQ1osUUFBUTtZQUNSLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFDO1NBQ3RFLENBQUE7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFckQsc0ZBQXNGO1FBQ3RGLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FDakI7WUFDRSxJQUFJLEVBQUUsNEJBQW9CLENBQUMsZUFBZTtZQUMxQyxJQUFJLEVBQUUsS0FBSztTQUNaLEVBQ0Q7WUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJO1lBQ3BDLFFBQVEsRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUM7U0FDdkMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUVELE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLENBQUM7U0FBTSxDQUFDO1FBQ04sR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBM0NZLFFBQUEsSUFBSSxRQTJDaEIifQ==
@@ -58,6 +58,7 @@ class PayBase extends utils_1.AbstractPaymentProvider {
58
58
  process.env.NODE_ENV === "test" ||
59
59
  false;
60
60
  this.client_ = new pay_client_1.PayClient(options, this.logger_);
61
+ this.eventBusService_ = container.event_bus;
61
62
  }
62
63
  createPayOrderPayload(order, session_id, paymentMethodInput) {
63
64
  const currency = order.currency_code.toUpperCase();
@@ -178,7 +179,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
178
179
  * @returns The authorization result
179
180
  */
180
181
  async authorizePayment(input) {
181
- console.log("authorizePayment", input);
182
182
  if (input.data?.orderId) {
183
183
  const { status } = await this.getPaymentStatus(input);
184
184
  return { data: input.data, status };
@@ -191,7 +191,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
191
191
  * @returns The capture result
192
192
  */
193
193
  async capturePayment(input) {
194
- console.log("capturePayment", input);
195
194
  const id = input.data?.orderId;
196
195
  if (!id) {
197
196
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment ID is required");
@@ -236,7 +235,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
236
235
  * @returns The refund result
237
236
  */
238
237
  async refundPayment(input) {
239
- console.log("refundPayment", input);
240
238
  const id = input.data?.orderId;
241
239
  if (!id) {
242
240
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment ID is required");
@@ -276,16 +274,23 @@ class PayBase extends utils_1.AbstractPaymentProvider {
276
274
  * @returns The cancellation result
277
275
  */
278
276
  async cancelPayment(input) {
279
- console.log("cancelPayment", input);
280
277
  const id = input.data?.orderId;
281
278
  if (!id) {
282
279
  return {};
283
280
  }
284
281
  try {
285
282
  const payment = await this.client_.getOrder(id);
286
- if (payment.status.code === constants_1.PayPaymentStatus.EXPIRED) {
283
+ const cancelledStatusses = [
284
+ constants_1.PayPaymentStatus.CANCEL,
285
+ constants_1.PayPaymentStatus.EXPIRED,
286
+ constants_1.PayPaymentStatus.DENIED_64,
287
+ constants_1.PayPaymentStatus.DENIED_63,
288
+ constants_1.PayPaymentStatus.CANCEL_61,
289
+ constants_1.PayPaymentStatus.CHARGEBACK,
290
+ ];
291
+ if (cancelledStatusses.includes(payment.status.code)) {
287
292
  this.debug_ &&
288
- this.logger_.info(`Pay. payment ${id} is already expired, no need to cancel`);
293
+ this.logger_.info(`Pay. payment ${id} is already canceled or expired, no need to cancel`);
289
294
  return {
290
295
  data: {
291
296
  id,
@@ -313,7 +318,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
313
318
  * @returns The deletion result
314
319
  */
315
320
  async deletePayment(input) {
316
- console.log("deletePayment", input);
317
321
  return this.cancelPayment(input);
318
322
  }
319
323
  /**
@@ -322,7 +326,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
322
326
  * @returns The payment status
323
327
  */
324
328
  async getPaymentStatus(input) {
325
- console.log("getPaymentStatus", input);
326
329
  const id = input.data?.id;
327
330
  try {
328
331
  const { status } = await this.client_.getTransaction(id);
@@ -370,8 +373,10 @@ class PayBase extends utils_1.AbstractPaymentProvider {
370
373
  * @returns The payment details
371
374
  */
372
375
  async retrievePayment(input) {
373
- console.log("retrievePayment", input);
374
376
  const id = input.data?.id;
377
+ if (!id) {
378
+ throw new utils_1.MedusaError(utils_1.MedusaErrorTypes.INVALID_DATA, "Payment id not present");
379
+ }
375
380
  try {
376
381
  let data;
377
382
  // Check if the order ID starts with a 2, in that case we will need to use the legacy Pay API.
@@ -396,7 +401,6 @@ class PayBase extends utils_1.AbstractPaymentProvider {
396
401
  * @returns The updated payment details
397
402
  */
398
403
  async updatePayment(input) {
399
- console.log("updatePayment", input);
400
404
  // If the Pay data is passed from the order created hook, only then we update
401
405
  // the session data.
402
406
  const payload = input.data?.payload;
@@ -485,8 +489,10 @@ class PayBase extends utils_1.AbstractPaymentProvider {
485
489
  session_id: payment.transferData.session_id,
486
490
  amount: payment.amount.value / 100,
487
491
  };
488
- console.log("payment.status.code", payment.status.code);
489
- console.log("baseData", baseData);
492
+ if (this.debug_) {
493
+ this.logger_.debug(`PayPaymentStatus: ${payment.status.code}`);
494
+ this.logger_.debug(JSON.stringify(baseData));
495
+ }
490
496
  switch (payment.status.code) {
491
497
  case constants_1.PayPaymentStatus.PAID:
492
498
  return {
@@ -509,6 +515,13 @@ class PayBase extends utils_1.AbstractPaymentProvider {
509
515
  case constants_1.PayPaymentStatus.DENIED_63:
510
516
  case constants_1.PayPaymentStatus.CANCEL_61:
511
517
  case constants_1.PayPaymentStatus.CHARGEBACK:
518
+ await this.eventBusService_.emit({
519
+ name: "pay_payment.canceled",
520
+ data: {
521
+ // This will be the Order ID that has been set during the creation of the payment
522
+ id: payment.reference,
523
+ },
524
+ }, {});
512
525
  return {
513
526
  action: utils_1.PaymentActions.CANCELED,
514
527
  data: baseData,
@@ -558,4 +571,4 @@ class PayBase extends utils_1.AbstractPaymentProvider {
558
571
  }
559
572
  }
560
573
  exports.default = PayBase;
561
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS9jb3JlL3BheS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBNkJBLHFEQU1rQztBQVNsQyw2Q0FBc0M7QUFDdEMsb0RBQTJCO0FBQzNCLDJDQUE0QztBQUM1QywyR0FBa0Y7QUFVbEY7O0dBRUc7QUFDSCxNQUFlLE9BQVEsU0FBUSwrQkFBd0M7SUFNckU7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBd0I7UUFDN0MsSUFDRSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ2YsQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNqQixDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ2YsQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNqQixDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDbEIsQ0FBQztZQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHlHQUF5RyxDQUMxRyxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxTQUFTLEVBQUUsT0FBd0I7UUFDN0MsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQWUzQiwwQkFBcUIsR0FBRyxDQUN0QixLQUFrRCxFQUNsRCxFQUFFO1lBQ0YsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFnQixDQUFBO1lBQ2pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQTtZQUU3RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQzdDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSTtnQkFDekMsQ0FB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
574
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS9jb3JlL3BheS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBNkJBLHFEQU9rQztBQVdsQyw2Q0FBc0M7QUFDdEMsb0RBQTJCO0FBQzNCLDJDQUE0QztBQUM1QywyR0FBa0Y7QUFTbEY7O0dBRUc7QUFDSCxNQUFlLE9BQVEsU0FBUSwrQkFBd0M7SUFPckU7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBd0I7UUFDN0MsSUFDRSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ2YsQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNqQixDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ2YsQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNqQixDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDbEIsQ0FBQztZQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHlHQUF5RyxDQUMxRyxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxTQUFTLEVBQUUsT0FBd0I7UUFDN0MsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQWdCM0IsMEJBQXFCLEdBQUcsQ0FDdEIsS0FBa0QsRUFDbEQsRUFBRTtZQUNGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBZ0IsQ0FBQTtZQUNqRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUE7WUFFN0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUM3QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUk7Z0JBQ3pDLENB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
@@ -3,15 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PaySoftposService = exports.PayProviderService = exports.PayIdealService = exports.PayCreditcardService = exports.PayBancontactService = void 0;
7
- var pay_bancontact_1 = require("./pay-bancontact");
8
- Object.defineProperty(exports, "PayBancontactService", { enumerable: true, get: function () { return __importDefault(pay_bancontact_1).default; } });
9
- var pay_creditcard_1 = require("./pay-creditcard");
10
- Object.defineProperty(exports, "PayCreditcardService", { enumerable: true, get: function () { return __importDefault(pay_creditcard_1).default; } });
11
- var pay_ideal_1 = require("./pay-ideal");
12
- Object.defineProperty(exports, "PayIdealService", { enumerable: true, get: function () { return __importDefault(pay_ideal_1).default; } });
13
- var pay_provider_1 = require("./pay-provider");
14
- Object.defineProperty(exports, "PayProviderService", { enumerable: true, get: function () { return __importDefault(pay_provider_1).default; } });
15
- var pay_softpos_1 = require("./pay-softpos");
16
- Object.defineProperty(exports, "PaySoftposService", { enumerable: true, get: function () { return __importDefault(pay_softpos_1).default; } });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBZ0U7QUFBeEQsdUlBQUEsT0FBTyxPQUF3QjtBQUN2QyxtREFBZ0U7QUFBeEQsdUlBQUEsT0FBTyxPQUF3QjtBQUN2Qyx5Q0FBc0Q7QUFBOUMsNkhBQUEsT0FBTyxPQUFtQjtBQUNsQywrQ0FBNEQ7QUFBcEQsbUlBQUEsT0FBTyxPQUFzQjtBQUNyQyw2Q0FBMEQ7QUFBbEQsaUlBQUEsT0FBTyxPQUFxQiJ9
6
+ exports.getPayServiceByProviderId = void 0;
7
+ const pay_bancontact_1 = __importDefault(require("./pay-bancontact"));
8
+ const pay_creditcard_1 = __importDefault(require("./pay-creditcard"));
9
+ const pay_ideal_1 = __importDefault(require("./pay-ideal"));
10
+ const pay_provider_1 = __importDefault(require("./pay-provider"));
11
+ const pay_softpos_1 = __importDefault(require("./pay-softpos"));
12
+ const serviceClasses = [
13
+ pay_bancontact_1.default,
14
+ pay_creditcard_1.default,
15
+ pay_ideal_1.default,
16
+ pay_provider_1.default,
17
+ pay_softpos_1.default,
18
+ ];
19
+ // Build registry once
20
+ const serviceRegistry = {};
21
+ for (const ServiceClass of serviceClasses) {
22
+ serviceRegistry[ServiceClass.identifier] = ServiceClass;
23
+ }
24
+ const getPayServiceByProviderId = (providerId) => serviceRegistry[providerId] || null;
25
+ exports.getPayServiceByProviderId = getPayServiceByProviderId;
26
+ exports.default = serviceRegistry;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzRUFBbUQ7QUFDbkQsc0VBQW1EO0FBQ25ELDREQUF5QztBQUN6QyxrRUFBK0M7QUFDL0MsZ0VBQTZDO0FBRTdDLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLHdCQUFvQjtJQUNwQix3QkFBb0I7SUFDcEIsbUJBQWU7SUFDZixzQkFBa0I7SUFDbEIscUJBQWlCO0NBQ2xCLENBQUE7QUFFRCxzQkFBc0I7QUFDdEIsTUFBTSxlQUFlLEdBQXdCLEVBQUUsQ0FBQTtBQUUvQyxLQUFLLE1BQU0sWUFBWSxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQzFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFBO0FBQ3pELENBQUM7QUFFTSxNQUFNLHlCQUF5QixHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQzlELGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUE7QUFEeEIsUUFBQSx5QkFBeUIsNkJBQ0Q7QUFFckMsa0JBQWUsZUFBZSxDQUFBIn0=
@@ -25,4 +25,4 @@ exports.PaymentProviderKeys = {
25
25
  __exportStar(require("./common"), exports);
26
26
  __exportStar(require("./order"), exports);
27
27
  __exportStar(require("./transaction"), exports);
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQXdCYSxRQUFBLG1CQUFtQixHQUFHO0lBQ2pDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxXQUFXLEVBQUUsZ0JBQWdCO0lBQzdCLFVBQVUsRUFBRSxzQkFBc0I7SUFDbEMsS0FBSyxFQUFFLFdBQVc7SUFDbEIsT0FBTyxFQUFFLGFBQWE7Q0FDdkIsQ0FBQTtBQVNELDJDQUF3QjtBQUN4QiwwQ0FBdUI7QUFDdkIsZ0RBQTZCIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheS90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQXdCYSxRQUFBLG1CQUFtQixHQUFHO0lBQ2pDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxXQUFXLEVBQUUsZ0JBQWdCO0lBQzdCLFVBQVUsRUFBRSxzQkFBc0I7SUFDbEMsS0FBSyxFQUFFLFdBQVc7SUFDbEIsT0FBTyxFQUFFLGFBQWE7Q0FDdkIsQ0FBQTtBQUtELDJDQUF3QjtBQUN4QiwwQ0FBdUI7QUFDdkIsZ0RBQTZCIn0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = paymentCapturedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const core_flows_1 = require("@medusajs/core-flows");
7
+ async function paymentCapturedHandler({ event: { data }, container, }) {
8
+ const logger = container.resolve("logger");
9
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
10
+ logger.info("Process canceled Pay. payment");
11
+ try {
12
+ const { data: [order], } = await query.graph({
13
+ entity: "order",
14
+ fields: ["id"],
15
+ filters: {
16
+ display_id: data.id,
17
+ },
18
+ });
19
+ if (!order) {
20
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No associated order found for ID: ${data.id}`);
21
+ }
22
+ await (0, core_flows_1.cancelOrderWorkflow)(container).run({
23
+ input: {
24
+ order_id: order.id,
25
+ },
26
+ });
27
+ }
28
+ catch (e) {
29
+ logger.error(e);
30
+ throw e;
31
+ }
32
+ }
33
+ exports.config = {
34
+ event: "pay_payment.canceled",
35
+ };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1mYWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcGF5bWVudC1mYWlsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EseUNBb0NDO0FBdkNELHFEQUFnRjtBQUNoRixxREFBd0Q7QUFFekMsS0FBSyxVQUFVLHNCQUFzQixDQUFDLEVBQ25ELEtBQUssRUFBRSxFQUFDLElBQUksRUFBQyxFQUNiLFNBQVMsR0FDb0I7SUFDN0IsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQTtJQUU1QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQ2QsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDcEIsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IscUNBQXFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDL0MsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLElBQUEsZ0NBQW1CLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUU7YUFDbkI7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZixNQUFNLENBQUMsQ0FBQTtJQUNULENBQUM7QUFDSCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSxzQkFBc0I7Q0FDOUIsQ0FBQSJ9
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const utils_1 = require("@medusajs/framework/utils");
7
4
  const core_flows_1 = require("@medusajs/medusa/core-flows");
8
- const pay_provider_1 = __importDefault(require("../../providers/pay/services/pay-provider"));
5
+ const services_1 = require("../../providers/pay/services");
9
6
  /**
10
7
  * Pay. needs order information to validate and/or verify with after pay payment
11
8
  * solutions. Therefore, Medusa payment sessions are ignored, but then we need to
@@ -16,9 +13,10 @@ core_flows_1.completeCartWorkflow.hooks.orderCreated(async ({ order_id, cart_id
16
13
  const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
17
14
  const paymentModuleService = container.resolve(utils_1.Modules.PAYMENT);
18
15
  const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
19
- const payProviderOptions = configModule.modules
20
- .payment.options.providers.find((p) => p.id === "pay")
21
- .options;
16
+ const payModuleConfig = configModule.modules
17
+ .payment.options.providers.find((p) => p.id === "pay");
18
+ const payProviderId = payModuleConfig.id;
19
+ const payProviderOptions = payModuleConfig.options;
22
20
  const { data: [order], } = await query.graph({
23
21
  entity: "order",
24
22
  fields: [
@@ -75,7 +73,12 @@ core_flows_1.completeCartWorkflow.hooks.orderCreated(async ({ order_id, cart_id
75
73
  await paymentModuleService.updatePaymentCollections(payPaymentSession.payment_collection_id, {
76
74
  status: utils_1.PaymentCollectionStatus.NOT_PAID,
77
75
  });
78
- const payProviderService = new pay_provider_1.default(container, payProviderOptions);
76
+ const ServiceClass = (0, services_1.getPayServiceByProviderId)(
77
+ // Remove the default pp_ prefix & remove the id suffix from config
78
+ payPaymentSession.provider_id
79
+ .replace("pp_", "")
80
+ .replace(`_${payProviderId}`, ""));
81
+ const payProviderService = new ServiceClass(container, payProviderOptions);
79
82
  const updatedPaymentSession = await paymentModuleService.updatePaymentSession({
80
83
  id: payPaymentSession.id,
81
84
  data: {
@@ -95,4 +98,4 @@ core_flows_1.completeCartWorkflow.hooks.orderCreated(async ({ order_id, cart_id
95
98
  }
96
99
  }
97
100
  });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY3JlYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvaG9va3Mvb3JkZXItY3JlYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUlrQztBQUNsQyw0REFBZ0U7QUFTaEUsNkZBQTBFO0FBVzFFOzs7O0dBSUc7QUFDSCxhQUFhO0FBQ2IsaUNBQW9CLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDckMsS0FBSyxFQUFFLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUErQixFQUFFLEVBQUU7SUFDdkUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzVDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNwQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7SUFFRCxNQUFNLGtCQUFrQixHQUFJLFlBQVksQ0FBQyxPQUFRO1NBQzlDLE9BQWdCLENBQUMsT0FBUSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDO1NBQ2hFLE9BQTBCLENBQUE7SUFFN0IsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUNkLEdBQStCLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FDL0M7UUFDRSxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixZQUFZO1lBQ1osVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsZUFBZTtZQUNmLFVBQVU7WUFDVixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNu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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY3JlYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvaG9va3Mvb3JkZXItY3JlYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUlrQztBQUNsQyw0REFBZ0U7QUFVaEUsMkRBQXNFO0FBVXRFOzs7O0dBSUc7QUFDSCxhQUFhO0FBQ2IsaUNBQW9CLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDckMsS0FBSyxFQUFFLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUErQixFQUFFLEVBQUU7SUFDdkUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzVDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNwQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7SUFFRCxNQUFNLGVBQWUsR0FBSSxZQUFZLENBQUMsT0FBUTtTQUMzQyxPQUFnQixDQUFDLE9BQVEsQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFBO0lBQ25FLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxFQUFZLENBQUE7SUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUMsT0FBMEIsQ0FBQTtJQUVyRSxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQ2QsR0FBK0IsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUMvQztRQUNFLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLFlBQVk7WUFDWixVQUFVO1lBQ1YsT0FBTztZ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
package/README.md CHANGED
@@ -79,7 +79,7 @@ TBD from here
79
79
  ## Installation
80
80
 
81
81
  ```bash
82
- yarn add @webbers/pay-payments-medusa
82
+ pnpm add @webbers/pay-payments-medusa
83
83
  ```
84
84
 
85
85
  ## Configuration
@@ -87,37 +87,40 @@ yarn add @webbers/pay-payments-medusa
87
87
  Add the provider to the `@medusajs/payment` module in your `medusa-config.ts` file & add it as plugin:
88
88
 
89
89
  ```typescript
90
- plugins: [
91
- // ... other plugins
92
- '@webbers/pay-payments-medusa'
93
- ],
94
- modules
95
- :
96
- [
97
- // ... other modules
98
- {
99
- resolve: "@medusajs/payment",
100
- options: {
101
- providers: [
102
- {
103
- resolve: "@webbers/pay-payments-medusa/providers/pay",
104
- id: "pay",
105
- options: {
106
- paymentDescription: "Your description", // optional
107
- atCode: process.env.PAY_AT_CODE,
108
- apiToken: process.env.PAY_API_TOKEN,
109
- slCode: process.env.PAY_SL_CODE,
110
- slSecret: process.env.PAY_SL_SECRET,
111
- returnUrl: process.env.PAY_RETURN_URL,
112
- testMode: process.env.PAY_TEST_MODE === 'true',
113
- tguApiUrl: process.env.PAY_TGU_API_URL, // defaults to https://connect.pay.nl/v1
114
- otherSlCodes: process.env.PAY_OTHER_SL_CODE ? JSON.parse(process.env.PAY_OTHER_SL_CODE) : undefined,
90
+ module.exports = defineConfig({
91
+ projectConfig: {
92
+ // ...
93
+ },
94
+ plugins: [
95
+ // ... other plugins
96
+ '@webbers/pay-payments-medusa'
97
+ ],
98
+ modules: [
99
+ // ... other modules
100
+ {
101
+ resolve: "@medusajs/medusa/payment",
102
+ options: {
103
+ providers: [
104
+ {
105
+ resolve: "@webbers/pay-payments-medusa/providers/pay",
106
+ id: "pay",
107
+ options: {
108
+ paymentDescription: "Your description", // optional
109
+ atCode: process.env.PAY_AT_CODE,
110
+ apiToken: process.env.PAY_API_TOKEN,
111
+ slCode: process.env.PAY_SL_CODE,
112
+ slSecret: process.env.PAY_SL_SECRET,
113
+ returnUrl: process.env.PAY_RETURN_URL,
114
+ testMode: process.env.PAY_TEST_MODE === 'true',
115
+ tguApiUrl: process.env.PAY_TGU_API_URL, // defaults to https://connect.pay.nl/v1
116
+ otherSlCodes: process.env.PAY_OTHER_SL_CODE ? JSON.parse(process.env.PAY_OTHER_SL_CODE) : undefined,
117
+ },
115
118
  },
116
- },
117
- ]
119
+ ]
120
+ }
118
121
  }
119
- }
120
- ]
122
+ ]
123
+ })
121
124
  ```
122
125
 
123
126
  ## Configuration Options
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webbers/pay-payments-medusa",
3
3
  "displayName": "Medusa v2 Pay. Plugin",
4
- "version": "1.0.3",
4
+ "version": "1.0.5",
5
5
  "description": "The Pay.nl payment provider plugin for Medusa v2",
6
6
  "author": "Webbers B.V. <development@webbers.com>",
7
7
  "license": "MIT",
@@ -42,11 +42,11 @@
42
42
  "@medusajs/test-utils": "^2.7.1",
43
43
  "@medusajs/types": "^2.7.1",
44
44
  "@medusajs/ui": "^4.0.9",
45
- "@mikro-orm/cli": "6.4.3",
46
- "@mikro-orm/core": "6.4.3",
47
- "@mikro-orm/knex": "6.4.3",
48
- "@mikro-orm/migrations": "6.4.3",
49
- "@mikro-orm/postgresql": "6.4.3",
45
+ "@mikro-orm/cli": "^6.4.3",
46
+ "@mikro-orm/core": "^6.4.3",
47
+ "@mikro-orm/knex": "^6.4.3",
48
+ "@mikro-orm/migrations": "^6.4.3",
49
+ "@mikro-orm/postgresql": "^6.4.3",
50
50
  "@swc/core": "1.5.7",
51
51
  "@types/node": "^20.17.45",
52
52
  "@types/react": "^18.3.21",
@@ -71,13 +71,13 @@
71
71
  "@medusajs/js-sdk": "^2.7.1",
72
72
  "@medusajs/medusa": "^2.7.1",
73
73
  "@medusajs/test-utils": "^2.7.1",
74
- "@medusajs/ui": "4.0.3",
75
- "@mikro-orm/cli": "6.4.3",
76
- "@mikro-orm/core": "6.4.3",
77
- "@mikro-orm/knex": "6.4.3",
78
- "@mikro-orm/migrations": "6.4.3",
79
- "@mikro-orm/postgresql": "6.4.3",
80
- "@tanstack/react-query": "^5.75.7",
74
+ "@medusajs/ui": "^4.0.3",
75
+ "@mikro-orm/cli": "^6.4.3",
76
+ "@mikro-orm/core": "^6.4.3",
77
+ "@mikro-orm/knex": "^6.4.3",
78
+ "@mikro-orm/migrations": "^6.4.3",
79
+ "@mikro-orm/postgresql": "^6.4.3",
80
+ "@tanstack/react-query": "5.64.2",
81
81
  "awilix": "^8.0.1",
82
82
  "pg": "^8.13.0"
83
83
  },