order-management 0.0.2 → 0.0.4
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/.medusa/server/src/admin/index.js +4 -639
- package/.medusa/server/src/admin/index.mjs +4 -639
- package/.medusa/server/src/api/store/orders/reorder/[order_id]/route.js +66 -0
- package/.medusa/server/src/workflows/index.js +4 -9
- package/.medusa/server/src/workflows/{types.js → reorder/types.js} +1 -1
- package/.medusa/server/src/workflows/reorder-workflow.js +27 -0
- package/.medusa/server/src/workflows/steps/create-cart-from-order-step.js +26 -0
- package/.medusa/server/src/workflows/steps/index.js +10 -0
- package/.medusa/server/src/workflows/steps/retrieve-order-step.js +79 -0
- package/.medusa/server/src/workflows/steps/transform-order-to-cart-step.js +53 -0
- package/README.md +59 -73
- package/package.json +1 -1
- package/.medusa/server/src/api/admin/returns/[id]/retry-refund/route.js +0 -84
- package/.medusa/server/src/api/admin/returns/failed-refunds/route.js +0 -137
- package/.medusa/server/src/api/store/returns/[id]/payment-details/route.js +0 -326
- package/.medusa/server/src/config/plugin-options.js +0 -61
- package/.medusa/server/src/providers/refund-payment/base-refund-provider.js +0 -80
- package/.medusa/server/src/providers/refund-payment/index.js +0 -38
- package/.medusa/server/src/providers/refund-payment/razorpay-provider.js +0 -96
- package/.medusa/server/src/providers/refund-payment/stripe-provider.js +0 -82
- package/.medusa/server/src/subscribers/return-received.js +0 -103
- package/.medusa/server/src/types/plugin-options.js +0 -3
- package/.medusa/server/src/types/refund-payment.js +0 -3
- package/.medusa/server/src/workflows/process-cod-refund-workflow.js +0 -99
- package/.medusa/server/src/workflows/steps/calculate-refund-amount-step.js +0 -51
- package/.medusa/server/src/workflows/steps/create-refund-record-step.js +0 -243
- package/.medusa/server/src/workflows/steps/process-refund-payment-step.js +0 -86
- package/.medusa/server/src/workflows/steps/retrieve-order-and-payment-step.js +0 -44
- package/.medusa/server/src/workflows/steps/retrieve-return-payment-details-step.js +0 -56
- package/.medusa/server/src/workflows/steps/select-payment-method-step.js +0 -61
- package/.medusa/server/src/workflows/steps/update-payment-status-step.js +0 -45
- package/.medusa/server/src/workflows/steps/validate-payment-details-step.js +0 -90
- package/.medusa/server/src/workflows/steps/verify-cod-order-step.js +0 -39
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRefundRecordStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
-
exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-record", async (input, { container }) => {
|
|
8
|
-
const { payment_collection_id, amount, currency_code, order_id, return_id, transaction_id, payment_error, } = input;
|
|
9
|
-
if (!payment_collection_id) {
|
|
10
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment collection ID is required to create refund record");
|
|
11
|
-
}
|
|
12
|
-
if (!amount || amount <= 0) {
|
|
13
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid refund amount: ${amount}. Amount must be greater than 0`);
|
|
14
|
-
}
|
|
15
|
-
if (!currency_code) {
|
|
16
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Currency code is required to create refund record");
|
|
17
|
-
}
|
|
18
|
-
const paymentService = container.resolve(utils_2.Modules.PAYMENT);
|
|
19
|
-
const orderService = container.resolve(utils_2.Modules.ORDER);
|
|
20
|
-
// Retrieve return record to get timing information for Medusa refund detection
|
|
21
|
-
const order = await orderService.retrieveOrder(order_id, {
|
|
22
|
-
relations: ["returns"],
|
|
23
|
-
});
|
|
24
|
-
if (!order) {
|
|
25
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with ID ${order_id} not found`);
|
|
26
|
-
}
|
|
27
|
-
// Find the return record
|
|
28
|
-
const orderWithReturns = order;
|
|
29
|
-
const returns = orderWithReturns.returns || [];
|
|
30
|
-
const returnRecord = returns.find((ret) => ret.id === return_id);
|
|
31
|
-
if (!returnRecord) {
|
|
32
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Return with ID ${return_id} not found for order ${order_id}`);
|
|
33
|
-
}
|
|
34
|
-
// Get return updated_at for timing comparison (when status changed to "received")
|
|
35
|
-
const returnUpdatedAt = returnRecord.updated_at;
|
|
36
|
-
// Check if refund already exists for this return (idempotency)
|
|
37
|
-
const paymentCollection = await paymentService.retrievePaymentCollection(payment_collection_id, {
|
|
38
|
-
relations: ["refunds"],
|
|
39
|
-
});
|
|
40
|
-
if (!paymentCollection) {
|
|
41
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Payment collection ${payment_collection_id} not found`);
|
|
42
|
-
}
|
|
43
|
-
// Check for existing refunds linked to this return (Medusa's or ours)
|
|
44
|
-
// Type assertion needed because refunds relation is not in PaymentCollectionDTO type definition
|
|
45
|
-
// even though we requested it via relations
|
|
46
|
-
const paymentCollectionWithRefunds = paymentCollection;
|
|
47
|
-
const refunds = paymentCollectionWithRefunds.refunds || [];
|
|
48
|
-
// Enhanced detection: Check for our refund OR Medusa's refund
|
|
49
|
-
const existingRefund = refunds.find((refund) => {
|
|
50
|
-
const refundData = refund;
|
|
51
|
-
// Check if it's our refund (has return_id in metadata)
|
|
52
|
-
const metadata = refundData.metadata;
|
|
53
|
-
if (metadata?.return_id === return_id) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
// Check if it's Medusa's refund (matches amount, currency, and timing)
|
|
57
|
-
const refundAmount = refundData.amount;
|
|
58
|
-
const refundCurrency = refundData.currency_code;
|
|
59
|
-
const refundCreatedAt = refundData.created_at;
|
|
60
|
-
// If amount and currency match, check timing
|
|
61
|
-
if (refundAmount === amount &&
|
|
62
|
-
refundCurrency === currency_code &&
|
|
63
|
-
refundCreatedAt &&
|
|
64
|
-
returnUpdatedAt) {
|
|
65
|
-
const timeDiff = Math.abs(new Date(refundCreatedAt).getTime() -
|
|
66
|
-
new Date(returnUpdatedAt).getTime());
|
|
67
|
-
// Created within 5 minutes of return status change to "received"
|
|
68
|
-
// This indicates Medusa automatically created the refund
|
|
69
|
-
if (timeDiff < 5 * 60 * 1000) {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return false;
|
|
74
|
-
});
|
|
75
|
-
if (existingRefund) {
|
|
76
|
-
// Refund already exists (either ours or Medusa's), use it
|
|
77
|
-
const refundData = existingRefund;
|
|
78
|
-
const refundId = refundData.id;
|
|
79
|
-
const refundAmount = refundData.amount ?? amount;
|
|
80
|
-
const refundCurrency = refundData.currency_code ?? currency_code;
|
|
81
|
-
// If we have a gateway transaction_id or payment error, update the refund metadata
|
|
82
|
-
if (transaction_id || payment_error) {
|
|
83
|
-
const currentMetadata = refundData.metadata || {};
|
|
84
|
-
// Get current retry count for incrementing on retry
|
|
85
|
-
const currentRetryCount = currentMetadata.retry_count || 0;
|
|
86
|
-
// Update refund metadata with gateway transaction info or failure details
|
|
87
|
-
const updatedMetadata = {
|
|
88
|
-
...currentMetadata,
|
|
89
|
-
...(transaction_id && {
|
|
90
|
-
transaction_id,
|
|
91
|
-
processed_via_gateway: true,
|
|
92
|
-
gateway_transaction_added_at: new Date().toISOString(),
|
|
93
|
-
}),
|
|
94
|
-
...(payment_error && {
|
|
95
|
-
payment_error: payment_error.error_message,
|
|
96
|
-
payment_error_code: payment_error.error_code,
|
|
97
|
-
failed_at: new Date().toISOString(),
|
|
98
|
-
retry_count: currentRetryCount + 1, // Increment retry count
|
|
99
|
-
last_retry_at: new Date().toISOString(),
|
|
100
|
-
}),
|
|
101
|
-
refund_status: payment_error
|
|
102
|
-
? "failed"
|
|
103
|
-
: transaction_id
|
|
104
|
-
? "succeeded"
|
|
105
|
-
: currentMetadata.refund_status || "pending",
|
|
106
|
-
return_id, // Ensure return_id is in metadata
|
|
107
|
-
order_id,
|
|
108
|
-
payment_type: "cod",
|
|
109
|
-
};
|
|
110
|
-
// Try to update refund metadata via payment collection
|
|
111
|
-
// Note: We update payment collection metadata as fallback since
|
|
112
|
-
// direct refund update may not be available
|
|
113
|
-
const paymentCollectionMetadata = paymentCollection.metadata || {};
|
|
114
|
-
// Store gateway transaction info or failure details in payment collection metadata
|
|
115
|
-
await paymentService.updatePaymentCollection?.(payment_collection_id, {
|
|
116
|
-
metadata: {
|
|
117
|
-
...paymentCollectionMetadata,
|
|
118
|
-
refund_transactions: {
|
|
119
|
-
...(paymentCollectionMetadata.refund_transactions || {}),
|
|
120
|
-
[refundId]: {
|
|
121
|
-
...(transaction_id && {
|
|
122
|
-
transaction_id,
|
|
123
|
-
processed_via_gateway: true,
|
|
124
|
-
}),
|
|
125
|
-
...(payment_error && {
|
|
126
|
-
payment_error: payment_error.error_message,
|
|
127
|
-
payment_error_code: payment_error.error_code,
|
|
128
|
-
retry_count: currentRetryCount + 1,
|
|
129
|
-
}),
|
|
130
|
-
refund_status: payment_error
|
|
131
|
-
? "failed"
|
|
132
|
-
: transaction_id
|
|
133
|
-
? "succeeded"
|
|
134
|
-
: "pending",
|
|
135
|
-
updated_at: new Date().toISOString(),
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
return new workflows_sdk_1.StepResponse({
|
|
142
|
-
refund_id: refundId,
|
|
143
|
-
amount: refundAmount,
|
|
144
|
-
currency_code: refundCurrency,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
// Get payments from collection to link refund
|
|
148
|
-
const payments = paymentCollection.payments || [];
|
|
149
|
-
const payment = payments.find((p) => p.captured_at !== null);
|
|
150
|
-
if (!payment) {
|
|
151
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `No captured payment found in payment collection ${payment_collection_id}`);
|
|
152
|
-
}
|
|
153
|
-
const paymentId = payment.id;
|
|
154
|
-
// Create refund record
|
|
155
|
-
// Note: Medusa v2 payment module may use different method names
|
|
156
|
-
// Try createRefunds (plural) or store refund info in payment collection metadata
|
|
157
|
-
let refundId;
|
|
158
|
-
let refundAmount = amount;
|
|
159
|
-
let refundCurrency = currency_code;
|
|
160
|
-
try {
|
|
161
|
-
// Try createRefunds (plural) method if available
|
|
162
|
-
const refunds = await paymentService.createRefunds?.([
|
|
163
|
-
{
|
|
164
|
-
payment_id: paymentId,
|
|
165
|
-
amount,
|
|
166
|
-
currency_code,
|
|
167
|
-
created_by: "system",
|
|
168
|
-
metadata: {
|
|
169
|
-
return_id,
|
|
170
|
-
order_id,
|
|
171
|
-
payment_type: "cod",
|
|
172
|
-
refund_type: "return",
|
|
173
|
-
transaction_id,
|
|
174
|
-
processed_via_gateway: transaction_id ? true : false,
|
|
175
|
-
refund_status: payment_error
|
|
176
|
-
? "failed"
|
|
177
|
-
: transaction_id
|
|
178
|
-
? "succeeded"
|
|
179
|
-
: "pending",
|
|
180
|
-
// Add failure details if payment failed
|
|
181
|
-
...(payment_error && {
|
|
182
|
-
payment_error: payment_error.error_message,
|
|
183
|
-
payment_error_code: payment_error.error_code,
|
|
184
|
-
failed_at: new Date().toISOString(),
|
|
185
|
-
retry_count: 0, // Initialize retry count
|
|
186
|
-
}),
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
]);
|
|
190
|
-
if (refunds && Array.isArray(refunds) && refunds.length > 0) {
|
|
191
|
-
const refund = refunds[0];
|
|
192
|
-
refundId = refund.id;
|
|
193
|
-
refundAmount = refund.amount ?? amount;
|
|
194
|
-
refundCurrency = refund.currency_code ?? currency_code;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
// Fallback: Generate a refund ID and store in metadata
|
|
198
|
-
refundId = `refund_${return_id}_${Date.now()}`;
|
|
199
|
-
// Store refund info in payment collection metadata as fallback
|
|
200
|
-
const currentMetadata = paymentCollection.metadata || {};
|
|
201
|
-
await paymentService.updatePaymentCollection?.(payment_collection_id, {
|
|
202
|
-
metadata: {
|
|
203
|
-
...currentMetadata,
|
|
204
|
-
refunds: [
|
|
205
|
-
...(currentMetadata.refunds || []),
|
|
206
|
-
{
|
|
207
|
-
id: refundId,
|
|
208
|
-
payment_id: paymentId,
|
|
209
|
-
amount,
|
|
210
|
-
currency_code,
|
|
211
|
-
return_id,
|
|
212
|
-
order_id,
|
|
213
|
-
transaction_id,
|
|
214
|
-
refund_status: payment_error
|
|
215
|
-
? "failed"
|
|
216
|
-
: transaction_id
|
|
217
|
-
? "succeeded"
|
|
218
|
-
: "pending",
|
|
219
|
-
...(payment_error && {
|
|
220
|
-
payment_error: payment_error.error_message,
|
|
221
|
-
payment_error_code: payment_error.error_code,
|
|
222
|
-
failed_at: new Date().toISOString(),
|
|
223
|
-
retry_count: 0,
|
|
224
|
-
}),
|
|
225
|
-
created_at: new Date().toISOString(),
|
|
226
|
-
},
|
|
227
|
-
],
|
|
228
|
-
},
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
// If refund creation fails, generate ID and log
|
|
234
|
-
refundId = `refund_${return_id}_${Date.now()}`;
|
|
235
|
-
console.warn(`Could not create refund via payment service, using fallback ID: ${refundId}`, error);
|
|
236
|
-
}
|
|
237
|
-
return new workflows_sdk_1.StepResponse({
|
|
238
|
-
refund_id: refundId,
|
|
239
|
-
amount: refundAmount,
|
|
240
|
-
currency_code: refundCurrency,
|
|
241
|
-
});
|
|
242
|
-
});
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlZnVuZC1yZWNvcmQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvY3JlYXRlLXJlZnVuZC1yZWNvcmQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFtRDtBQWlCdEMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQzlDLHNCQUFzQixFQUN0QixLQUFLLEVBQ0gsS0FBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsRUFDd0MsRUFBRTtJQUN2RCxNQUFNLEVBQ0oscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixhQUFhLEVBQ2IsUUFBUSxFQUNSLFNBQVMsRUFDVCxjQUFjLEVBQ2QsYUFBYSxHQUNkLEdBQUcsS0FBSyxDQUFBO0lBRVQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkRBQTJELENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMEJBQTBCLE1BQU0saUNBQWlDLENBQ2xFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1EQUFtRCxDQUNwRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3RDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMs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
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.processRefundPaymentStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
-
const refund_payment_1 = require("../../providers/refund-payment");
|
|
8
|
-
const plugin_options_1 = require("../../config/plugin-options");
|
|
9
|
-
exports.processRefundPaymentStep = (0, workflows_sdk_1.createStep)("process-refund-payment", async (input, { container }) => {
|
|
10
|
-
const { amount, currency_code, payment_details, payment_method, return_id, order_id, } = input;
|
|
11
|
-
if (!amount || amount <= 0) {
|
|
12
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid refund amount: ${amount}`);
|
|
13
|
-
}
|
|
14
|
-
// Get plugin options from config module
|
|
15
|
-
const configModule = container.resolve(utils_2.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
16
|
-
const pluginOptions = (0, plugin_options_1.resolveOrderManagementOptions)(configModule);
|
|
17
|
-
// Build provider config from plugin options or environment variables (backward compatibility)
|
|
18
|
-
const providerConfig = {
|
|
19
|
-
razorpay: pluginOptions.refundProviders?.credentials?.razorpay ||
|
|
20
|
-
(process.env.RAZORPAY_KEY_ID && process.env.RAZORPAY_KEY_SECRET
|
|
21
|
-
? {
|
|
22
|
-
keyId: process.env.RAZORPAY_KEY_ID,
|
|
23
|
-
keySecret: process.env.RAZORPAY_KEY_SECRET,
|
|
24
|
-
}
|
|
25
|
-
: undefined),
|
|
26
|
-
stripe: pluginOptions.refundProviders?.credentials?.stripe ||
|
|
27
|
-
(process.env.STRIPE_API_KEY
|
|
28
|
-
? {
|
|
29
|
-
apiKey: process.env.STRIPE_API_KEY,
|
|
30
|
-
}
|
|
31
|
-
: undefined),
|
|
32
|
-
};
|
|
33
|
-
// Filter providers based on enabled list (if specified)
|
|
34
|
-
const enabledProviders = pluginOptions.refundProviders?.enabled;
|
|
35
|
-
if (enabledProviders && enabledProviders.length > 0) {
|
|
36
|
-
// Only enable providers that are in the enabled list
|
|
37
|
-
if (!enabledProviders.includes("razorpay")) {
|
|
38
|
-
providerConfig.razorpay = undefined;
|
|
39
|
-
}
|
|
40
|
-
if (!enabledProviders.includes("stripe")) {
|
|
41
|
-
providerConfig.stripe = undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Create providers
|
|
45
|
-
const providers = (0, refund_payment_1.createRefundProviders)(providerConfig);
|
|
46
|
-
if (providers.length === 0) {
|
|
47
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "No payment providers configured. Please configure at least one payment provider (Razorpay or Stripe) via plugin options or environment variables.");
|
|
48
|
-
}
|
|
49
|
-
// Filter by enabled providers if specified
|
|
50
|
-
const availableProviders = enabledProviders && enabledProviders.length > 0
|
|
51
|
-
? providers.filter((p) => enabledProviders.includes(p.getName()))
|
|
52
|
-
: providers;
|
|
53
|
-
// Select appropriate provider that supports currency + payment method
|
|
54
|
-
let selectedProvider = (0, refund_payment_1.selectProvider)(availableProviders, currency_code, payment_method);
|
|
55
|
-
// Fallback logic if no provider found: prefer provider based on currency
|
|
56
|
-
if (!selectedProvider) {
|
|
57
|
-
if (currency_code.toUpperCase() === "INR") {
|
|
58
|
-
// For INR, prefer Razorpay if available
|
|
59
|
-
selectedProvider =
|
|
60
|
-
availableProviders.find((p) => p.getName() === "razorpay") || null;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
// For other currencies, prefer Stripe if available
|
|
64
|
-
selectedProvider =
|
|
65
|
-
availableProviders.find((p) => p.getName() === "stripe") || null;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (!selectedProvider) {
|
|
69
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `No payment provider found that supports ${payment_method} for currency ${currency_code}. Available providers: ${availableProviders.map((p) => p.getName()).join(", ")}`);
|
|
70
|
-
}
|
|
71
|
-
// Process refund
|
|
72
|
-
const refundResult = await selectedProvider.processRefund({
|
|
73
|
-
amount,
|
|
74
|
-
currency_code,
|
|
75
|
-
payment_details,
|
|
76
|
-
return_id,
|
|
77
|
-
order_id,
|
|
78
|
-
});
|
|
79
|
-
// Don't throw on failure - return error in result for workflow to handle
|
|
80
|
-
// The workflow will create a refund record with "failed" status
|
|
81
|
-
return new workflows_sdk_1.StepResponse({
|
|
82
|
-
refund_result: refundResult,
|
|
83
|
-
transaction_id: refundResult.transaction_id,
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1yZWZ1bmQtcGF5bWVudC1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9wcm9jZXNzLXJlZnVuZC1wYXltZW50LXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBcUU7QUFFckUsbUVBSXVDO0FBQ3ZDLGdFQUdvQztBQWdCdkIsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixlQUFlLEVBQ2YsY0FBYyxFQUNkLFNBQVMsRUFDVCxRQUFRLEdBQ1QsR0FBRyxLQUFLLENBQUE7SUFFVCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwwQkFBMEIsTUFBTSxFQUFFLENBQ25DLENBQUE7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsOENBQTZCLEVBQ2pELFlBQWlDLENBQ2xDLENBQUE7SUFFRCw4RkFBOEY7SUFDOUYsTUFBTSxjQUFjLEdBQXlCO1FBQzNDLFFBQVEsRUFDTixhQUFhLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxRQUFRO1lBQ3BELENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7Z0JBQzdELENBQUMsQ0FBQztvQkFDRSxLQUFLLEVB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
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.retrieveOrderAndPaymentStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
-
exports.retrieveOrderAndPaymentStep = (0, workflows_sdk_1.createStep)("retrieve-order-and-payment", async (input, { container }) => {
|
|
8
|
-
const { order_id } = input;
|
|
9
|
-
if (!order_id) {
|
|
10
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order ID is required to retrieve order and payment");
|
|
11
|
-
}
|
|
12
|
-
const orderService = container.resolve(utils_2.Modules.ORDER);
|
|
13
|
-
const paymentService = container.resolve(utils_2.Modules.PAYMENT);
|
|
14
|
-
// Retrieve order with payment collection
|
|
15
|
-
const order = await orderService.retrieveOrder(order_id, {
|
|
16
|
-
relations: ["payment_collection"],
|
|
17
|
-
});
|
|
18
|
-
if (!order) {
|
|
19
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with ID ${order_id} not found`);
|
|
20
|
-
}
|
|
21
|
-
// Extract currency code from order
|
|
22
|
-
const currencyCode = order.currency_code;
|
|
23
|
-
if (!currencyCode) {
|
|
24
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order ${order_id} does not have a currency code`);
|
|
25
|
-
}
|
|
26
|
-
// Retrieve payment collection
|
|
27
|
-
const orderWithPayment = order;
|
|
28
|
-
const paymentCollectionId = orderWithPayment.payment_collection_id;
|
|
29
|
-
if (!paymentCollectionId) {
|
|
30
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order ${order_id} does not have a payment collection`);
|
|
31
|
-
}
|
|
32
|
-
const paymentCollection = await paymentService.retrievePaymentCollection(paymentCollectionId, {
|
|
33
|
-
relations: ["payments", "payment_providers"],
|
|
34
|
-
});
|
|
35
|
-
if (!paymentCollection) {
|
|
36
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Payment collection ${paymentCollectionId} not found`);
|
|
37
|
-
}
|
|
38
|
-
return new workflows_sdk_1.StepResponse({
|
|
39
|
-
order,
|
|
40
|
-
payment_collection: paymentCollection,
|
|
41
|
-
currency_code: currencyCode,
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtb3JkZXItYW5kLXBheW1lbnQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcmV0cmlldmUtb3JkZXItYW5kLXBheW1lbnQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFtRDtBQVd0QyxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsNEJBQTRCLEVBQzVCLEtBQUssRUFDSCxLQUF1QyxFQUN2QyxFQUFFLFNBQVMsRUFBRSxFQUM2QyxFQUFFO0lBQzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0RBQW9ELENBQ3JELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDcEMsZUFBTyxDQUFDLEtBQUssQ0FDZCxDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDdEMsZUFBTyxDQUFDLE9BQU8sQ0FDaEIsQ0FBQTtJQUVELHlDQUF5QztJQUN6QyxNQUFNLEtBQUssR0FBRyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3ZELFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0tBQ2xDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLGlCQUFpQixRQUFRLFlBQVksQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQTtJQUV4QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsU0FBUyxRQUFRLGdDQUFnQyxDQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixNQUFNLGdCQUFnQixHQUFHLEtBQXNELENBQUE7SUFDL0UsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQTtJQUVsRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixTQUFTLFFBQVEscUNBQXFDLENBQ3ZELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLGNBQWMsQ0FBQyx5QkFBeUIsQ0FDdEUsbUJBQW1CLEVBQ25CO1FBQ0UsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDO0tBQzdDLENBQ0YsQ0FBQTtJQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLHNCQUFzQixtQkFBbUIsWUFBWSxDQUN0RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFvQztRQUN6RCxLQUFLO1FBQ0wsa0JBQWtCLEVBQUUsaUJBQWlCO1FBQ3JDLGFBQWEsRUFBRSxZQUFZO0tBQzVCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.retrieveReturnPaymentDetailsStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
-
exports.retrieveReturnPaymentDetailsStep = (0, workflows_sdk_1.createStep)("retrieve-return-payment-details", async (input, { container }) => {
|
|
8
|
-
const { return_id, order_id } = input;
|
|
9
|
-
if (!return_id) {
|
|
10
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Return ID is required to retrieve payment details");
|
|
11
|
-
}
|
|
12
|
-
if (!order_id) {
|
|
13
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order ID is required to retrieve payment details");
|
|
14
|
-
}
|
|
15
|
-
const orderService = container.resolve(utils_2.Modules.ORDER);
|
|
16
|
-
// Retrieve order with returns
|
|
17
|
-
const order = await orderService.retrieveOrder(order_id, {
|
|
18
|
-
relations: ["returns"],
|
|
19
|
-
});
|
|
20
|
-
if (!order) {
|
|
21
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with ID ${order_id} not found`);
|
|
22
|
-
}
|
|
23
|
-
// Find the return by ID
|
|
24
|
-
const orderWithReturns = order;
|
|
25
|
-
const returns = orderWithReturns.returns || [];
|
|
26
|
-
const returnRecord = returns.find((ret) => ret.id === return_id);
|
|
27
|
-
if (!returnRecord) {
|
|
28
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Return with ID ${return_id} not found for order ${order_id}`);
|
|
29
|
-
}
|
|
30
|
-
// Extract payment details from return metadata
|
|
31
|
-
const metadata = returnRecord.metadata;
|
|
32
|
-
if (!metadata) {
|
|
33
|
-
return new workflows_sdk_1.StepResponse({
|
|
34
|
-
payment_details: null,
|
|
35
|
-
has_payment_details: false,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
// Check if payment details exist in metadata
|
|
39
|
-
const paymentDetailsData = metadata.refund_payment_details;
|
|
40
|
-
if (!paymentDetailsData) {
|
|
41
|
-
return new workflows_sdk_1.StepResponse({
|
|
42
|
-
payment_details: null,
|
|
43
|
-
has_payment_details: false,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
// Validate payment details structure
|
|
47
|
-
if (!paymentDetailsData.method ||
|
|
48
|
-
!paymentDetailsData.currency_code) {
|
|
49
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid payment details structure in return ${return_id} metadata`);
|
|
50
|
-
}
|
|
51
|
-
return new workflows_sdk_1.StepResponse({
|
|
52
|
-
payment_details: paymentDetailsData,
|
|
53
|
-
has_payment_details: true,
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtcmV0dXJuLXBheW1lbnQtZGV0YWlscy1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9yZXRyaWV2ZS1yZXR1cm4tcGF5bWVudC1kZXRhaWxzLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBbUQ7QUFjdEMsUUFBQSxnQ0FBZ0MsR0FBRyxJQUFBLDBCQUFVLEVBQ3hELGlDQUFpQyxFQUNqQyxLQUFLLEVBQ0gsS0FBNEMsRUFDNUMsRUFBRSxTQUFTLEVBQUUsRUFDa0QsRUFBRTtJQUNqRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixtREFBbUQsQ0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixrREFBa0QsQ0FDbkQsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFzQixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFMUUsOEJBQThCO0lBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDdkQsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ3ZCLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLGlCQUFpQixRQUFRLFlBQVksQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxLQUEyQyxDQUFBO0lBQ3BFLE1BQU0sT0FBTyxHQUFJLGdCQUFnQixDQUFDLE9BQXFCLElBQUksRUFBRSxDQUFBO0lBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQy9CLENBQUMsR0FBbUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQzlDLENBQUE7SUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0Isa0JBQWtCLFNBQVMsd0JBQXdCLFFBQVEsRUFBRSxDQUM5RCxDQUFBO0lBQ0gsQ0FBQztJQUVELCtDQUErQztJQUMvQyxNQUFNLFFBQVEsR0FBSSxZQUF1QyxDQUFDLFFBRzdDLENBQUE7SUFFYixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksNEJBQVksQ0FBeUM7WUFDOUQsZUFBZSxFQUFFLElBQUk7WUFDckIsbUJBQW1CLEVBQUUsS0FBSztTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLHNCQUV2QixDQUFBO0lBRWIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLDRCQUFZLENBQXlDO1lBQzlELGVBQWUsRUFBRSxJQUFJO1lBQ3JCLG1CQUFtQixFQUFFLEtBQUs7U0FDM0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUNFLENBQUMsa0JBQWtCLENBQUMsTUFBTTtRQUMxQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFDakMsQ0FBQztRQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLCtDQUErQyxTQUFTLFdBQVcsQ0FDcEUsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBeUM7UUFDOUQsZUFBZSxFQUFFLGtCQUFrQjtRQUNuQyxtQkFBbUIsRUFBRSxJQUFJO0tBQzFCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.selectPaymentMethodStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
/**
|
|
7
|
-
* Validates that the payment method is supported for the given currency.
|
|
8
|
-
* Provider selection happens later in process-refund-payment-step.
|
|
9
|
-
*/
|
|
10
|
-
exports.selectPaymentMethodStep = (0, workflows_sdk_1.createStep)("select-payment-method", async (input) => {
|
|
11
|
-
const { currency_code, payment_details } = input;
|
|
12
|
-
if (!currency_code) {
|
|
13
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Currency code is required to select payment method");
|
|
14
|
-
}
|
|
15
|
-
if (!payment_details) {
|
|
16
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment details are required to process refund");
|
|
17
|
-
}
|
|
18
|
-
// Verify currency matches
|
|
19
|
-
if (payment_details.currency_code !== currency_code) {
|
|
20
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Currency mismatch: payment details currency ${payment_details.currency_code} does not match order currency ${currency_code}`);
|
|
21
|
-
}
|
|
22
|
-
const currency = currency_code.toUpperCase();
|
|
23
|
-
const method = payment_details.method;
|
|
24
|
-
// Validate that the payment method is generally supported for this currency
|
|
25
|
-
// (Provider-specific validation happens in process-refund-payment-step)
|
|
26
|
-
switch (currency) {
|
|
27
|
-
case "INR":
|
|
28
|
-
// For INR, UPI, wallet, and bank_transfer are supported
|
|
29
|
-
if (method !== "upi" &&
|
|
30
|
-
method !== "wallet" &&
|
|
31
|
-
method !== "bank_transfer") {
|
|
32
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Payment method ${method} is not supported for currency ${currency}. Supported methods: upi, wallet, bank_transfer`);
|
|
33
|
-
}
|
|
34
|
-
break;
|
|
35
|
-
case "USD":
|
|
36
|
-
case "EUR":
|
|
37
|
-
case "GBP":
|
|
38
|
-
case "CAD":
|
|
39
|
-
case "AUD":
|
|
40
|
-
case "JPY":
|
|
41
|
-
case "CHF":
|
|
42
|
-
case "SGD":
|
|
43
|
-
case "HKD":
|
|
44
|
-
case "NZD":
|
|
45
|
-
// For major currencies, only bank_transfer is typically supported
|
|
46
|
-
if (method !== "bank_transfer") {
|
|
47
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Payment method ${method} is not supported for currency ${currency}. Only bank_transfer is supported.`);
|
|
48
|
-
}
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
// For other currencies, only bank_transfer is typically supported
|
|
52
|
-
if (method !== "bank_transfer") {
|
|
53
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Payment method ${method} is not supported for currency ${currency}. Only bank_transfer is supported.`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return new workflows_sdk_1.StepResponse({
|
|
57
|
-
selected_method: method,
|
|
58
|
-
payment_details,
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBheW1lbnQtbWV0aG9kLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3NlbGVjdC1wYXltZW50LW1ldGhvZC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFhNUU7OztHQUdHO0FBQ1UsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDBCQUFVLEVBQy9DLHVCQUF1QixFQUN2QixLQUFLLEVBQ0gsS0FBbUMsRUFDbUIsRUFBRTtJQUN4RCxNQUFNLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0RBQW9ELENBQ3JELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGdEQUFnRCxDQUNqRCxDQUFBO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUFJLGVBQWUsQ0FBQyxhQUFhLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsK0NBQStDLGVBQWUsQ0FBQyxhQUFhLGtDQUFrQyxhQUFhLEVBQUUsQ0FDOUgsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDNUMsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQTtJQUVyQyw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLO1lBQ1Isd0RBQXdEO1lBQ3hELElBQ0UsTUFBTSxLQUFLLEtBQUs7Z0JBQ2hCLE1BQU0sS0FBSyxRQUFRO2dCQUNuQixNQUFNLEtBQUssZUFBZSxFQUMxQixDQUFDO2dCQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGtCQUFrQixNQUFNLGtDQUFrQyxRQUFRLGlEQUFpRCxDQUNwSCxDQUFBO1lBQ0gsQ0FBQztZQUNELE1BQUs7UUFFUCxLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixrRUFBa0U7WUFDbEUsSUFBSSxNQUFNLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGtCQUFrQixNQUFNLGtDQUFrQyxRQUFRLG9DQUFvQyxDQUN2RyxDQUFBO1lBQ0gsQ0FBQztZQUNELE1BQUs7UUFFUDtZQUNFLGtFQUFrRTtZQUNsRSxJQUFJLE1BQU0sS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0JBQWtCLE1BQU0sa0NBQWtDLFFBQVEsb0NBQW9DLENBQ3ZHLENBQUE7WUFDSCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFnQztRQUNyRCxlQUFlLEVBQUUsTUFBTTtRQUN2QixlQUFlO0tBQ2hCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updatePaymentStatusStep = void 0;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
-
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
-
exports.updatePaymentStatusStep = (0, workflows_sdk_1.createStep)("update-payment-status", async (input, { container }) => {
|
|
8
|
-
const { payment_collection_id, refund_id, refund_amount } = input;
|
|
9
|
-
if (!payment_collection_id) {
|
|
10
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment collection ID is required to update payment status");
|
|
11
|
-
}
|
|
12
|
-
if (!refund_id) {
|
|
13
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Refund ID is required to update payment status");
|
|
14
|
-
}
|
|
15
|
-
const paymentService = container.resolve(utils_2.Modules.PAYMENT);
|
|
16
|
-
try {
|
|
17
|
-
// Retrieve payment collection to verify refund exists
|
|
18
|
-
const paymentCollection = await paymentService.retrievePaymentCollection(payment_collection_id, {
|
|
19
|
-
relations: ["refunds", "payments"],
|
|
20
|
-
});
|
|
21
|
-
if (!paymentCollection) {
|
|
22
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Payment collection ${payment_collection_id} not found`);
|
|
23
|
-
}
|
|
24
|
-
// Verify refund exists
|
|
25
|
-
const paymentCollectionWithRefunds = paymentCollection;
|
|
26
|
-
const refunds = paymentCollectionWithRefunds.refunds || [];
|
|
27
|
-
const refund = refunds.find((r) => r.id === refund_id);
|
|
28
|
-
if (!refund) {
|
|
29
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Refund ${refund_id} not found in payment collection`);
|
|
30
|
-
}
|
|
31
|
-
// Payment status is automatically updated by Medusa when refund is created
|
|
32
|
-
// For COD, the refund is already marked as succeeded in the previous step
|
|
33
|
-
// We just need to log the completion
|
|
34
|
-
return new workflows_sdk_1.StepResponse({
|
|
35
|
-
success: true,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
if (error instanceof utils_1.MedusaError) {
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to update payment status: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXBheW1lbnQtc3RhdHVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3VwZGF0ZS1wYXltZW50LXN0YXR1cy1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQW1EO0FBVXRDLFFBQUEsdUJBQXVCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQyx1QkFBdUIsRUFDdkIsS0FBSyxFQUNILEtBQW1DLEVBQ25DLEVBQUUsU0FBUyxFQUFFLEVBQ3lDLEVBQUU7SUFDeEQsTUFBTSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFakUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNERBQTRELENBQzdELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsZ0RBQWdELENBQ2pELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDdEMsZUFBTyxDQUFDLE9BQU8sQ0FDaEIsQ0FBQTtJQUVELElBQUksQ0FBQztRQUNILHNEQUFzRDtRQUN0RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sY0FBYyxDQUFDLHlCQUF5QixDQUN0RSxxQkFBcUIsRUFDckI7WUFDRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO1NBQ25DLENBQ0YsQ0FBQTtRQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLHNCQUFzQixxQkFBcUIsWUFBWSxDQUN4RCxDQUFBO1FBQ0gsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLDRCQUE0QixHQUFHLGlCQUF1RCxDQUFBO1FBQzVGLE1BQU0sT0FBTyxHQUFJLDRCQUE0QixDQUFDLE9BQXFCLElBQUksRUFBRSxDQUFBO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQ3pCLENBQUMsQ0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQzFDLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixVQUFVLFNBQVMsa0NBQWtDLENBQ3RELENBQUE7UUFDSCxDQUFDO1FBRUQsMkVBQTJFO1FBQzNFLDBFQUEwRTtRQUMxRSxxQ0FBcUM7UUFFckMsT0FBTyxJQUFJLDRCQUFZLENBQWdDO1lBQ3JELE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyxvQ0FBb0MsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQy9GLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUEifQ==
|