@enomshop/paystack 1.0.19 → 1.0.20
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.
|
@@ -102,19 +102,23 @@ const PaymentHistoryWidget = ({ data: order }) => {
|
|
|
102
102
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "mb-4", children: "Payment History" }),
|
|
103
103
|
payments.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-subtle", children: "No payments recorded yet." }) : /* @__PURE__ */ jsxRuntime.jsxs(ui.Table, { children: [
|
|
104
104
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Header, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
105
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "
|
|
105
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Ref No." }),
|
|
106
106
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Provider" }),
|
|
107
107
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Amount" }),
|
|
108
108
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Status" }),
|
|
109
109
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Date" })
|
|
110
110
|
] }) }),
|
|
111
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Body, { children: payments.map((payment) =>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Body, { children: payments.map((payment) => {
|
|
112
|
+
var _a2, _b;
|
|
113
|
+
const reference = ((_a2 = payment.data) == null ? void 0 : _a2.paystackTxRef) || ((_b = payment.data) == null ? void 0 : _b.reference) || payment.id.slice(-8);
|
|
114
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { className: "font-mono text-xs", children: reference }),
|
|
116
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { size: "small", color: payment.provider_id === "paystack" ? "blue" : "grey", children: payment.provider_id }) }),
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: new Intl.NumberFormat("en-US", { style: "currency", currency: payment.currency_code }).format(payment.amount) }),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { size: "small", color: payment.captured_at ? "green" : payment.canceled_at ? "red" : "orange", children: payment.captured_at ? "Captured" : payment.canceled_at ? "Canceled" : "Pending" }) }),
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: new Date(payment.created_at).toLocaleDateString() })
|
|
120
|
+
] }, payment.id);
|
|
121
|
+
}) })
|
|
118
122
|
] })
|
|
119
123
|
] });
|
|
120
124
|
};
|
|
@@ -266,7 +270,7 @@ function PaystackDashboard() {
|
|
|
266
270
|
] }),
|
|
267
271
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Table, { children: [
|
|
268
272
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Header, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
269
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "
|
|
273
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Ref No." }),
|
|
270
274
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Date" }),
|
|
271
275
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Customer" }),
|
|
272
276
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.HeaderCell, { children: "Amount" }),
|
|
@@ -274,10 +278,7 @@ function PaystackDashboard() {
|
|
|
274
278
|
] }) }),
|
|
275
279
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Body, { children: [
|
|
276
280
|
payments.map((payment) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
277
|
-
/* @__PURE__ */ jsxRuntime.
|
|
278
|
-
"#",
|
|
279
|
-
payment.order_number
|
|
280
|
-
] }),
|
|
281
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { className: "font-mono text-xs", children: payment.reference }),
|
|
281
282
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: new Date(payment.date).toLocaleString() }),
|
|
282
283
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
283
284
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", weight: "plus", children: payment.customer_name }),
|
|
@@ -101,19 +101,23 @@ const PaymentHistoryWidget = ({ data: order }) => {
|
|
|
101
101
|
/* @__PURE__ */ jsx(Heading, { level: "h2", className: "mb-4", children: "Payment History" }),
|
|
102
102
|
payments.length === 0 ? /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "No payments recorded yet." }) : /* @__PURE__ */ jsxs(Table, { children: [
|
|
103
103
|
/* @__PURE__ */ jsx(Table.Header, { children: /* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
104
|
-
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "
|
|
104
|
+
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Ref No." }),
|
|
105
105
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Provider" }),
|
|
106
106
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Amount" }),
|
|
107
107
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Status" }),
|
|
108
108
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Date" })
|
|
109
109
|
] }) }),
|
|
110
|
-
/* @__PURE__ */ jsx(Table.Body, { children: payments.map((payment) =>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
/* @__PURE__ */ jsx(Table.Body, { children: payments.map((payment) => {
|
|
111
|
+
var _a2, _b;
|
|
112
|
+
const reference = ((_a2 = payment.data) == null ? void 0 : _a2.paystackTxRef) || ((_b = payment.data) == null ? void 0 : _b.reference) || payment.id.slice(-8);
|
|
113
|
+
return /* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
114
|
+
/* @__PURE__ */ jsx(Table.Cell, { className: "font-mono text-xs", children: reference }),
|
|
115
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Badge, { size: "small", color: payment.provider_id === "paystack" ? "blue" : "grey", children: payment.provider_id }) }),
|
|
116
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: new Intl.NumberFormat("en-US", { style: "currency", currency: payment.currency_code }).format(payment.amount) }),
|
|
117
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Badge, { size: "small", color: payment.captured_at ? "green" : payment.canceled_at ? "red" : "orange", children: payment.captured_at ? "Captured" : payment.canceled_at ? "Canceled" : "Pending" }) }),
|
|
118
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: new Date(payment.created_at).toLocaleDateString() })
|
|
119
|
+
] }, payment.id);
|
|
120
|
+
}) })
|
|
117
121
|
] })
|
|
118
122
|
] });
|
|
119
123
|
};
|
|
@@ -265,7 +269,7 @@ function PaystackDashboard() {
|
|
|
265
269
|
] }),
|
|
266
270
|
/* @__PURE__ */ jsxs(Table, { children: [
|
|
267
271
|
/* @__PURE__ */ jsx(Table.Header, { children: /* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
268
|
-
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "
|
|
272
|
+
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Ref No." }),
|
|
269
273
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Date" }),
|
|
270
274
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Customer" }),
|
|
271
275
|
/* @__PURE__ */ jsx(Table.HeaderCell, { children: "Amount" }),
|
|
@@ -273,10 +277,7 @@ function PaystackDashboard() {
|
|
|
273
277
|
] }) }),
|
|
274
278
|
/* @__PURE__ */ jsxs(Table.Body, { children: [
|
|
275
279
|
payments.map((payment) => /* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
276
|
-
/* @__PURE__ */
|
|
277
|
-
"#",
|
|
278
|
-
payment.order_number
|
|
279
|
-
] }),
|
|
280
|
+
/* @__PURE__ */ jsx(Table.Cell, { className: "font-mono text-xs", children: payment.reference }),
|
|
280
281
|
/* @__PURE__ */ jsx(Table.Cell, { children: new Date(payment.date).toLocaleString() }),
|
|
281
282
|
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
282
283
|
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", children: payment.customer_name }),
|
|
@@ -123,6 +123,7 @@ async function GET(req, res) {
|
|
|
123
123
|
paymentsList.push({
|
|
124
124
|
id: tx.id,
|
|
125
125
|
order_number: orderNumber,
|
|
126
|
+
reference: tx.reference,
|
|
126
127
|
date: tx.created_at,
|
|
127
128
|
customer_name: customerName,
|
|
128
129
|
customer_email: tx.customer?.email || "N/A",
|
|
@@ -146,4 +147,4 @@ async function GET(req, res) {
|
|
|
146
147
|
res.status(500).json({ message: error.message });
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BheXN0YWNrL2Rhc2hib2FyZC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGtCQWlKQztBQW5KRCx3RUFBZ0Q7QUFFekMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQztRQUNILE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQTZCLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQWlCLElBQUksRUFBRSxDQUFDO1FBRWxELE1BQU0sQ0FBQyxJQUFJLENBQUMsaURBQWlELElBQUksY0FBYyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTFGLElBQUksWUFBWSxHQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQ2pELElBQUksZ0JBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLFNBQVMsR0FBVSxFQUFFLENBQUM7UUFFMUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLGNBQWM7WUFDZCxJQUFJLENBQUM7Z0JBQ0gsOENBQThDO2dCQUM5QyxNQUFNLENBQUMs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
|
|
@@ -4,18 +4,22 @@ exports.POST = POST;
|
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
async function POST(req, res) {
|
|
6
6
|
const logger = req.scope.resolve("logger");
|
|
7
|
+
const query = req.scope.resolve("query");
|
|
7
8
|
const { id: order_id } = req.params;
|
|
8
9
|
const { amount, email, metadata, callback_url } = req.body;
|
|
9
|
-
logger.info(`[Paystack API] Received request to create partial payment for order ${order_id}. Amount: ${amount}
|
|
10
|
-
const orderModule = req.scope.resolve(utils_1.Modules.ORDER);
|
|
11
|
-
const paymentModule = req.scope.resolve(utils_1.Modules.PAYMENT);
|
|
10
|
+
logger.info(`[Paystack API] Received request to create partial payment for order ${order_id}. Amount: ${amount}`);
|
|
12
11
|
try {
|
|
13
|
-
// 1.
|
|
14
|
-
logger.info(`[Paystack API] Fetching order details for ${order_id}`);
|
|
15
|
-
const query = req.scope.resolve("query");
|
|
12
|
+
// 1. Fetch order details strictly through the Query engine
|
|
16
13
|
const { data: orders } = await query.graph({
|
|
17
14
|
entity: "order",
|
|
18
|
-
fields: [
|
|
15
|
+
fields: [
|
|
16
|
+
"id",
|
|
17
|
+
"currency_code",
|
|
18
|
+
"email",
|
|
19
|
+
"total",
|
|
20
|
+
"payment_collections.*",
|
|
21
|
+
"payment_collections.payments.*"
|
|
22
|
+
],
|
|
19
23
|
filters: { id: order_id }
|
|
20
24
|
});
|
|
21
25
|
const order = orders[0];
|
|
@@ -24,35 +28,39 @@ async function POST(req, res) {
|
|
|
24
28
|
return res.status(404).json({ message: "Order not found" });
|
|
25
29
|
}
|
|
26
30
|
const paymentCollection = order.payment_collections?.[0];
|
|
27
|
-
// 2. Fallback to the order's email (Perfect for Guest Customers)
|
|
28
31
|
const customerEmail = email || order.email;
|
|
29
32
|
if (!customerEmail) {
|
|
30
|
-
logger.warn(`[Paystack API] No email
|
|
33
|
+
logger.warn(`[Paystack API] No email found on order ${order_id}`);
|
|
31
34
|
return res.status(400).json({ message: "An email address is required to process Paystack payments." });
|
|
32
35
|
}
|
|
33
36
|
if (!paymentCollection) {
|
|
34
37
|
logger.warn(`[Paystack API] No payment collection found for order ${order_id}`);
|
|
35
38
|
return res.status(400).json({ message: "No payment collection found for this order" });
|
|
36
39
|
}
|
|
37
|
-
//
|
|
40
|
+
// 2. Strict type calculation for the remaining balance
|
|
38
41
|
const payments = paymentCollection.payments || [];
|
|
39
|
-
const capturedAmount = payments.reduce((acc, p) =>
|
|
42
|
+
const capturedAmount = payments.reduce((acc, p) => {
|
|
43
|
+
return acc + (p.captured_at ? Number(p.amount) : 0);
|
|
44
|
+
}, 0);
|
|
40
45
|
const remainingBalance = Number(order.total) - capturedAmount;
|
|
41
|
-
|
|
42
|
-
if (
|
|
43
|
-
logger.warn(`[Paystack API]
|
|
46
|
+
const requestedAmount = Number(amount);
|
|
47
|
+
if (requestedAmount > remainingBalance) {
|
|
48
|
+
logger.warn(`[Paystack API] Amount ${requestedAmount} exceeds balance ${remainingBalance} for ${order_id}`);
|
|
44
49
|
return res.status(400).json({
|
|
45
|
-
message: `Cannot pay more than the remaining balance. Remaining: ${remainingBalance}, Requested: ${
|
|
50
|
+
message: `Cannot pay more than the remaining balance. Remaining: ${remainingBalance}, Requested: ${requestedAmount}`
|
|
46
51
|
});
|
|
47
52
|
}
|
|
48
|
-
//
|
|
49
|
-
|
|
53
|
+
// 3. Create the payment session
|
|
54
|
+
// Note: Because Medusa's standard workflows (like createPaymentSessionsWorkflow) are highly coupled
|
|
55
|
+
// to the Cart context, appending a session to an existing Order's payment collection is cleanly
|
|
56
|
+
// and properly handled by directly invoking the Payment Module.
|
|
57
|
+
const paymentModule = req.scope.resolve(utils_1.Modules.PAYMENT);
|
|
50
58
|
const paymentSession = await paymentModule.createPaymentSession(paymentCollection.id, {
|
|
51
|
-
provider_id: "
|
|
52
|
-
amount:
|
|
59
|
+
provider_id: "paystack", // Corrected to match your processor's static identifier
|
|
60
|
+
amount: requestedAmount,
|
|
53
61
|
currency_code: order.currency_code,
|
|
54
62
|
data: {
|
|
55
|
-
email: customerEmail,
|
|
63
|
+
email: customerEmail,
|
|
56
64
|
order_id: order.id,
|
|
57
65
|
is_partial: true,
|
|
58
66
|
callback_url,
|
|
@@ -70,4 +78,4 @@ async function POST(req, res) {
|
|
|
70
78
|
res.status(500).json({ message: error.message });
|
|
71
79
|
}
|
|
72
80
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9baWRdL3BheXN0YWNrLXBheW1lbnQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxvQkErRkM7QUFqR0QscURBQW9EO0FBRTdDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDcEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUtyRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsUUFBUSxhQUFhLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFbEgsSUFBSSxDQUFDO1FBQ0gsMkRBQTJEO1FBQzNELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxPQUFPO1lBQ2YsTUFBTSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osZUFBZTtnQkFDZixPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsdUJBQXVCO2dCQUN2QixnQ0FBZ0M7YUFDakM7WUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxFQUFF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
|