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.
Files changed (33) hide show
  1. package/.medusa/server/src/admin/index.js +4 -639
  2. package/.medusa/server/src/admin/index.mjs +4 -639
  3. package/.medusa/server/src/api/store/orders/reorder/[order_id]/route.js +66 -0
  4. package/.medusa/server/src/workflows/index.js +4 -9
  5. package/.medusa/server/src/workflows/{types.js → reorder/types.js} +1 -1
  6. package/.medusa/server/src/workflows/reorder-workflow.js +27 -0
  7. package/.medusa/server/src/workflows/steps/create-cart-from-order-step.js +26 -0
  8. package/.medusa/server/src/workflows/steps/index.js +10 -0
  9. package/.medusa/server/src/workflows/steps/retrieve-order-step.js +79 -0
  10. package/.medusa/server/src/workflows/steps/transform-order-to-cart-step.js +53 -0
  11. package/README.md +59 -73
  12. package/package.json +1 -1
  13. package/.medusa/server/src/api/admin/returns/[id]/retry-refund/route.js +0 -84
  14. package/.medusa/server/src/api/admin/returns/failed-refunds/route.js +0 -137
  15. package/.medusa/server/src/api/store/returns/[id]/payment-details/route.js +0 -326
  16. package/.medusa/server/src/config/plugin-options.js +0 -61
  17. package/.medusa/server/src/providers/refund-payment/base-refund-provider.js +0 -80
  18. package/.medusa/server/src/providers/refund-payment/index.js +0 -38
  19. package/.medusa/server/src/providers/refund-payment/razorpay-provider.js +0 -96
  20. package/.medusa/server/src/providers/refund-payment/stripe-provider.js +0 -82
  21. package/.medusa/server/src/subscribers/return-received.js +0 -103
  22. package/.medusa/server/src/types/plugin-options.js +0 -3
  23. package/.medusa/server/src/types/refund-payment.js +0 -3
  24. package/.medusa/server/src/workflows/process-cod-refund-workflow.js +0 -99
  25. package/.medusa/server/src/workflows/steps/calculate-refund-amount-step.js +0 -51
  26. package/.medusa/server/src/workflows/steps/create-refund-record-step.js +0 -243
  27. package/.medusa/server/src/workflows/steps/process-refund-payment-step.js +0 -86
  28. package/.medusa/server/src/workflows/steps/retrieve-order-and-payment-step.js +0 -44
  29. package/.medusa/server/src/workflows/steps/retrieve-return-payment-details-step.js +0 -56
  30. package/.medusa/server/src/workflows/steps/select-payment-method-step.js +0 -61
  31. package/.medusa/server/src/workflows/steps/update-payment-status-step.js +0 -45
  32. package/.medusa/server/src/workflows/steps/validate-payment-details-step.js +0 -90
  33. 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==