@paykit-sdk/medusajs 1.0.0 → 1.0.2

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.
package/README.md CHANGED
@@ -5,7 +5,7 @@ Universal payment provider adapter for Medusa v2+ using PayKit. Compatible with
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @paykit-sdk/medusajs @paykit-sdk/core
8
+ npm install @paykit-sdk/medusajs
9
9
  ```
10
10
 
11
11
  ## Install your provider
@@ -25,7 +25,7 @@ import { createStripe } from '@paykit-sdk/stripe';
25
25
  export default defineConfig({
26
26
  modules: [
27
27
  {
28
- resolve: '@paykit-sdk/medusa-adapter',
28
+ resolve: '@paykit-sdk/medusajs',
29
29
  options: {
30
30
  provider: createStripe({ apiKey: process.env.STRIPE_API_KEY }),
31
31
  webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
package/dist/index.js CHANGED
@@ -83,14 +83,20 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
83
83
  data
84
84
  }) => {
85
85
  if (this.options.debug) {
86
- console.info("[PayKit] Initiating payment", { context, amount, currency_code, data });
86
+ console.info("[PayKit] Initiating payment", {
87
+ context,
88
+ amount,
89
+ currency_code,
90
+ data
91
+ });
87
92
  }
88
93
  const intent = {
89
- status: "pending",
90
94
  amount: Number(amount),
91
95
  currency: currency_code,
92
- metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? "" },
93
- provider_metadata: data?.provider_metadata ?? void 0
96
+ metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? null },
97
+ provider_metadata: data?.provider_metadata,
98
+ capture_method: "manual",
99
+ item_id: data?.item_id
94
100
  };
95
101
  let customer;
96
102
  if (context?.account_holder?.data?.id) {
@@ -99,7 +105,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
99
105
  customer = { email: data.email };
100
106
  }
101
107
  if (!customer) {
102
- throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Required: customer ID (account_holder) or email (data)");
108
+ throw new utils.MedusaError(
109
+ utils.MedusaError.Types.INVALID_DATA,
110
+ "Required: customer ID (account_holder) or email (data)"
111
+ );
103
112
  }
104
113
  if (typeof customer === "object" && "email" in customer) {
105
114
  await core.tryCatchAsync(
@@ -107,7 +116,9 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
107
116
  email: customer.email,
108
117
  phone: data?.phone ?? "",
109
118
  name: data?.name ? data.name : customer.email.split("@")[0],
110
- metadata: { PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa" }) }
119
+ metadata: {
120
+ PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa-paykit-adapter" })
121
+ }
111
122
  })
112
123
  );
113
124
  } else {
@@ -117,9 +128,25 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
117
128
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
118
129
  this.paykit.payments.create(intent)
119
130
  );
120
- if (paymentIntentError)
121
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
122
- return { id: paymentIntentResult.id, status: medusaStatus$InboundSchema(paymentIntentResult.status) };
131
+ if (paymentIntentError) {
132
+ throw new utils.MedusaError(
133
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
134
+ paymentIntentError.message
135
+ );
136
+ }
137
+ if (paymentIntentResult.requires_action && paymentIntentResult.payment_url) {
138
+ return {
139
+ id: paymentIntentResult.id,
140
+ status: utils.PaymentSessionStatus.REQUIRES_MORE,
141
+ data: {
142
+ payment_url: paymentIntentResult.payment_url
143
+ }
144
+ };
145
+ }
146
+ return {
147
+ id: paymentIntentResult.id,
148
+ status: medusaStatus$InboundSchema(paymentIntentResult.status)
149
+ };
123
150
  };
124
151
  capturePayment = async (input) => {
125
152
  if (this.options.debug) {
@@ -130,13 +157,24 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
130
157
  input?.data ?? {},
131
158
  "Missing required payment ID"
132
159
  );
133
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
134
- if (!amount) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment amount");
160
+ if (!id)
161
+ throw new utils.MedusaError(
162
+ utils.MedusaError.Types.INVALID_DATA,
163
+ "Missing required payment ID"
164
+ );
165
+ if (!amount)
166
+ throw new utils.MedusaError(
167
+ utils.MedusaError.Types.INVALID_DATA,
168
+ "Missing required payment amount"
169
+ );
135
170
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
136
171
  this.paykit.payments.capture(id, { amount: Number(amount) })
137
172
  );
138
173
  if (paymentIntentError)
139
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
174
+ throw new utils.MedusaError(
175
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
176
+ paymentIntentError.message
177
+ );
140
178
  return { data: paymentIntentResult };
141
179
  };
142
180
  authorizePayment = async (input) => {
@@ -154,10 +192,19 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
154
192
  input?.data ?? {},
155
193
  "Missing required payment ID"
156
194
  );
157
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
158
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.cancel(id));
195
+ if (!id)
196
+ throw new utils.MedusaError(
197
+ utils.MedusaError.Types.INVALID_DATA,
198
+ "Missing required payment ID"
199
+ );
200
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
201
+ this.paykit.payments.cancel(id)
202
+ );
159
203
  if (paymentIntentError)
160
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
204
+ throw new utils.MedusaError(
205
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
206
+ paymentIntentError.message
207
+ );
161
208
  return { data: paymentIntentResult };
162
209
  };
163
210
  deletePayment = async (input) => {
@@ -169,11 +216,24 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
169
216
  input?.data ?? {},
170
217
  "Missing required payment ID"
171
218
  );
172
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
173
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.retrieve(id));
219
+ if (!id)
220
+ throw new utils.MedusaError(
221
+ utils.MedusaError.Types.INVALID_DATA,
222
+ "Missing required payment ID"
223
+ );
224
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
225
+ this.paykit.payments.retrieve(id)
226
+ );
174
227
  if (paymentIntentError)
175
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
176
- if (!paymentIntentResult) throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, "Payment not found");
228
+ throw new utils.MedusaError(
229
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
230
+ paymentIntentError.message
231
+ );
232
+ if (!paymentIntentResult)
233
+ throw new utils.MedusaError(
234
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
235
+ "Payment not found"
236
+ );
177
237
  return {
178
238
  status: medusaStatus$InboundSchema(paymentIntentResult.status),
179
239
  data: paymentIntentResult
@@ -188,7 +248,11 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
188
248
  input?.data ?? {},
189
249
  "Missing required payment ID"
190
250
  );
191
- if (!paymentId) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
251
+ if (!paymentId)
252
+ throw new utils.MedusaError(
253
+ utils.MedusaError.Types.INVALID_DATA,
254
+ "Missing required payment ID"
255
+ );
192
256
  const [refundResult, refundError] = await core.tryCatchAsync(
193
257
  this.paykit.refunds.create({
194
258
  payment_id: paymentId,
@@ -198,7 +262,11 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
198
262
  provider_metadata: input.data?.provider_metadata ? input.data.provider_metadata : void 0
199
263
  })
200
264
  );
201
- if (refundError) throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, refundError.message);
265
+ if (refundError)
266
+ throw new utils.MedusaError(
267
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
268
+ refundError.message
269
+ );
202
270
  return { data: refundResult };
203
271
  };
204
272
  retrievePayment = async (input) => {
@@ -210,10 +278,19 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
210
278
  input?.data ?? {},
211
279
  "Missing required payment ID"
212
280
  );
213
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
214
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.retrieve(id));
281
+ if (!id)
282
+ throw new utils.MedusaError(
283
+ utils.MedusaError.Types.INVALID_DATA,
284
+ "Missing required payment ID"
285
+ );
286
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
287
+ this.paykit.payments.retrieve(id)
288
+ );
215
289
  if (paymentIntentError)
216
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
290
+ throw new utils.MedusaError(
291
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
292
+ paymentIntentError.message
293
+ );
217
294
  return { data: paymentIntentResult };
218
295
  };
219
296
  updatePayment = async (input) => {
@@ -226,13 +303,20 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
226
303
  "Missing required payment ID"
227
304
  );
228
305
  if (!amount || !currency_code)
229
- throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required amount or currency code");
306
+ throw new utils.MedusaError(
307
+ utils.MedusaError.Types.INVALID_DATA,
308
+ "Missing required amount or currency code"
309
+ );
230
310
  const { id: paymentId } = core.validateRequiredKeys(
231
311
  ["id"],
232
312
  input.data,
233
313
  "Missing required payment ID"
234
314
  );
235
- if (!paymentId) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
315
+ if (!paymentId)
316
+ throw new utils.MedusaError(
317
+ utils.MedusaError.Types.INVALID_DATA,
318
+ "Missing required payment ID"
319
+ );
236
320
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
237
321
  this.paykit.payments.update(paymentId, {
238
322
  amount: Number(amount),
@@ -242,7 +326,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
242
326
  })
243
327
  );
244
328
  if (paymentIntentError)
245
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
329
+ throw new utils.MedusaError(
330
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
331
+ paymentIntentError.message
332
+ );
246
333
  return { data: paymentIntentResult };
247
334
  };
248
335
  getWebhookActionAndData = async (payload) => {
@@ -271,7 +358,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
271
358
  const webhook = this.paykit.webhooks.setup({ webhookSecret: this.options.webhookSecret }).on("payment.created", async (event) => {
272
359
  return {
273
360
  action: utils.PaymentActions.PENDING,
274
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
361
+ data: {
362
+ session_id: event.data?.metadata?.session_id,
363
+ amount: event.data?.amount
364
+ }
275
365
  };
276
366
  }).on("payment.updated", async (event) => {
277
367
  const statusActionMap = {
@@ -285,17 +375,26 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
285
375
  };
286
376
  return {
287
377
  action: event.data?.status ? statusActionMap[event.data.status] : utils.PaymentActions.PENDING,
288
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
378
+ data: {
379
+ session_id: event.data?.metadata?.session_id,
380
+ amount: event.data?.amount
381
+ }
289
382
  };
290
383
  }).on("payment.canceled", async (event) => {
291
384
  return {
292
385
  action: utils.PaymentActions.CANCELED,
293
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
386
+ data: {
387
+ session_id: event.data?.metadata?.session_id,
388
+ amount: event.data?.amount
389
+ }
294
390
  };
295
391
  });
392
+ const stringifiedHeaders = Object.fromEntries(
393
+ Object.entries(headers).map(([key, value]) => [key, String(value)])
394
+ );
296
395
  const webhookEvents = await webhook.handle({
297
396
  body: rawData,
298
- headers,
397
+ headers: new Headers(stringifiedHeaders),
299
398
  fullUrl
300
399
  });
301
400
  return webhookEvents;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { ModuleProvider, Modules, AbstractPaymentProvider, MedusaError, PaymentActions, PaymentSessionStatus } from '@medusajs/framework/utils';
1
+ import { ModuleProvider, Modules, AbstractPaymentProvider, MedusaError, PaymentSessionStatus, PaymentActions } from '@medusajs/framework/utils';
2
2
  import { providerSchema, PayKit, tryCatchAsync, validateRequiredKeys } from '@paykit-sdk/core';
3
3
  import { z } from 'zod';
4
4
 
@@ -79,14 +79,20 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
79
79
  data
80
80
  }) => {
81
81
  if (this.options.debug) {
82
- console.info("[PayKit] Initiating payment", { context, amount, currency_code, data });
82
+ console.info("[PayKit] Initiating payment", {
83
+ context,
84
+ amount,
85
+ currency_code,
86
+ data
87
+ });
83
88
  }
84
89
  const intent = {
85
- status: "pending",
86
90
  amount: Number(amount),
87
91
  currency: currency_code,
88
- metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? "" },
89
- provider_metadata: data?.provider_metadata ?? void 0
92
+ metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? null },
93
+ provider_metadata: data?.provider_metadata,
94
+ capture_method: "manual",
95
+ item_id: data?.item_id
90
96
  };
91
97
  let customer;
92
98
  if (context?.account_holder?.data?.id) {
@@ -95,7 +101,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
95
101
  customer = { email: data.email };
96
102
  }
97
103
  if (!customer) {
98
- throw new MedusaError(MedusaError.Types.INVALID_DATA, "Required: customer ID (account_holder) or email (data)");
104
+ throw new MedusaError(
105
+ MedusaError.Types.INVALID_DATA,
106
+ "Required: customer ID (account_holder) or email (data)"
107
+ );
99
108
  }
100
109
  if (typeof customer === "object" && "email" in customer) {
101
110
  await tryCatchAsync(
@@ -103,7 +112,9 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
103
112
  email: customer.email,
104
113
  phone: data?.phone ?? "",
105
114
  name: data?.name ? data.name : customer.email.split("@")[0],
106
- metadata: { PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa" }) }
115
+ metadata: {
116
+ PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa-paykit-adapter" })
117
+ }
107
118
  })
108
119
  );
109
120
  } else {
@@ -113,9 +124,25 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
113
124
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
114
125
  this.paykit.payments.create(intent)
115
126
  );
116
- if (paymentIntentError)
117
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
118
- return { id: paymentIntentResult.id, status: medusaStatus$InboundSchema(paymentIntentResult.status) };
127
+ if (paymentIntentError) {
128
+ throw new MedusaError(
129
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
130
+ paymentIntentError.message
131
+ );
132
+ }
133
+ if (paymentIntentResult.requires_action && paymentIntentResult.payment_url) {
134
+ return {
135
+ id: paymentIntentResult.id,
136
+ status: PaymentSessionStatus.REQUIRES_MORE,
137
+ data: {
138
+ payment_url: paymentIntentResult.payment_url
139
+ }
140
+ };
141
+ }
142
+ return {
143
+ id: paymentIntentResult.id,
144
+ status: medusaStatus$InboundSchema(paymentIntentResult.status)
145
+ };
119
146
  };
120
147
  capturePayment = async (input) => {
121
148
  if (this.options.debug) {
@@ -126,13 +153,24 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
126
153
  input?.data ?? {},
127
154
  "Missing required payment ID"
128
155
  );
129
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
130
- if (!amount) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment amount");
156
+ if (!id)
157
+ throw new MedusaError(
158
+ MedusaError.Types.INVALID_DATA,
159
+ "Missing required payment ID"
160
+ );
161
+ if (!amount)
162
+ throw new MedusaError(
163
+ MedusaError.Types.INVALID_DATA,
164
+ "Missing required payment amount"
165
+ );
131
166
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
132
167
  this.paykit.payments.capture(id, { amount: Number(amount) })
133
168
  );
134
169
  if (paymentIntentError)
135
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
170
+ throw new MedusaError(
171
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
172
+ paymentIntentError.message
173
+ );
136
174
  return { data: paymentIntentResult };
137
175
  };
138
176
  authorizePayment = async (input) => {
@@ -150,10 +188,19 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
150
188
  input?.data ?? {},
151
189
  "Missing required payment ID"
152
190
  );
153
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
154
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.cancel(id));
191
+ if (!id)
192
+ throw new MedusaError(
193
+ MedusaError.Types.INVALID_DATA,
194
+ "Missing required payment ID"
195
+ );
196
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
197
+ this.paykit.payments.cancel(id)
198
+ );
155
199
  if (paymentIntentError)
156
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
200
+ throw new MedusaError(
201
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
202
+ paymentIntentError.message
203
+ );
157
204
  return { data: paymentIntentResult };
158
205
  };
159
206
  deletePayment = async (input) => {
@@ -165,11 +212,24 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
165
212
  input?.data ?? {},
166
213
  "Missing required payment ID"
167
214
  );
168
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
169
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.retrieve(id));
215
+ if (!id)
216
+ throw new MedusaError(
217
+ MedusaError.Types.INVALID_DATA,
218
+ "Missing required payment ID"
219
+ );
220
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
221
+ this.paykit.payments.retrieve(id)
222
+ );
170
223
  if (paymentIntentError)
171
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
172
- if (!paymentIntentResult) throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, "Payment not found");
224
+ throw new MedusaError(
225
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
226
+ paymentIntentError.message
227
+ );
228
+ if (!paymentIntentResult)
229
+ throw new MedusaError(
230
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
231
+ "Payment not found"
232
+ );
173
233
  return {
174
234
  status: medusaStatus$InboundSchema(paymentIntentResult.status),
175
235
  data: paymentIntentResult
@@ -184,7 +244,11 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
184
244
  input?.data ?? {},
185
245
  "Missing required payment ID"
186
246
  );
187
- if (!paymentId) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
247
+ if (!paymentId)
248
+ throw new MedusaError(
249
+ MedusaError.Types.INVALID_DATA,
250
+ "Missing required payment ID"
251
+ );
188
252
  const [refundResult, refundError] = await tryCatchAsync(
189
253
  this.paykit.refunds.create({
190
254
  payment_id: paymentId,
@@ -194,7 +258,11 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
194
258
  provider_metadata: input.data?.provider_metadata ? input.data.provider_metadata : void 0
195
259
  })
196
260
  );
197
- if (refundError) throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, refundError.message);
261
+ if (refundError)
262
+ throw new MedusaError(
263
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
264
+ refundError.message
265
+ );
198
266
  return { data: refundResult };
199
267
  };
200
268
  retrievePayment = async (input) => {
@@ -206,10 +274,19 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
206
274
  input?.data ?? {},
207
275
  "Missing required payment ID"
208
276
  );
209
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
210
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.retrieve(id));
277
+ if (!id)
278
+ throw new MedusaError(
279
+ MedusaError.Types.INVALID_DATA,
280
+ "Missing required payment ID"
281
+ );
282
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
283
+ this.paykit.payments.retrieve(id)
284
+ );
211
285
  if (paymentIntentError)
212
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
286
+ throw new MedusaError(
287
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
288
+ paymentIntentError.message
289
+ );
213
290
  return { data: paymentIntentResult };
214
291
  };
215
292
  updatePayment = async (input) => {
@@ -222,13 +299,20 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
222
299
  "Missing required payment ID"
223
300
  );
224
301
  if (!amount || !currency_code)
225
- throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required amount or currency code");
302
+ throw new MedusaError(
303
+ MedusaError.Types.INVALID_DATA,
304
+ "Missing required amount or currency code"
305
+ );
226
306
  const { id: paymentId } = validateRequiredKeys(
227
307
  ["id"],
228
308
  input.data,
229
309
  "Missing required payment ID"
230
310
  );
231
- if (!paymentId) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
311
+ if (!paymentId)
312
+ throw new MedusaError(
313
+ MedusaError.Types.INVALID_DATA,
314
+ "Missing required payment ID"
315
+ );
232
316
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
233
317
  this.paykit.payments.update(paymentId, {
234
318
  amount: Number(amount),
@@ -238,7 +322,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
238
322
  })
239
323
  );
240
324
  if (paymentIntentError)
241
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
325
+ throw new MedusaError(
326
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
327
+ paymentIntentError.message
328
+ );
242
329
  return { data: paymentIntentResult };
243
330
  };
244
331
  getWebhookActionAndData = async (payload) => {
@@ -267,7 +354,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
267
354
  const webhook = this.paykit.webhooks.setup({ webhookSecret: this.options.webhookSecret }).on("payment.created", async (event) => {
268
355
  return {
269
356
  action: PaymentActions.PENDING,
270
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
357
+ data: {
358
+ session_id: event.data?.metadata?.session_id,
359
+ amount: event.data?.amount
360
+ }
271
361
  };
272
362
  }).on("payment.updated", async (event) => {
273
363
  const statusActionMap = {
@@ -281,17 +371,26 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
281
371
  };
282
372
  return {
283
373
  action: event.data?.status ? statusActionMap[event.data.status] : PaymentActions.PENDING,
284
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
374
+ data: {
375
+ session_id: event.data?.metadata?.session_id,
376
+ amount: event.data?.amount
377
+ }
285
378
  };
286
379
  }).on("payment.canceled", async (event) => {
287
380
  return {
288
381
  action: PaymentActions.CANCELED,
289
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
382
+ data: {
383
+ session_id: event.data?.metadata?.session_id,
384
+ amount: event.data?.amount
385
+ }
290
386
  };
291
387
  });
388
+ const stringifiedHeaders = Object.fromEntries(
389
+ Object.entries(headers).map(([key, value]) => [key, String(value)])
390
+ );
292
391
  const webhookEvents = await webhook.handle({
293
392
  body: rawData,
294
- headers,
393
+ headers: new Headers(stringifiedHeaders),
295
394
  fullUrl
296
395
  });
297
396
  return webhookEvents;
@@ -81,14 +81,20 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
81
81
  data
82
82
  }) => {
83
83
  if (this.options.debug) {
84
- console.info("[PayKit] Initiating payment", { context, amount, currency_code, data });
84
+ console.info("[PayKit] Initiating payment", {
85
+ context,
86
+ amount,
87
+ currency_code,
88
+ data
89
+ });
85
90
  }
86
91
  const intent = {
87
- status: "pending",
88
92
  amount: Number(amount),
89
93
  currency: currency_code,
90
- metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? "" },
91
- provider_metadata: data?.provider_metadata ?? void 0
94
+ metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? null },
95
+ provider_metadata: data?.provider_metadata,
96
+ capture_method: "manual",
97
+ item_id: data?.item_id
92
98
  };
93
99
  let customer;
94
100
  if (context?.account_holder?.data?.id) {
@@ -97,7 +103,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
97
103
  customer = { email: data.email };
98
104
  }
99
105
  if (!customer) {
100
- throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Required: customer ID (account_holder) or email (data)");
106
+ throw new utils.MedusaError(
107
+ utils.MedusaError.Types.INVALID_DATA,
108
+ "Required: customer ID (account_holder) or email (data)"
109
+ );
101
110
  }
102
111
  if (typeof customer === "object" && "email" in customer) {
103
112
  await core.tryCatchAsync(
@@ -105,7 +114,9 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
105
114
  email: customer.email,
106
115
  phone: data?.phone ?? "",
107
116
  name: data?.name ? data.name : customer.email.split("@")[0],
108
- metadata: { PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa" }) }
117
+ metadata: {
118
+ PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa-paykit-adapter" })
119
+ }
109
120
  })
110
121
  );
111
122
  } else {
@@ -115,9 +126,25 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
115
126
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
116
127
  this.paykit.payments.create(intent)
117
128
  );
118
- if (paymentIntentError)
119
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
120
- return { id: paymentIntentResult.id, status: medusaStatus$InboundSchema(paymentIntentResult.status) };
129
+ if (paymentIntentError) {
130
+ throw new utils.MedusaError(
131
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
132
+ paymentIntentError.message
133
+ );
134
+ }
135
+ if (paymentIntentResult.requires_action && paymentIntentResult.payment_url) {
136
+ return {
137
+ id: paymentIntentResult.id,
138
+ status: utils.PaymentSessionStatus.REQUIRES_MORE,
139
+ data: {
140
+ payment_url: paymentIntentResult.payment_url
141
+ }
142
+ };
143
+ }
144
+ return {
145
+ id: paymentIntentResult.id,
146
+ status: medusaStatus$InboundSchema(paymentIntentResult.status)
147
+ };
121
148
  };
122
149
  capturePayment = async (input) => {
123
150
  if (this.options.debug) {
@@ -128,13 +155,24 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
128
155
  input?.data ?? {},
129
156
  "Missing required payment ID"
130
157
  );
131
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
132
- if (!amount) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment amount");
158
+ if (!id)
159
+ throw new utils.MedusaError(
160
+ utils.MedusaError.Types.INVALID_DATA,
161
+ "Missing required payment ID"
162
+ );
163
+ if (!amount)
164
+ throw new utils.MedusaError(
165
+ utils.MedusaError.Types.INVALID_DATA,
166
+ "Missing required payment amount"
167
+ );
133
168
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
134
169
  this.paykit.payments.capture(id, { amount: Number(amount) })
135
170
  );
136
171
  if (paymentIntentError)
137
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
172
+ throw new utils.MedusaError(
173
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
174
+ paymentIntentError.message
175
+ );
138
176
  return { data: paymentIntentResult };
139
177
  };
140
178
  authorizePayment = async (input) => {
@@ -152,10 +190,19 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
152
190
  input?.data ?? {},
153
191
  "Missing required payment ID"
154
192
  );
155
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
156
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.cancel(id));
193
+ if (!id)
194
+ throw new utils.MedusaError(
195
+ utils.MedusaError.Types.INVALID_DATA,
196
+ "Missing required payment ID"
197
+ );
198
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
199
+ this.paykit.payments.cancel(id)
200
+ );
157
201
  if (paymentIntentError)
158
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
202
+ throw new utils.MedusaError(
203
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
204
+ paymentIntentError.message
205
+ );
159
206
  return { data: paymentIntentResult };
160
207
  };
161
208
  deletePayment = async (input) => {
@@ -167,11 +214,24 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
167
214
  input?.data ?? {},
168
215
  "Missing required payment ID"
169
216
  );
170
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
171
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.retrieve(id));
217
+ if (!id)
218
+ throw new utils.MedusaError(
219
+ utils.MedusaError.Types.INVALID_DATA,
220
+ "Missing required payment ID"
221
+ );
222
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
223
+ this.paykit.payments.retrieve(id)
224
+ );
172
225
  if (paymentIntentError)
173
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
174
- if (!paymentIntentResult) throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, "Payment not found");
226
+ throw new utils.MedusaError(
227
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
228
+ paymentIntentError.message
229
+ );
230
+ if (!paymentIntentResult)
231
+ throw new utils.MedusaError(
232
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
233
+ "Payment not found"
234
+ );
175
235
  return {
176
236
  status: medusaStatus$InboundSchema(paymentIntentResult.status),
177
237
  data: paymentIntentResult
@@ -186,7 +246,11 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
186
246
  input?.data ?? {},
187
247
  "Missing required payment ID"
188
248
  );
189
- if (!paymentId) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
249
+ if (!paymentId)
250
+ throw new utils.MedusaError(
251
+ utils.MedusaError.Types.INVALID_DATA,
252
+ "Missing required payment ID"
253
+ );
190
254
  const [refundResult, refundError] = await core.tryCatchAsync(
191
255
  this.paykit.refunds.create({
192
256
  payment_id: paymentId,
@@ -196,7 +260,11 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
196
260
  provider_metadata: input.data?.provider_metadata ? input.data.provider_metadata : void 0
197
261
  })
198
262
  );
199
- if (refundError) throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, refundError.message);
263
+ if (refundError)
264
+ throw new utils.MedusaError(
265
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
266
+ refundError.message
267
+ );
200
268
  return { data: refundResult };
201
269
  };
202
270
  retrievePayment = async (input) => {
@@ -208,10 +276,19 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
208
276
  input?.data ?? {},
209
277
  "Missing required payment ID"
210
278
  );
211
- if (!id) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
212
- const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(this.paykit.payments.retrieve(id));
279
+ if (!id)
280
+ throw new utils.MedusaError(
281
+ utils.MedusaError.Types.INVALID_DATA,
282
+ "Missing required payment ID"
283
+ );
284
+ const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
285
+ this.paykit.payments.retrieve(id)
286
+ );
213
287
  if (paymentIntentError)
214
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
288
+ throw new utils.MedusaError(
289
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
290
+ paymentIntentError.message
291
+ );
215
292
  return { data: paymentIntentResult };
216
293
  };
217
294
  updatePayment = async (input) => {
@@ -224,13 +301,20 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
224
301
  "Missing required payment ID"
225
302
  );
226
303
  if (!amount || !currency_code)
227
- throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required amount or currency code");
304
+ throw new utils.MedusaError(
305
+ utils.MedusaError.Types.INVALID_DATA,
306
+ "Missing required amount or currency code"
307
+ );
228
308
  const { id: paymentId } = core.validateRequiredKeys(
229
309
  ["id"],
230
310
  input.data,
231
311
  "Missing required payment ID"
232
312
  );
233
- if (!paymentId) throw new utils.MedusaError(utils.MedusaError.Types.INVALID_DATA, "Missing required payment ID");
313
+ if (!paymentId)
314
+ throw new utils.MedusaError(
315
+ utils.MedusaError.Types.INVALID_DATA,
316
+ "Missing required payment ID"
317
+ );
234
318
  const [paymentIntentResult, paymentIntentError] = await core.tryCatchAsync(
235
319
  this.paykit.payments.update(paymentId, {
236
320
  amount: Number(amount),
@@ -240,7 +324,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
240
324
  })
241
325
  );
242
326
  if (paymentIntentError)
243
- throw new utils.MedusaError(utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
327
+ throw new utils.MedusaError(
328
+ utils.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
329
+ paymentIntentError.message
330
+ );
244
331
  return { data: paymentIntentResult };
245
332
  };
246
333
  getWebhookActionAndData = async (payload) => {
@@ -269,7 +356,10 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
269
356
  const webhook = this.paykit.webhooks.setup({ webhookSecret: this.options.webhookSecret }).on("payment.created", async (event) => {
270
357
  return {
271
358
  action: utils.PaymentActions.PENDING,
272
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
359
+ data: {
360
+ session_id: event.data?.metadata?.session_id,
361
+ amount: event.data?.amount
362
+ }
273
363
  };
274
364
  }).on("payment.updated", async (event) => {
275
365
  const statusActionMap = {
@@ -283,17 +373,26 @@ var PaykitMedusaJSAdapter = class extends utils.AbstractPaymentProvider {
283
373
  };
284
374
  return {
285
375
  action: event.data?.status ? statusActionMap[event.data.status] : utils.PaymentActions.PENDING,
286
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
376
+ data: {
377
+ session_id: event.data?.metadata?.session_id,
378
+ amount: event.data?.amount
379
+ }
287
380
  };
288
381
  }).on("payment.canceled", async (event) => {
289
382
  return {
290
383
  action: utils.PaymentActions.CANCELED,
291
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
384
+ data: {
385
+ session_id: event.data?.metadata?.session_id,
386
+ amount: event.data?.amount
387
+ }
292
388
  };
293
389
  });
390
+ const stringifiedHeaders = Object.fromEntries(
391
+ Object.entries(headers).map(([key, value]) => [key, String(value)])
392
+ );
294
393
  const webhookEvents = await webhook.handle({
295
394
  body: rawData,
296
- headers,
395
+ headers: new Headers(stringifiedHeaders),
297
396
  fullUrl
298
397
  });
299
398
  return webhookEvents;
@@ -1,4 +1,4 @@
1
- import { AbstractPaymentProvider, MedusaError, PaymentActions, PaymentSessionStatus } from '@medusajs/framework/utils';
1
+ import { AbstractPaymentProvider, MedusaError, PaymentSessionStatus, PaymentActions } from '@medusajs/framework/utils';
2
2
  import { providerSchema, PayKit, tryCatchAsync, validateRequiredKeys } from '@paykit-sdk/core';
3
3
  import { z } from 'zod';
4
4
 
@@ -79,14 +79,20 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
79
79
  data
80
80
  }) => {
81
81
  if (this.options.debug) {
82
- console.info("[PayKit] Initiating payment", { context, amount, currency_code, data });
82
+ console.info("[PayKit] Initiating payment", {
83
+ context,
84
+ amount,
85
+ currency_code,
86
+ data
87
+ });
83
88
  }
84
89
  const intent = {
85
- status: "pending",
86
90
  amount: Number(amount),
87
91
  currency: currency_code,
88
- metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? "" },
89
- provider_metadata: data?.provider_metadata ?? void 0
92
+ metadata: { ...data?.metadata ?? {}, session_id: data?.session_id ?? null },
93
+ provider_metadata: data?.provider_metadata,
94
+ capture_method: "manual",
95
+ item_id: data?.item_id
90
96
  };
91
97
  let customer;
92
98
  if (context?.account_holder?.data?.id) {
@@ -95,7 +101,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
95
101
  customer = { email: data.email };
96
102
  }
97
103
  if (!customer) {
98
- throw new MedusaError(MedusaError.Types.INVALID_DATA, "Required: customer ID (account_holder) or email (data)");
104
+ throw new MedusaError(
105
+ MedusaError.Types.INVALID_DATA,
106
+ "Required: customer ID (account_holder) or email (data)"
107
+ );
99
108
  }
100
109
  if (typeof customer === "object" && "email" in customer) {
101
110
  await tryCatchAsync(
@@ -103,7 +112,9 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
103
112
  email: customer.email,
104
113
  phone: data?.phone ?? "",
105
114
  name: data?.name ? data.name : customer.email.split("@")[0],
106
- metadata: { PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa" }) }
115
+ metadata: {
116
+ PAYKIT_METADATA_KEY: JSON.stringify({ source: "medusa-paykit-adapter" })
117
+ }
107
118
  })
108
119
  );
109
120
  } else {
@@ -113,9 +124,25 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
113
124
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
114
125
  this.paykit.payments.create(intent)
115
126
  );
116
- if (paymentIntentError)
117
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
118
- return { id: paymentIntentResult.id, status: medusaStatus$InboundSchema(paymentIntentResult.status) };
127
+ if (paymentIntentError) {
128
+ throw new MedusaError(
129
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
130
+ paymentIntentError.message
131
+ );
132
+ }
133
+ if (paymentIntentResult.requires_action && paymentIntentResult.payment_url) {
134
+ return {
135
+ id: paymentIntentResult.id,
136
+ status: PaymentSessionStatus.REQUIRES_MORE,
137
+ data: {
138
+ payment_url: paymentIntentResult.payment_url
139
+ }
140
+ };
141
+ }
142
+ return {
143
+ id: paymentIntentResult.id,
144
+ status: medusaStatus$InboundSchema(paymentIntentResult.status)
145
+ };
119
146
  };
120
147
  capturePayment = async (input) => {
121
148
  if (this.options.debug) {
@@ -126,13 +153,24 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
126
153
  input?.data ?? {},
127
154
  "Missing required payment ID"
128
155
  );
129
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
130
- if (!amount) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment amount");
156
+ if (!id)
157
+ throw new MedusaError(
158
+ MedusaError.Types.INVALID_DATA,
159
+ "Missing required payment ID"
160
+ );
161
+ if (!amount)
162
+ throw new MedusaError(
163
+ MedusaError.Types.INVALID_DATA,
164
+ "Missing required payment amount"
165
+ );
131
166
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
132
167
  this.paykit.payments.capture(id, { amount: Number(amount) })
133
168
  );
134
169
  if (paymentIntentError)
135
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
170
+ throw new MedusaError(
171
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
172
+ paymentIntentError.message
173
+ );
136
174
  return { data: paymentIntentResult };
137
175
  };
138
176
  authorizePayment = async (input) => {
@@ -150,10 +188,19 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
150
188
  input?.data ?? {},
151
189
  "Missing required payment ID"
152
190
  );
153
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
154
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.cancel(id));
191
+ if (!id)
192
+ throw new MedusaError(
193
+ MedusaError.Types.INVALID_DATA,
194
+ "Missing required payment ID"
195
+ );
196
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
197
+ this.paykit.payments.cancel(id)
198
+ );
155
199
  if (paymentIntentError)
156
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
200
+ throw new MedusaError(
201
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
202
+ paymentIntentError.message
203
+ );
157
204
  return { data: paymentIntentResult };
158
205
  };
159
206
  deletePayment = async (input) => {
@@ -165,11 +212,24 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
165
212
  input?.data ?? {},
166
213
  "Missing required payment ID"
167
214
  );
168
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
169
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.retrieve(id));
215
+ if (!id)
216
+ throw new MedusaError(
217
+ MedusaError.Types.INVALID_DATA,
218
+ "Missing required payment ID"
219
+ );
220
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
221
+ this.paykit.payments.retrieve(id)
222
+ );
170
223
  if (paymentIntentError)
171
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
172
- if (!paymentIntentResult) throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, "Payment not found");
224
+ throw new MedusaError(
225
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
226
+ paymentIntentError.message
227
+ );
228
+ if (!paymentIntentResult)
229
+ throw new MedusaError(
230
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
231
+ "Payment not found"
232
+ );
173
233
  return {
174
234
  status: medusaStatus$InboundSchema(paymentIntentResult.status),
175
235
  data: paymentIntentResult
@@ -184,7 +244,11 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
184
244
  input?.data ?? {},
185
245
  "Missing required payment ID"
186
246
  );
187
- if (!paymentId) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
247
+ if (!paymentId)
248
+ throw new MedusaError(
249
+ MedusaError.Types.INVALID_DATA,
250
+ "Missing required payment ID"
251
+ );
188
252
  const [refundResult, refundError] = await tryCatchAsync(
189
253
  this.paykit.refunds.create({
190
254
  payment_id: paymentId,
@@ -194,7 +258,11 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
194
258
  provider_metadata: input.data?.provider_metadata ? input.data.provider_metadata : void 0
195
259
  })
196
260
  );
197
- if (refundError) throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, refundError.message);
261
+ if (refundError)
262
+ throw new MedusaError(
263
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
264
+ refundError.message
265
+ );
198
266
  return { data: refundResult };
199
267
  };
200
268
  retrievePayment = async (input) => {
@@ -206,10 +274,19 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
206
274
  input?.data ?? {},
207
275
  "Missing required payment ID"
208
276
  );
209
- if (!id) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
210
- const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(this.paykit.payments.retrieve(id));
277
+ if (!id)
278
+ throw new MedusaError(
279
+ MedusaError.Types.INVALID_DATA,
280
+ "Missing required payment ID"
281
+ );
282
+ const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
283
+ this.paykit.payments.retrieve(id)
284
+ );
211
285
  if (paymentIntentError)
212
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
286
+ throw new MedusaError(
287
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
288
+ paymentIntentError.message
289
+ );
213
290
  return { data: paymentIntentResult };
214
291
  };
215
292
  updatePayment = async (input) => {
@@ -222,13 +299,20 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
222
299
  "Missing required payment ID"
223
300
  );
224
301
  if (!amount || !currency_code)
225
- throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required amount or currency code");
302
+ throw new MedusaError(
303
+ MedusaError.Types.INVALID_DATA,
304
+ "Missing required amount or currency code"
305
+ );
226
306
  const { id: paymentId } = validateRequiredKeys(
227
307
  ["id"],
228
308
  input.data,
229
309
  "Missing required payment ID"
230
310
  );
231
- if (!paymentId) throw new MedusaError(MedusaError.Types.INVALID_DATA, "Missing required payment ID");
311
+ if (!paymentId)
312
+ throw new MedusaError(
313
+ MedusaError.Types.INVALID_DATA,
314
+ "Missing required payment ID"
315
+ );
232
316
  const [paymentIntentResult, paymentIntentError] = await tryCatchAsync(
233
317
  this.paykit.payments.update(paymentId, {
234
318
  amount: Number(amount),
@@ -238,7 +322,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
238
322
  })
239
323
  );
240
324
  if (paymentIntentError)
241
- throw new MedusaError(MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, paymentIntentError.message);
325
+ throw new MedusaError(
326
+ MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR,
327
+ paymentIntentError.message
328
+ );
242
329
  return { data: paymentIntentResult };
243
330
  };
244
331
  getWebhookActionAndData = async (payload) => {
@@ -267,7 +354,10 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
267
354
  const webhook = this.paykit.webhooks.setup({ webhookSecret: this.options.webhookSecret }).on("payment.created", async (event) => {
268
355
  return {
269
356
  action: PaymentActions.PENDING,
270
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
357
+ data: {
358
+ session_id: event.data?.metadata?.session_id,
359
+ amount: event.data?.amount
360
+ }
271
361
  };
272
362
  }).on("payment.updated", async (event) => {
273
363
  const statusActionMap = {
@@ -281,17 +371,26 @@ var PaykitMedusaJSAdapter = class extends AbstractPaymentProvider {
281
371
  };
282
372
  return {
283
373
  action: event.data?.status ? statusActionMap[event.data.status] : PaymentActions.PENDING,
284
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
374
+ data: {
375
+ session_id: event.data?.metadata?.session_id,
376
+ amount: event.data?.amount
377
+ }
285
378
  };
286
379
  }).on("payment.canceled", async (event) => {
287
380
  return {
288
381
  action: PaymentActions.CANCELED,
289
- data: { session_id: event.data?.metadata?.session_id, amount: event.data?.amount }
382
+ data: {
383
+ session_id: event.data?.metadata?.session_id,
384
+ amount: event.data?.amount
385
+ }
290
386
  };
291
387
  });
388
+ const stringifiedHeaders = Object.fromEntries(
389
+ Object.entries(headers).map(([key, value]) => [key, String(value)])
390
+ );
292
391
  const webhookEvents = await webhook.handle({
293
392
  body: rawData,
294
- headers,
393
+ headers: new Headers(stringifiedHeaders),
295
394
  fullUrl
296
395
  });
297
396
  return webhookEvents;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paykit-sdk/medusajs",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "MedusaJS Integrations for Paykit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -16,8 +16,7 @@
16
16
  "dist"
17
17
  ],
18
18
  "scripts": {
19
- "build": "tsup",
20
- "prepublishOnly": "rm -rf dist && npm run build"
19
+ "build": "tsup"
21
20
  },
22
21
  "keywords": [
23
22
  "medusajs",
@@ -29,8 +28,7 @@
29
28
  "license": "ISC",
30
29
  "packageManager": "pnpm@10.13.1",
31
30
  "peerDependencies": {
32
- "@medusajs/framework": ">=2.10.3",
33
- "@paykit-sdk/core": ">=1.1.9"
31
+ "@medusajs/framework": ">=2.10.3"
34
32
  },
35
33
  "devDependencies": {
36
34
  "@medusajs/framework": "^2.10.3",
@@ -39,7 +37,8 @@
39
37
  "typescript": "^5.9.2"
40
38
  },
41
39
  "dependencies": {
42
- "zod": "^3.25.76"
40
+ "zod": "^3.25.76",
41
+ "@paykit-sdk/core": ">=1.1.98"
43
42
  },
44
43
  "publishConfig": {
45
44
  "access": "public"