@paykit-sdk/paystack 1.2.1 → 1.3.0
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/dist/index.js +14 -18
- package/dist/index.mjs +16 -20
- package/dist/paystack-provider.js +14 -18
- package/dist/paystack-provider.mjs +16 -20
- package/dist/utils/mapper.js +4 -14
- package/dist/utils/mapper.mjs +4 -14
- package/package.json +10 -8
package/dist/index.js
CHANGED
|
@@ -4121,20 +4121,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
4121
4121
|
type: core.billingModeSchema.optional()
|
|
4122
4122
|
})
|
|
4123
4123
|
);
|
|
4124
|
-
if (paykitMeta
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
item_id: core.Schema.string().optional(),
|
|
4129
|
-
quantity: core.Schema.number().optional(),
|
|
4130
|
-
type: core.billingModeSchema.optional()
|
|
4131
|
-
})
|
|
4132
|
-
);
|
|
4133
|
-
if (parsed) {
|
|
4134
|
-
itemId = parsed.item_id ?? "";
|
|
4135
|
-
quantity = parsed.quantity ?? 1;
|
|
4136
|
-
type = parsed.type ?? null;
|
|
4137
|
-
}
|
|
4124
|
+
if (paykitMeta) {
|
|
4125
|
+
itemId = paykitMeta.item_id ?? "";
|
|
4126
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
4127
|
+
type = paykitMeta.type ?? null;
|
|
4138
4128
|
}
|
|
4139
4129
|
let customer = null;
|
|
4140
4130
|
if (transaction.customer?.email) {
|
|
@@ -4293,7 +4283,11 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4293
4283
|
{ provider: this.providerName, method: "createCheckout" }
|
|
4294
4284
|
);
|
|
4295
4285
|
}
|
|
4296
|
-
const { amount, currency = "NGN" } =
|
|
4286
|
+
const { amount, currency = "NGN" } = core.validateRequiredKeys(
|
|
4287
|
+
["amount", "currency"],
|
|
4288
|
+
data.provider_metadata ?? {},
|
|
4289
|
+
"Missing required provider metadata: {keys}"
|
|
4290
|
+
);
|
|
4297
4291
|
const metadata = {
|
|
4298
4292
|
...core.stringifyMetadataValues(data.metadata ?? {}),
|
|
4299
4293
|
[core.PAYKIT_METADATA_KEY]: JSON.stringify({
|
|
@@ -4304,8 +4298,8 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4304
4298
|
};
|
|
4305
4299
|
const body = {
|
|
4306
4300
|
email: data.customer.email,
|
|
4307
|
-
amount: amount
|
|
4308
|
-
currency,
|
|
4301
|
+
amount: parseInt(amount, 10),
|
|
4302
|
+
currency: currency.toUpperCase(),
|
|
4309
4303
|
reference: crypto.randomUUID(),
|
|
4310
4304
|
callback_url: data.success_url,
|
|
4311
4305
|
metadata: core.stringifyMetadataValues(metadata),
|
|
@@ -4617,7 +4611,9 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4617
4611
|
});
|
|
4618
4612
|
}
|
|
4619
4613
|
const expectedSignature = crypto$1.createHmac("sha512", webhookSecret).update(body).digest("hex");
|
|
4620
|
-
|
|
4614
|
+
const expectedBuf = Buffer.from(expectedSignature, "hex");
|
|
4615
|
+
const receivedBuf = Buffer.from(signature, "hex");
|
|
4616
|
+
if (expectedBuf.length !== receivedBuf.length || !crypto$1.timingSafeEqual(expectedBuf, receivedBuf)) {
|
|
4621
4617
|
throw new core.WebhookError("Invalid Paystack webhook signature", {
|
|
4622
4618
|
provider: this.providerName
|
|
4623
4619
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { schema, AbstractPayKitProvider, HTTPClient, OperationFailedError, createCheckoutSchema, ValidationError, isEmailCustomer, InvalidTypeError, PAYKIT_METADATA_KEY, stringifyMetadataValues, ProviderNotSupportedError, createCustomerSchema, parseCustomerName, isIdCustomer, ResourceNotFoundError, createPaymentSchema, createRefundSchema, WebhookError, paykitEvent$InboundSchema,
|
|
2
|
-
import { createHmac } from 'crypto';
|
|
1
|
+
import { schema, AbstractPayKitProvider, HTTPClient, OperationFailedError, createCheckoutSchema, ValidationError, isEmailCustomer, InvalidTypeError, validateRequiredKeys, PAYKIT_METADATA_KEY, stringifyMetadataValues, ProviderNotSupportedError, createCustomerSchema, parseCustomerName, isIdCustomer, ResourceNotFoundError, createPaymentSchema, createRefundSchema, WebhookError, paykitEvent$InboundSchema, parseJSON, Schema, omitInternalMetadata, billingModeSchema } from '@paykit-sdk/core';
|
|
2
|
+
import { createHmac, timingSafeEqual } from 'crypto';
|
|
3
3
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __export = (target, all) => {
|
|
@@ -4119,20 +4119,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
4119
4119
|
type: billingModeSchema.optional()
|
|
4120
4120
|
})
|
|
4121
4121
|
);
|
|
4122
|
-
if (paykitMeta
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
item_id: Schema.string().optional(),
|
|
4127
|
-
quantity: Schema.number().optional(),
|
|
4128
|
-
type: billingModeSchema.optional()
|
|
4129
|
-
})
|
|
4130
|
-
);
|
|
4131
|
-
if (parsed) {
|
|
4132
|
-
itemId = parsed.item_id ?? "";
|
|
4133
|
-
quantity = parsed.quantity ?? 1;
|
|
4134
|
-
type = parsed.type ?? null;
|
|
4135
|
-
}
|
|
4122
|
+
if (paykitMeta) {
|
|
4123
|
+
itemId = paykitMeta.item_id ?? "";
|
|
4124
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
4125
|
+
type = paykitMeta.type ?? null;
|
|
4136
4126
|
}
|
|
4137
4127
|
let customer = null;
|
|
4138
4128
|
if (transaction.customer?.email) {
|
|
@@ -4291,7 +4281,11 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4291
4281
|
{ provider: this.providerName, method: "createCheckout" }
|
|
4292
4282
|
);
|
|
4293
4283
|
}
|
|
4294
|
-
const { amount, currency = "NGN" } =
|
|
4284
|
+
const { amount, currency = "NGN" } = validateRequiredKeys(
|
|
4285
|
+
["amount", "currency"],
|
|
4286
|
+
data.provider_metadata ?? {},
|
|
4287
|
+
"Missing required provider metadata: {keys}"
|
|
4288
|
+
);
|
|
4295
4289
|
const metadata = {
|
|
4296
4290
|
...stringifyMetadataValues(data.metadata ?? {}),
|
|
4297
4291
|
[PAYKIT_METADATA_KEY]: JSON.stringify({
|
|
@@ -4302,8 +4296,8 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4302
4296
|
};
|
|
4303
4297
|
const body = {
|
|
4304
4298
|
email: data.customer.email,
|
|
4305
|
-
amount: amount
|
|
4306
|
-
currency,
|
|
4299
|
+
amount: parseInt(amount, 10),
|
|
4300
|
+
currency: currency.toUpperCase(),
|
|
4307
4301
|
reference: crypto.randomUUID(),
|
|
4308
4302
|
callback_url: data.success_url,
|
|
4309
4303
|
metadata: stringifyMetadataValues(metadata),
|
|
@@ -4615,7 +4609,9 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4615
4609
|
});
|
|
4616
4610
|
}
|
|
4617
4611
|
const expectedSignature = createHmac("sha512", webhookSecret).update(body).digest("hex");
|
|
4618
|
-
|
|
4612
|
+
const expectedBuf = Buffer.from(expectedSignature, "hex");
|
|
4613
|
+
const receivedBuf = Buffer.from(signature, "hex");
|
|
4614
|
+
if (expectedBuf.length !== receivedBuf.length || !timingSafeEqual(expectedBuf, receivedBuf)) {
|
|
4619
4615
|
throw new WebhookError("Invalid Paystack webhook signature", {
|
|
4620
4616
|
provider: this.providerName
|
|
4621
4617
|
});
|
|
@@ -4121,20 +4121,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
4121
4121
|
type: core.billingModeSchema.optional()
|
|
4122
4122
|
})
|
|
4123
4123
|
);
|
|
4124
|
-
if (paykitMeta
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
item_id: core.Schema.string().optional(),
|
|
4129
|
-
quantity: core.Schema.number().optional(),
|
|
4130
|
-
type: core.billingModeSchema.optional()
|
|
4131
|
-
})
|
|
4132
|
-
);
|
|
4133
|
-
if (parsed) {
|
|
4134
|
-
itemId = parsed.item_id ?? "";
|
|
4135
|
-
quantity = parsed.quantity ?? 1;
|
|
4136
|
-
type = parsed.type ?? null;
|
|
4137
|
-
}
|
|
4124
|
+
if (paykitMeta) {
|
|
4125
|
+
itemId = paykitMeta.item_id ?? "";
|
|
4126
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
4127
|
+
type = paykitMeta.type ?? null;
|
|
4138
4128
|
}
|
|
4139
4129
|
let customer = null;
|
|
4140
4130
|
if (transaction.customer?.email) {
|
|
@@ -4293,7 +4283,11 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4293
4283
|
{ provider: this.providerName, method: "createCheckout" }
|
|
4294
4284
|
);
|
|
4295
4285
|
}
|
|
4296
|
-
const { amount, currency = "NGN" } =
|
|
4286
|
+
const { amount, currency = "NGN" } = core.validateRequiredKeys(
|
|
4287
|
+
["amount", "currency"],
|
|
4288
|
+
data.provider_metadata ?? {},
|
|
4289
|
+
"Missing required provider metadata: {keys}"
|
|
4290
|
+
);
|
|
4297
4291
|
const metadata = {
|
|
4298
4292
|
...core.stringifyMetadataValues(data.metadata ?? {}),
|
|
4299
4293
|
[core.PAYKIT_METADATA_KEY]: JSON.stringify({
|
|
@@ -4304,8 +4298,8 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4304
4298
|
};
|
|
4305
4299
|
const body = {
|
|
4306
4300
|
email: data.customer.email,
|
|
4307
|
-
amount: amount
|
|
4308
|
-
currency,
|
|
4301
|
+
amount: parseInt(amount, 10),
|
|
4302
|
+
currency: currency.toUpperCase(),
|
|
4309
4303
|
reference: crypto.randomUUID(),
|
|
4310
4304
|
callback_url: data.success_url,
|
|
4311
4305
|
metadata: core.stringifyMetadataValues(metadata),
|
|
@@ -4617,7 +4611,9 @@ var PaystackProvider = class extends core.AbstractPayKitProvider {
|
|
|
4617
4611
|
});
|
|
4618
4612
|
}
|
|
4619
4613
|
const expectedSignature = crypto$1.createHmac("sha512", webhookSecret).update(body).digest("hex");
|
|
4620
|
-
|
|
4614
|
+
const expectedBuf = Buffer.from(expectedSignature, "hex");
|
|
4615
|
+
const receivedBuf = Buffer.from(signature, "hex");
|
|
4616
|
+
if (expectedBuf.length !== receivedBuf.length || !crypto$1.timingSafeEqual(expectedBuf, receivedBuf)) {
|
|
4621
4617
|
throw new core.WebhookError("Invalid Paystack webhook signature", {
|
|
4622
4618
|
provider: this.providerName
|
|
4623
4619
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { schema, AbstractPayKitProvider, HTTPClient, OperationFailedError, createCheckoutSchema, ValidationError, isEmailCustomer, InvalidTypeError, PAYKIT_METADATA_KEY, stringifyMetadataValues, ProviderNotSupportedError, createCustomerSchema, parseCustomerName, isIdCustomer, ResourceNotFoundError, createPaymentSchema, createRefundSchema, WebhookError, paykitEvent$InboundSchema, parseJSON, Schema, omitInternalMetadata, billingModeSchema } from '@paykit-sdk/core';
|
|
2
|
-
import { createHmac } from 'crypto';
|
|
1
|
+
import { schema, AbstractPayKitProvider, HTTPClient, OperationFailedError, createCheckoutSchema, ValidationError, isEmailCustomer, InvalidTypeError, validateRequiredKeys, PAYKIT_METADATA_KEY, stringifyMetadataValues, ProviderNotSupportedError, createCustomerSchema, parseCustomerName, isIdCustomer, ResourceNotFoundError, createPaymentSchema, createRefundSchema, WebhookError, paykitEvent$InboundSchema, parseJSON, Schema, omitInternalMetadata, billingModeSchema } from '@paykit-sdk/core';
|
|
2
|
+
import { createHmac, timingSafeEqual } from 'crypto';
|
|
3
3
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __export = (target, all) => {
|
|
@@ -4119,20 +4119,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
4119
4119
|
type: billingModeSchema.optional()
|
|
4120
4120
|
})
|
|
4121
4121
|
);
|
|
4122
|
-
if (paykitMeta
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
item_id: Schema.string().optional(),
|
|
4127
|
-
quantity: Schema.number().optional(),
|
|
4128
|
-
type: billingModeSchema.optional()
|
|
4129
|
-
})
|
|
4130
|
-
);
|
|
4131
|
-
if (parsed) {
|
|
4132
|
-
itemId = parsed.item_id ?? "";
|
|
4133
|
-
quantity = parsed.quantity ?? 1;
|
|
4134
|
-
type = parsed.type ?? null;
|
|
4135
|
-
}
|
|
4122
|
+
if (paykitMeta) {
|
|
4123
|
+
itemId = paykitMeta.item_id ?? "";
|
|
4124
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
4125
|
+
type = paykitMeta.type ?? null;
|
|
4136
4126
|
}
|
|
4137
4127
|
let customer = null;
|
|
4138
4128
|
if (transaction.customer?.email) {
|
|
@@ -4291,7 +4281,11 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4291
4281
|
{ provider: this.providerName, method: "createCheckout" }
|
|
4292
4282
|
);
|
|
4293
4283
|
}
|
|
4294
|
-
const { amount, currency = "NGN" } =
|
|
4284
|
+
const { amount, currency = "NGN" } = validateRequiredKeys(
|
|
4285
|
+
["amount", "currency"],
|
|
4286
|
+
data.provider_metadata ?? {},
|
|
4287
|
+
"Missing required provider metadata: {keys}"
|
|
4288
|
+
);
|
|
4295
4289
|
const metadata = {
|
|
4296
4290
|
...stringifyMetadataValues(data.metadata ?? {}),
|
|
4297
4291
|
[PAYKIT_METADATA_KEY]: JSON.stringify({
|
|
@@ -4302,8 +4296,8 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4302
4296
|
};
|
|
4303
4297
|
const body = {
|
|
4304
4298
|
email: data.customer.email,
|
|
4305
|
-
amount: amount
|
|
4306
|
-
currency,
|
|
4299
|
+
amount: parseInt(amount, 10),
|
|
4300
|
+
currency: currency.toUpperCase(),
|
|
4307
4301
|
reference: crypto.randomUUID(),
|
|
4308
4302
|
callback_url: data.success_url,
|
|
4309
4303
|
metadata: stringifyMetadataValues(metadata),
|
|
@@ -4615,7 +4609,9 @@ var PaystackProvider = class extends AbstractPayKitProvider {
|
|
|
4615
4609
|
});
|
|
4616
4610
|
}
|
|
4617
4611
|
const expectedSignature = createHmac("sha512", webhookSecret).update(body).digest("hex");
|
|
4618
|
-
|
|
4612
|
+
const expectedBuf = Buffer.from(expectedSignature, "hex");
|
|
4613
|
+
const receivedBuf = Buffer.from(signature, "hex");
|
|
4614
|
+
if (expectedBuf.length !== receivedBuf.length || !timingSafeEqual(expectedBuf, receivedBuf)) {
|
|
4619
4615
|
throw new WebhookError("Invalid Paystack webhook signature", {
|
|
4620
4616
|
provider: this.providerName
|
|
4621
4617
|
});
|
package/dist/utils/mapper.js
CHANGED
|
@@ -76,20 +76,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
76
76
|
type: core.billingModeSchema.optional()
|
|
77
77
|
})
|
|
78
78
|
);
|
|
79
|
-
if (paykitMeta
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
item_id: core.Schema.string().optional(),
|
|
84
|
-
quantity: core.Schema.number().optional(),
|
|
85
|
-
type: core.billingModeSchema.optional()
|
|
86
|
-
})
|
|
87
|
-
);
|
|
88
|
-
if (parsed) {
|
|
89
|
-
itemId = parsed.item_id ?? "";
|
|
90
|
-
quantity = parsed.quantity ?? 1;
|
|
91
|
-
type = parsed.type ?? null;
|
|
92
|
-
}
|
|
79
|
+
if (paykitMeta) {
|
|
80
|
+
itemId = paykitMeta.item_id ?? "";
|
|
81
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
82
|
+
type = paykitMeta.type ?? null;
|
|
93
83
|
}
|
|
94
84
|
let customer = null;
|
|
95
85
|
if (transaction.customer?.email) {
|
package/dist/utils/mapper.mjs
CHANGED
|
@@ -74,20 +74,10 @@ var Checkout$inboundSchema = (init, transaction) => {
|
|
|
74
74
|
type: billingModeSchema.optional()
|
|
75
75
|
})
|
|
76
76
|
);
|
|
77
|
-
if (paykitMeta
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
item_id: Schema.string().optional(),
|
|
82
|
-
quantity: Schema.number().optional(),
|
|
83
|
-
type: billingModeSchema.optional()
|
|
84
|
-
})
|
|
85
|
-
);
|
|
86
|
-
if (parsed) {
|
|
87
|
-
itemId = parsed.item_id ?? "";
|
|
88
|
-
quantity = parsed.quantity ?? 1;
|
|
89
|
-
type = parsed.type ?? null;
|
|
90
|
-
}
|
|
77
|
+
if (paykitMeta) {
|
|
78
|
+
itemId = paykitMeta.item_id ?? "";
|
|
79
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
80
|
+
type = paykitMeta.type ?? null;
|
|
91
81
|
}
|
|
92
82
|
let customer = null;
|
|
93
83
|
if (transaction.customer?.email) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paykit-sdk/paystack",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Paystack provider for PayKit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
"paykit": {
|
|
12
12
|
"type": "provider"
|
|
13
13
|
},
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "tsup"
|
|
16
|
-
},
|
|
17
14
|
"keywords": [
|
|
18
15
|
"paystack",
|
|
19
16
|
"paykit",
|
|
@@ -23,13 +20,13 @@
|
|
|
23
20
|
"author": "Emmanuel Odii",
|
|
24
21
|
"license": "ISC",
|
|
25
22
|
"peerDependencies": {
|
|
26
|
-
"@paykit-sdk/core": "
|
|
23
|
+
"@paykit-sdk/core": "^1.2.3"
|
|
27
24
|
},
|
|
28
25
|
"devDependencies": {
|
|
29
|
-
"@paykit-sdk/core": "workspace:*",
|
|
30
26
|
"tsup": "^8.5.0",
|
|
31
27
|
"typescript": "^5.9.2",
|
|
32
|
-
"zod": "^3.24.2"
|
|
28
|
+
"zod": "^3.24.2",
|
|
29
|
+
"@paykit-sdk/core": "1.3.0"
|
|
33
30
|
},
|
|
34
31
|
"publishConfig": {
|
|
35
32
|
"access": "public"
|
|
@@ -40,5 +37,10 @@
|
|
|
40
37
|
},
|
|
41
38
|
"bugs": {
|
|
42
39
|
"url": "https://github.com/usepaykit/paykit-sdk/issues"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsup",
|
|
43
|
+
"test": "vitest run --config ../../vitest.config.ts packages/paystack/src",
|
|
44
|
+
"typecheck": "tsc --noEmit"
|
|
43
45
|
}
|
|
44
|
-
}
|
|
46
|
+
}
|