@paykit-sdk/gopay 1.0.0 → 1.0.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.
@@ -4050,7 +4050,11 @@ var AuthController = class {
4050
4050
  constructor(opts) {
4051
4051
  this.opts = opts;
4052
4052
  const debug = opts.debug ?? true;
4053
- this._client = new HTTPClient({ baseUrl: this.opts.baseUrl, headers: {}, retryOptions: { max: 3, baseDelay: 1e3, debug } });
4053
+ this._client = new HTTPClient({
4054
+ baseUrl: this.opts.baseUrl,
4055
+ headers: {},
4056
+ retryOptions: { max: 3, baseDelay: 1e3, debug }
4057
+ });
4054
4058
  }
4055
4059
  _client;
4056
4060
  _accessToken = null;
@@ -4060,10 +4064,18 @@ var AuthController = class {
4060
4064
  const expiry = parseInt(expiryStr || "0", 10);
4061
4065
  if (expiry > Date.now()) return token;
4062
4066
  }
4063
- const credentials = Buffer.from(`${this.opts.clientId}:${this.opts.clientSecret}`).toString("base64");
4067
+ const credentials = Buffer.from(
4068
+ `${this.opts.clientId}:${this.opts.clientSecret}`
4069
+ ).toString("base64");
4064
4070
  const response = await this._client.post("/oauth2/token", {
4065
- headers: { Authorization: `Basic ${credentials}`, "Content-Type": "application/x-www-form-urlencoded" },
4066
- body: new URLSearchParams({ grant_type: "client_credentials", scope: "payment-all" }).toString()
4071
+ headers: {
4072
+ Authorization: `Basic ${credentials}`,
4073
+ "Content-Type": "application/x-www-form-urlencoded"
4074
+ },
4075
+ body: new URLSearchParams({
4076
+ grant_type: "client_credentials",
4077
+ scope: "payment-all"
4078
+ }).toString()
4067
4079
  });
4068
4080
  if (!response.ok || !response.value.access_token) {
4069
4081
  throw new OperationFailedError("getAccessToken", "gopay", {
@@ -4077,11 +4089,17 @@ var AuthController = class {
4077
4089
  };
4078
4090
  getAuthHeaders = async () => {
4079
4091
  const token = await this.getAccessToken();
4080
- return { Authorization: `Bearer ${token}`, "Content-Type": "application/json", Accept: "application/json" };
4092
+ return {
4093
+ Authorization: `Bearer ${token}`,
4094
+ "Content-Type": "application/json",
4095
+ Accept: "application/json"
4096
+ };
4081
4097
  };
4082
4098
  };
4083
4099
  var paykitPayment$InboundSchema = (data) => {
4084
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4100
+ const itemId = JSON.parse(
4101
+ data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}"
4102
+ ).itemId;
4085
4103
  const metadata = omitInternalMetadata(
4086
4104
  data.additional_params?.reduce(
4087
4105
  (acc, param) => {
@@ -4097,13 +4115,17 @@ var paykitPayment$InboundSchema = (data) => {
4097
4115
  currency: data.currency,
4098
4116
  customer: data.payer ?? { email: data.payer?.email ?? "" },
4099
4117
  status: data.state,
4100
- product_id: itemId,
4118
+ item_id: itemId,
4101
4119
  metadata
4102
4120
  };
4103
4121
  };
4104
4122
  var paykitInvoice$InboundSchema = (data, isSubscription) => {
4105
- const quantity = JSON.parse(data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}").qty;
4106
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4123
+ const quantity = JSON.parse(
4124
+ data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}"
4125
+ ).qty;
4126
+ const itemId = JSON.parse(
4127
+ data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}"
4128
+ ).itemId;
4107
4129
  const status = (() => {
4108
4130
  if (data.state === "PAID") return "paid";
4109
4131
  return "open";
@@ -4133,7 +4155,9 @@ var paykitInvoice$InboundSchema = (data, isSubscription) => {
4133
4155
  };
4134
4156
  };
4135
4157
  var paykitSubscription$InboundSchema = (data) => {
4136
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4158
+ const itemId = JSON.parse(
4159
+ data.additional_params?.find((param) => param.name === PAYKIT_METADATA_KEY)?.value ?? "{}"
4160
+ ).itemId;
4137
4161
  const billingIntervalMap = {
4138
4162
  DAY: "day",
4139
4163
  WEEK: "week",
@@ -4214,12 +4238,8 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4214
4238
  method: "createCheckout"
4215
4239
  });
4216
4240
  }
4217
- const {
4218
- amount,
4219
- currency = "CZK",
4220
- successUrl
4221
- } = validateRequiredKeys(
4222
- ["amount", "currency", "successUrl"],
4241
+ const { amount, currency = "CZK" } = validateRequiredKeys(
4242
+ ["amount", "currency"],
4223
4243
  data.provider_metadata,
4224
4244
  "The following fields must be present in the provider_metadata of createCheckout: {keys}"
4225
4245
  );
@@ -4246,12 +4266,22 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4246
4266
  currency,
4247
4267
  order_number: crypto.randomBytes(8).toString("hex").slice(0, 15),
4248
4268
  order_description: data.metadata?.description || "Checkout",
4249
- items: [{ name: data.item_id, amount: Number(amount), count: data.quantity, type: "ITEM" }],
4269
+ items: [
4270
+ {
4271
+ name: data.item_id,
4272
+ amount: Number(amount),
4273
+ count: data.quantity,
4274
+ type: "ITEM"
4275
+ }
4276
+ ],
4250
4277
  lang: data.provider_metadata?.lang ? data.provider_metadata.lang : "EN",
4251
- callback: { return_url: successUrl, notification_url: this.opts.webhookUrl },
4278
+ callback: { return_url: data.success_url, notification_url: this.opts.webhookUrl },
4252
4279
  additional_params: Object.entries({
4253
4280
  ...data.metadata,
4254
- [PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.item_id, qty: data.quantity })
4281
+ [PAYKIT_METADATA_KEY]: JSON.stringify({
4282
+ itemId: data.item_id,
4283
+ qty: data.quantity
4284
+ })
4255
4285
  }).map(([name, value]) => ({
4256
4286
  name,
4257
4287
  value: String(value)
@@ -4265,9 +4295,12 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4265
4295
  return response.value;
4266
4296
  };
4267
4297
  retrieveCheckout = async (id) => {
4268
- const response = await this._client.get(`/payments/payment/${id}`, {
4269
- headers: await this.authController.getAuthHeaders()
4270
- });
4298
+ const response = await this._client.get(
4299
+ `/payments/payment/${id}`,
4300
+ {
4301
+ headers: await this.authController.getAuthHeaders()
4302
+ }
4303
+ );
4271
4304
  if (!response.ok) {
4272
4305
  throw new OperationFailedError("retrieveCheckout", this.providerName, {
4273
4306
  cause: new Error("Failed to retrieve checkout")
@@ -4318,8 +4351,8 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4318
4351
  method: "createCheckout"
4319
4352
  });
4320
4353
  }
4321
- const { successUrl, quantity } = validateRequiredKeys(
4322
- ["successUrl", "quantity"],
4354
+ const { quantity, success_url } = validateRequiredKeys(
4355
+ ["quantity", "success_url"],
4323
4356
  data.provider_metadata,
4324
4357
  "The following fields must be present in the provider_metadata of createCheckout: {keys}"
4325
4358
  );
@@ -4329,6 +4362,18 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4329
4362
  month: "MONTH",
4330
4363
  year: "MONTH"
4331
4364
  };
4365
+ const currentPeriodEnd = (() => {
4366
+ if (data.billing_interval === "day") {
4367
+ return new Date(Date.now() + 1 * 24 * 60 * 60 * 1e3).toISOString();
4368
+ }
4369
+ if (data.billing_interval === "week") {
4370
+ return new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3).toISOString();
4371
+ }
4372
+ if (data.billing_interval === "month") {
4373
+ return new Date(Date.now() + 30 * 24 * 60 * 60 * 1e3).toISOString();
4374
+ }
4375
+ return new Date(Date.now() + 365 * 24 * 60 * 60 * 1e3).toISOString();
4376
+ })();
4332
4377
  const recurrenceCycle = intervalMap[data.billing_interval] ?? "ON_DEMAND";
4333
4378
  const goPaySubscriptionOptions = {
4334
4379
  payer: {
@@ -4341,13 +4386,15 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4341
4386
  currency: data.currency ?? "CZK",
4342
4387
  order_number: crypto.randomBytes(8).toString("hex").slice(0, 15),
4343
4388
  order_description: data.metadata?.description || "Subscription",
4344
- items: [{ name: data.item_id, amount: Number(data.amount), count: parseInt(quantity) }],
4389
+ items: [
4390
+ { name: data.item_id, amount: Number(data.amount), count: parseInt(quantity) }
4391
+ ],
4345
4392
  recurrence: {
4346
4393
  recurrence_cycle: recurrenceCycle,
4347
4394
  recurrence_period: parseInt(quantity),
4348
- recurrence_date_to: new Date(data.current_period_end).toISOString()
4395
+ recurrence_date_to: currentPeriodEnd
4349
4396
  },
4350
- callback: { return_url: successUrl, notification_url: this.opts.webhookUrl }
4397
+ callback: { return_url: success_url, notification_url: this.opts.webhookUrl }
4351
4398
  };
4352
4399
  const response = await this._client.post("/payments/payment", {
4353
4400
  body: JSON.stringify(goPaySubscriptionOptions),
@@ -4392,9 +4439,12 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4392
4439
  return null;
4393
4440
  };
4394
4441
  retrieveSubscription = async (id) => {
4395
- const response = await this._client.get(`/payments/payment/${id}`, {
4396
- headers: await this.authController.getAuthHeaders()
4397
- });
4442
+ const response = await this._client.get(
4443
+ `/payments/payment/${id}`,
4444
+ {
4445
+ headers: await this.authController.getAuthHeaders()
4446
+ }
4447
+ );
4398
4448
  if (!response.ok) {
4399
4449
  throw new OperationFailedError("retrieveSubscription", this.providerName, {
4400
4450
  cause: new Error("Failed to retrieve subscription")
@@ -4405,24 +4455,23 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4405
4455
  };
4406
4456
  createPayment = async (params) => {
4407
4457
  const { error, data } = createPaymentSchema.safeParse(params);
4408
- if (error) throw ValidationError.fromZodError(error, this.providerName, "createPayment");
4458
+ if (error)
4459
+ throw ValidationError.fromZodError(error, this.providerName, "createPayment");
4409
4460
  if (typeof data.customer == "string" || typeof data.customer === "object" && !data.customer.email) {
4410
4461
  throw new InvalidTypeError("customer", "object (customer) with email", "string", {
4411
4462
  provider: this.providerName,
4412
4463
  method: "createPayment"
4413
4464
  });
4414
4465
  }
4415
- if (!data.product_id) {
4416
- throw new ConfigurationError("product_id is required, this is the name of the product in GoPay", {
4417
- provider: this.providerName,
4418
- missingKeys: ["product_id"]
4419
- });
4466
+ if (!data.item_id) {
4467
+ throw new ConfigurationError(
4468
+ "item_id is required, this is the name of the item in GoPay",
4469
+ {
4470
+ provider: this.providerName,
4471
+ missingKeys: ["item_id"]
4472
+ }
4473
+ );
4420
4474
  }
4421
- const { quantity } = validateRequiredKeys(
4422
- ["quantity"],
4423
- data.provider_metadata,
4424
- "The following fields must be present in the provider_metadata of createPayment: {keys}"
4425
- );
4426
4475
  const goPayRequest = {
4427
4476
  payer: {
4428
4477
  allowed_payment_instruments: ["PAYMENT_CARD", "BANK_ACCOUNT"],
@@ -4433,13 +4482,13 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4433
4482
  amount: data.amount,
4434
4483
  currency: data.currency ?? "CZK",
4435
4484
  order_number: crypto.randomBytes(8).toString("hex").slice(0, 15),
4436
- order_description: data.metadata?.description || "Payment",
4437
- items: [{ name: data.product_id, amount: data.amount, count: parseInt(quantity) }],
4485
+ order_description: `Payment for ${data.item_id} by ${data.customer.email}`,
4486
+ items: [{ name: data.item_id, amount: data.amount, count: 1 }],
4438
4487
  preauthorization: false,
4439
4488
  // automatically captures the payment
4440
4489
  additional_params: Object.entries({
4441
4490
  ...data.metadata,
4442
- [PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.product_id, qty: parseInt(quantity) })
4491
+ [PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.item_id, qty: 1 })
4443
4492
  }).map(([name, value]) => ({
4444
4493
  name,
4445
4494
  value: String(value)
@@ -4458,9 +4507,12 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4458
4507
  return response.value;
4459
4508
  };
4460
4509
  retrievePayment = async (id) => {
4461
- const response = await this._client.get(`/payments/payment/${id}`, {
4462
- headers: await this.authController.getAuthHeaders()
4463
- });
4510
+ const response = await this._client.get(
4511
+ `/payments/payment/${id}`,
4512
+ {
4513
+ headers: await this.authController.getAuthHeaders()
4514
+ }
4515
+ );
4464
4516
  if (!response.ok) {
4465
4517
  throw new OperationFailedError("retrievePayment", this.providerName, {
4466
4518
  cause: new Error("Failed to retrieve payment")
@@ -4476,9 +4528,12 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4476
4528
  });
4477
4529
  };
4478
4530
  capturePayment = async (id, params) => {
4479
- const payment = await this._client.get(`/payments/payment/${id}`, {
4480
- headers: await this.authController.getAuthHeaders()
4481
- });
4531
+ const payment = await this._client.get(
4532
+ `/payments/payment/${id}`,
4533
+ {
4534
+ headers: await this.authController.getAuthHeaders()
4535
+ }
4536
+ );
4482
4537
  if (!payment.ok) {
4483
4538
  throw new OperationFailedError("capturePayment", this.providerName, {
4484
4539
  cause: new Error("Failed to retrieve payment")
@@ -4506,9 +4561,12 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4506
4561
  return paykitPayment$InboundSchema(payment.value);
4507
4562
  };
4508
4563
  cancelPayment = async (id) => {
4509
- const response = await this._client.post(`/payments/payment/${id}/void-authorization`, {
4510
- headers: await this.authController.getAuthHeaders()
4511
- });
4564
+ const response = await this._client.post(
4565
+ `/payments/payment/${id}/void-authorization`,
4566
+ {
4567
+ headers: await this.authController.getAuthHeaders()
4568
+ }
4569
+ );
4512
4570
  console.dir({ response }, { depth: 100 });
4513
4571
  const payment = await this.retrievePayment(id);
4514
4572
  if (!payment) {
@@ -4533,7 +4591,8 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4533
4591
  };
4534
4592
  async createRefund(params) {
4535
4593
  const { error, data } = createRefundSchema.safeParse(params);
4536
- if (error) throw ValidationError.fromZodError(error, this.providerName, "createRefund");
4594
+ if (error)
4595
+ throw ValidationError.fromZodError(error, this.providerName, "createRefund");
4537
4596
  const payment = await this.retrievePayment(data.payment_id);
4538
4597
  if (!payment) {
4539
4598
  throw new OperationFailedError("createRefund", this.providerName, {
@@ -4579,7 +4638,9 @@ var GoPayProvider = class extends AbstractPayKitProvider {
4579
4638
  })
4580
4639
  );
4581
4640
  if (error) {
4582
- throw new WebhookError("Failed to retrieve payment", { provider: this.providerName });
4641
+ throw new WebhookError("Failed to retrieve payment", {
4642
+ provider: this.providerName
4643
+ });
4583
4644
  }
4584
4645
  if (!payment.value) {
4585
4646
  throw new WebhookError("Payment not found", { provider: this.providerName });
package/dist/index.js CHANGED
@@ -4072,7 +4072,11 @@ var AuthController = class {
4072
4072
  constructor(opts) {
4073
4073
  this.opts = opts;
4074
4074
  const debug = opts.debug ?? true;
4075
- this._client = new core.HTTPClient({ baseUrl: this.opts.baseUrl, headers: {}, retryOptions: { max: 3, baseDelay: 1e3, debug } });
4075
+ this._client = new core.HTTPClient({
4076
+ baseUrl: this.opts.baseUrl,
4077
+ headers: {},
4078
+ retryOptions: { max: 3, baseDelay: 1e3, debug }
4079
+ });
4076
4080
  }
4077
4081
  _client;
4078
4082
  _accessToken = null;
@@ -4082,10 +4086,18 @@ var AuthController = class {
4082
4086
  const expiry = parseInt(expiryStr || "0", 10);
4083
4087
  if (expiry > Date.now()) return token;
4084
4088
  }
4085
- const credentials = Buffer.from(`${this.opts.clientId}:${this.opts.clientSecret}`).toString("base64");
4089
+ const credentials = Buffer.from(
4090
+ `${this.opts.clientId}:${this.opts.clientSecret}`
4091
+ ).toString("base64");
4086
4092
  const response = await this._client.post("/oauth2/token", {
4087
- headers: { Authorization: `Basic ${credentials}`, "Content-Type": "application/x-www-form-urlencoded" },
4088
- body: new URLSearchParams({ grant_type: "client_credentials", scope: "payment-all" }).toString()
4093
+ headers: {
4094
+ Authorization: `Basic ${credentials}`,
4095
+ "Content-Type": "application/x-www-form-urlencoded"
4096
+ },
4097
+ body: new URLSearchParams({
4098
+ grant_type: "client_credentials",
4099
+ scope: "payment-all"
4100
+ }).toString()
4089
4101
  });
4090
4102
  if (!response.ok || !response.value.access_token) {
4091
4103
  throw new core.OperationFailedError("getAccessToken", "gopay", {
@@ -4099,11 +4111,17 @@ var AuthController = class {
4099
4111
  };
4100
4112
  getAuthHeaders = async () => {
4101
4113
  const token = await this.getAccessToken();
4102
- return { Authorization: `Bearer ${token}`, "Content-Type": "application/json", Accept: "application/json" };
4114
+ return {
4115
+ Authorization: `Bearer ${token}`,
4116
+ "Content-Type": "application/json",
4117
+ Accept: "application/json"
4118
+ };
4103
4119
  };
4104
4120
  };
4105
4121
  var paykitPayment$InboundSchema = (data) => {
4106
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4122
+ const itemId = JSON.parse(
4123
+ data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}"
4124
+ ).itemId;
4107
4125
  const metadata = core.omitInternalMetadata(
4108
4126
  data.additional_params?.reduce(
4109
4127
  (acc, param) => {
@@ -4119,13 +4137,17 @@ var paykitPayment$InboundSchema = (data) => {
4119
4137
  currency: data.currency,
4120
4138
  customer: data.payer ?? { email: data.payer?.email ?? "" },
4121
4139
  status: data.state,
4122
- product_id: itemId,
4140
+ item_id: itemId,
4123
4141
  metadata
4124
4142
  };
4125
4143
  };
4126
4144
  var paykitInvoice$InboundSchema = (data, isSubscription) => {
4127
- const quantity = JSON.parse(data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}").qty;
4128
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4145
+ const quantity = JSON.parse(
4146
+ data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}"
4147
+ ).qty;
4148
+ const itemId = JSON.parse(
4149
+ data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}"
4150
+ ).itemId;
4129
4151
  const status = (() => {
4130
4152
  if (data.state === "PAID") return "paid";
4131
4153
  return "open";
@@ -4155,7 +4177,9 @@ var paykitInvoice$InboundSchema = (data, isSubscription) => {
4155
4177
  };
4156
4178
  };
4157
4179
  var paykitSubscription$InboundSchema = (data) => {
4158
- const itemId = JSON.parse(data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}").itemId;
4180
+ const itemId = JSON.parse(
4181
+ data.additional_params?.find((param) => param.name === core.PAYKIT_METADATA_KEY)?.value ?? "{}"
4182
+ ).itemId;
4159
4183
  const billingIntervalMap = {
4160
4184
  DAY: "day",
4161
4185
  WEEK: "week",
@@ -4236,12 +4260,8 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4236
4260
  method: "createCheckout"
4237
4261
  });
4238
4262
  }
4239
- const {
4240
- amount,
4241
- currency = "CZK",
4242
- successUrl
4243
- } = core.validateRequiredKeys(
4244
- ["amount", "currency", "successUrl"],
4263
+ const { amount, currency = "CZK" } = core.validateRequiredKeys(
4264
+ ["amount", "currency"],
4245
4265
  data.provider_metadata,
4246
4266
  "The following fields must be present in the provider_metadata of createCheckout: {keys}"
4247
4267
  );
@@ -4268,12 +4288,22 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4268
4288
  currency,
4269
4289
  order_number: crypto__namespace.randomBytes(8).toString("hex").slice(0, 15),
4270
4290
  order_description: data.metadata?.description || "Checkout",
4271
- items: [{ name: data.item_id, amount: Number(amount), count: data.quantity, type: "ITEM" }],
4291
+ items: [
4292
+ {
4293
+ name: data.item_id,
4294
+ amount: Number(amount),
4295
+ count: data.quantity,
4296
+ type: "ITEM"
4297
+ }
4298
+ ],
4272
4299
  lang: data.provider_metadata?.lang ? data.provider_metadata.lang : "EN",
4273
- callback: { return_url: successUrl, notification_url: this.opts.webhookUrl },
4300
+ callback: { return_url: data.success_url, notification_url: this.opts.webhookUrl },
4274
4301
  additional_params: Object.entries({
4275
4302
  ...data.metadata,
4276
- [core.PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.item_id, qty: data.quantity })
4303
+ [core.PAYKIT_METADATA_KEY]: JSON.stringify({
4304
+ itemId: data.item_id,
4305
+ qty: data.quantity
4306
+ })
4277
4307
  }).map(([name, value]) => ({
4278
4308
  name,
4279
4309
  value: String(value)
@@ -4287,9 +4317,12 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4287
4317
  return response.value;
4288
4318
  };
4289
4319
  retrieveCheckout = async (id) => {
4290
- const response = await this._client.get(`/payments/payment/${id}`, {
4291
- headers: await this.authController.getAuthHeaders()
4292
- });
4320
+ const response = await this._client.get(
4321
+ `/payments/payment/${id}`,
4322
+ {
4323
+ headers: await this.authController.getAuthHeaders()
4324
+ }
4325
+ );
4293
4326
  if (!response.ok) {
4294
4327
  throw new core.OperationFailedError("retrieveCheckout", this.providerName, {
4295
4328
  cause: new Error("Failed to retrieve checkout")
@@ -4340,8 +4373,8 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4340
4373
  method: "createCheckout"
4341
4374
  });
4342
4375
  }
4343
- const { successUrl, quantity } = core.validateRequiredKeys(
4344
- ["successUrl", "quantity"],
4376
+ const { quantity, success_url } = core.validateRequiredKeys(
4377
+ ["quantity", "success_url"],
4345
4378
  data.provider_metadata,
4346
4379
  "The following fields must be present in the provider_metadata of createCheckout: {keys}"
4347
4380
  );
@@ -4351,6 +4384,18 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4351
4384
  month: "MONTH",
4352
4385
  year: "MONTH"
4353
4386
  };
4387
+ const currentPeriodEnd = (() => {
4388
+ if (data.billing_interval === "day") {
4389
+ return new Date(Date.now() + 1 * 24 * 60 * 60 * 1e3).toISOString();
4390
+ }
4391
+ if (data.billing_interval === "week") {
4392
+ return new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3).toISOString();
4393
+ }
4394
+ if (data.billing_interval === "month") {
4395
+ return new Date(Date.now() + 30 * 24 * 60 * 60 * 1e3).toISOString();
4396
+ }
4397
+ return new Date(Date.now() + 365 * 24 * 60 * 60 * 1e3).toISOString();
4398
+ })();
4354
4399
  const recurrenceCycle = intervalMap[data.billing_interval] ?? "ON_DEMAND";
4355
4400
  const goPaySubscriptionOptions = {
4356
4401
  payer: {
@@ -4363,13 +4408,15 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4363
4408
  currency: data.currency ?? "CZK",
4364
4409
  order_number: crypto__namespace.randomBytes(8).toString("hex").slice(0, 15),
4365
4410
  order_description: data.metadata?.description || "Subscription",
4366
- items: [{ name: data.item_id, amount: Number(data.amount), count: parseInt(quantity) }],
4411
+ items: [
4412
+ { name: data.item_id, amount: Number(data.amount), count: parseInt(quantity) }
4413
+ ],
4367
4414
  recurrence: {
4368
4415
  recurrence_cycle: recurrenceCycle,
4369
4416
  recurrence_period: parseInt(quantity),
4370
- recurrence_date_to: new Date(data.current_period_end).toISOString()
4417
+ recurrence_date_to: currentPeriodEnd
4371
4418
  },
4372
- callback: { return_url: successUrl, notification_url: this.opts.webhookUrl }
4419
+ callback: { return_url: success_url, notification_url: this.opts.webhookUrl }
4373
4420
  };
4374
4421
  const response = await this._client.post("/payments/payment", {
4375
4422
  body: JSON.stringify(goPaySubscriptionOptions),
@@ -4414,9 +4461,12 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4414
4461
  return null;
4415
4462
  };
4416
4463
  retrieveSubscription = async (id) => {
4417
- const response = await this._client.get(`/payments/payment/${id}`, {
4418
- headers: await this.authController.getAuthHeaders()
4419
- });
4464
+ const response = await this._client.get(
4465
+ `/payments/payment/${id}`,
4466
+ {
4467
+ headers: await this.authController.getAuthHeaders()
4468
+ }
4469
+ );
4420
4470
  if (!response.ok) {
4421
4471
  throw new core.OperationFailedError("retrieveSubscription", this.providerName, {
4422
4472
  cause: new Error("Failed to retrieve subscription")
@@ -4427,24 +4477,23 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4427
4477
  };
4428
4478
  createPayment = async (params) => {
4429
4479
  const { error, data } = core.createPaymentSchema.safeParse(params);
4430
- if (error) throw core.ValidationError.fromZodError(error, this.providerName, "createPayment");
4480
+ if (error)
4481
+ throw core.ValidationError.fromZodError(error, this.providerName, "createPayment");
4431
4482
  if (typeof data.customer == "string" || typeof data.customer === "object" && !data.customer.email) {
4432
4483
  throw new core.InvalidTypeError("customer", "object (customer) with email", "string", {
4433
4484
  provider: this.providerName,
4434
4485
  method: "createPayment"
4435
4486
  });
4436
4487
  }
4437
- if (!data.product_id) {
4438
- throw new core.ConfigurationError("product_id is required, this is the name of the product in GoPay", {
4439
- provider: this.providerName,
4440
- missingKeys: ["product_id"]
4441
- });
4488
+ if (!data.item_id) {
4489
+ throw new core.ConfigurationError(
4490
+ "item_id is required, this is the name of the item in GoPay",
4491
+ {
4492
+ provider: this.providerName,
4493
+ missingKeys: ["item_id"]
4494
+ }
4495
+ );
4442
4496
  }
4443
- const { quantity } = core.validateRequiredKeys(
4444
- ["quantity"],
4445
- data.provider_metadata,
4446
- "The following fields must be present in the provider_metadata of createPayment: {keys}"
4447
- );
4448
4497
  const goPayRequest = {
4449
4498
  payer: {
4450
4499
  allowed_payment_instruments: ["PAYMENT_CARD", "BANK_ACCOUNT"],
@@ -4455,13 +4504,13 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4455
4504
  amount: data.amount,
4456
4505
  currency: data.currency ?? "CZK",
4457
4506
  order_number: crypto__namespace.randomBytes(8).toString("hex").slice(0, 15),
4458
- order_description: data.metadata?.description || "Payment",
4459
- items: [{ name: data.product_id, amount: data.amount, count: parseInt(quantity) }],
4507
+ order_description: `Payment for ${data.item_id} by ${data.customer.email}`,
4508
+ items: [{ name: data.item_id, amount: data.amount, count: 1 }],
4460
4509
  preauthorization: false,
4461
4510
  // automatically captures the payment
4462
4511
  additional_params: Object.entries({
4463
4512
  ...data.metadata,
4464
- [core.PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.product_id, qty: parseInt(quantity) })
4513
+ [core.PAYKIT_METADATA_KEY]: JSON.stringify({ itemId: data.item_id, qty: 1 })
4465
4514
  }).map(([name, value]) => ({
4466
4515
  name,
4467
4516
  value: String(value)
@@ -4480,9 +4529,12 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4480
4529
  return response.value;
4481
4530
  };
4482
4531
  retrievePayment = async (id) => {
4483
- const response = await this._client.get(`/payments/payment/${id}`, {
4484
- headers: await this.authController.getAuthHeaders()
4485
- });
4532
+ const response = await this._client.get(
4533
+ `/payments/payment/${id}`,
4534
+ {
4535
+ headers: await this.authController.getAuthHeaders()
4536
+ }
4537
+ );
4486
4538
  if (!response.ok) {
4487
4539
  throw new core.OperationFailedError("retrievePayment", this.providerName, {
4488
4540
  cause: new Error("Failed to retrieve payment")
@@ -4498,9 +4550,12 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4498
4550
  });
4499
4551
  };
4500
4552
  capturePayment = async (id, params) => {
4501
- const payment = await this._client.get(`/payments/payment/${id}`, {
4502
- headers: await this.authController.getAuthHeaders()
4503
- });
4553
+ const payment = await this._client.get(
4554
+ `/payments/payment/${id}`,
4555
+ {
4556
+ headers: await this.authController.getAuthHeaders()
4557
+ }
4558
+ );
4504
4559
  if (!payment.ok) {
4505
4560
  throw new core.OperationFailedError("capturePayment", this.providerName, {
4506
4561
  cause: new Error("Failed to retrieve payment")
@@ -4528,9 +4583,12 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4528
4583
  return paykitPayment$InboundSchema(payment.value);
4529
4584
  };
4530
4585
  cancelPayment = async (id) => {
4531
- const response = await this._client.post(`/payments/payment/${id}/void-authorization`, {
4532
- headers: await this.authController.getAuthHeaders()
4533
- });
4586
+ const response = await this._client.post(
4587
+ `/payments/payment/${id}/void-authorization`,
4588
+ {
4589
+ headers: await this.authController.getAuthHeaders()
4590
+ }
4591
+ );
4534
4592
  console.dir({ response }, { depth: 100 });
4535
4593
  const payment = await this.retrievePayment(id);
4536
4594
  if (!payment) {
@@ -4555,7 +4613,8 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4555
4613
  };
4556
4614
  async createRefund(params) {
4557
4615
  const { error, data } = core.createRefundSchema.safeParse(params);
4558
- if (error) throw core.ValidationError.fromZodError(error, this.providerName, "createRefund");
4616
+ if (error)
4617
+ throw core.ValidationError.fromZodError(error, this.providerName, "createRefund");
4559
4618
  const payment = await this.retrievePayment(data.payment_id);
4560
4619
  if (!payment) {
4561
4620
  throw new core.OperationFailedError("createRefund", this.providerName, {
@@ -4601,7 +4660,9 @@ var GoPayProvider = class extends core.AbstractPayKitProvider {
4601
4660
  })
4602
4661
  );
4603
4662
  if (error) {
4604
- throw new core.WebhookError("Failed to retrieve payment", { provider: this.providerName });
4663
+ throw new core.WebhookError("Failed to retrieve payment", {
4664
+ provider: this.providerName
4665
+ });
4605
4666
  }
4606
4667
  if (!payment.value) {
4607
4668
  throw new core.WebhookError("Payment not found", { provider: this.providerName });
@@ -4760,7 +4821,13 @@ var createGopay = (config) => {
4760
4821
  };
4761
4822
  var gopay = () => {
4762
4823
  const envVars = core.validateRequiredKeys(
4763
- ["GOPAY_CLIENT_ID", "GOPAY_CLIENT_SECRET", "GOPAY_GO_ID", "GOPAY_SANDBOX", "GOPAY_WEBHOOK_URL"],
4824
+ [
4825
+ "GOPAY_CLIENT_ID",
4826
+ "GOPAY_CLIENT_SECRET",
4827
+ "GOPAY_GO_ID",
4828
+ "GOPAY_SANDBOX",
4829
+ "GOPAY_WEBHOOK_URL"
4830
+ ],
4764
4831
  process.env,
4765
4832
  "Missing required environment variables: {keys}"
4766
4833
  );