order-management 0.0.1 → 0.0.2
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 +639 -4
- package/.medusa/server/src/admin/index.mjs +639 -4
- package/.medusa/server/src/api/admin/returns/[id]/retry-refund/route.js +84 -0
- package/.medusa/server/src/api/admin/returns/failed-refunds/route.js +137 -0
- package/.medusa/server/src/api/store/returns/[id]/payment-details/route.js +198 -5
- package/.medusa/server/src/config/plugin-options.js +3 -1
- package/.medusa/server/src/subscribers/return-received.js +13 -1
- package/.medusa/server/src/workflows/process-cod-refund-workflow.js +17 -4
- package/.medusa/server/src/workflows/steps/create-refund-record-step.js +62 -12
- package/.medusa/server/src/workflows/steps/process-refund-payment-step.js +3 -4
- package/README.md +73 -59
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
6
|
const utils_2 = require("@medusajs/framework/utils");
|
|
7
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, } = input;
|
|
8
|
+
const { payment_collection_id, amount, currency_code, order_id, return_id, transaction_id, payment_error, } = input;
|
|
9
9
|
if (!payment_collection_id) {
|
|
10
10
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Payment collection ID is required to create refund record");
|
|
11
11
|
}
|
|
@@ -78,15 +78,31 @@ exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-
|
|
|
78
78
|
const refundId = refundData.id;
|
|
79
79
|
const refundAmount = refundData.amount ?? amount;
|
|
80
80
|
const refundCurrency = refundData.currency_code ?? currency_code;
|
|
81
|
-
// If we have a gateway transaction_id, update the refund metadata
|
|
82
|
-
if (transaction_id) {
|
|
81
|
+
// If we have a gateway transaction_id or payment error, update the refund metadata
|
|
82
|
+
if (transaction_id || payment_error) {
|
|
83
83
|
const currentMetadata = refundData.metadata || {};
|
|
84
|
-
//
|
|
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
|
|
85
87
|
const updatedMetadata = {
|
|
86
88
|
...currentMetadata,
|
|
87
|
-
transaction_id
|
|
88
|
-
|
|
89
|
-
|
|
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",
|
|
90
106
|
return_id, // Ensure return_id is in metadata
|
|
91
107
|
order_id,
|
|
92
108
|
payment_type: "cod",
|
|
@@ -95,15 +111,27 @@ exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-
|
|
|
95
111
|
// Note: We update payment collection metadata as fallback since
|
|
96
112
|
// direct refund update may not be available
|
|
97
113
|
const paymentCollectionMetadata = paymentCollection.metadata || {};
|
|
98
|
-
// Store gateway transaction info in payment collection metadata
|
|
114
|
+
// Store gateway transaction info or failure details in payment collection metadata
|
|
99
115
|
await paymentService.updatePaymentCollection?.(payment_collection_id, {
|
|
100
116
|
metadata: {
|
|
101
117
|
...paymentCollectionMetadata,
|
|
102
118
|
refund_transactions: {
|
|
103
119
|
...(paymentCollectionMetadata.refund_transactions || {}),
|
|
104
120
|
[refundId]: {
|
|
105
|
-
transaction_id
|
|
106
|
-
|
|
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",
|
|
107
135
|
updated_at: new Date().toISOString(),
|
|
108
136
|
},
|
|
109
137
|
},
|
|
@@ -144,7 +172,18 @@ exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-
|
|
|
144
172
|
refund_type: "return",
|
|
145
173
|
transaction_id,
|
|
146
174
|
processed_via_gateway: transaction_id ? true : false,
|
|
147
|
-
refund_status:
|
|
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
|
+
}),
|
|
148
187
|
},
|
|
149
188
|
},
|
|
150
189
|
]);
|
|
@@ -172,6 +211,17 @@ exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-
|
|
|
172
211
|
return_id,
|
|
173
212
|
order_id,
|
|
174
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
|
+
}),
|
|
175
225
|
created_at: new Date().toISOString(),
|
|
176
226
|
},
|
|
177
227
|
],
|
|
@@ -190,4 +240,4 @@ exports.createRefundRecordStep = (0, workflows_sdk_1.createStep)("create-refund-
|
|
|
190
240
|
currency_code: refundCurrency,
|
|
191
241
|
});
|
|
192
242
|
});
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlZnVuZC1yZWNvcmQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvY3JlYXRlLXJlZnVuZC1yZWNvcmQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFtRDtBQWlCdEMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQzlDLHNCQUFzQixFQUN0QixLQUFLLEVBQ0gsS0FBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsRUFDd0MsRUFBRTtJQUN2RCxNQUFNLEVBQ0oscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixhQUFhLEVBQ2IsUUFBUSxFQUNSLFNBQVMsRUFDVCxjQUFjLEVBQ2QsYUFBYSxHQUNkLEdBQUcsS0FBSyxDQUFBO0lBRVQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkRBQTJELENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMEJBQTBCLE1BQU0saUNBQWlDLENBQ2xFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1EQUFtRCxDQUNwRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3RDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMs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
|
|
@@ -76,12 +76,11 @@ exports.processRefundPaymentStep = (0, workflows_sdk_1.createStep)("process-refu
|
|
|
76
76
|
return_id,
|
|
77
77
|
order_id,
|
|
78
78
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
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
|
|
82
81
|
return new workflows_sdk_1.StepResponse({
|
|
83
82
|
refund_result: refundResult,
|
|
84
83
|
transaction_id: refundResult.transaction_id,
|
|
85
84
|
});
|
|
86
85
|
});
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1yZWZ1bmQtcGF5bWVudC1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9wcm9jZXNzLXJlZnVuZC1wYXltZW50LXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBcUU7QUFFckUsbUVBSXVDO0FBQ3ZDLGdFQUdvQztBQWdCdkIsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixlQUFlLEVBQ2YsY0FBYyxFQUNkLFNBQVMsRUFDVCxRQUFRLEdBQ1QsR0FBRyxLQUFLLENBQUE7SUFFVCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwwQkFBMEIsTUFBTSxFQUFFLENBQ25DLENBQUE7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsOENBQTZCLEVBQ2pELFlBQWlDLENBQ2xDLENBQUE7SUFFRCw4RkFBOEY7SUFDOUYsTUFBTSxjQUFjLEdBQXlCO1FBQzNDLFFBQVEsRUFDTixhQUFhLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxRQUFRO1lBQ3BELENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7Z0JBQzdELENBQUMsQ0FBQztvQkFDRSxLQUFLLEVB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
|
package/README.md
CHANGED
|
@@ -1,64 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
# Order Management Plugin
|
|
2
|
+
|
|
3
|
+
A Medusa v2 plugin for automated COD (Cash on Delivery) refund processing with multi-currency support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Automatic COD refund processing when return is marked as "received"
|
|
8
|
+
- Multi-currency support (INR, USD, EUR, GBP, etc.)
|
|
9
|
+
- Multiple payment methods (UPI, Bank Transfer, Digital Wallets)
|
|
10
|
+
- Configurable payment providers (Razorpay, Stripe)
|
|
11
|
+
- Customer payment details collection
|
|
12
|
+
- Integration with Medusa's built-in refund flow
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
### Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install order-management
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Configuration
|
|
23
|
+
|
|
24
|
+
Add to `medusa-config.ts`:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { defineConfig } from "@medusajs/framework/utils"
|
|
28
|
+
|
|
29
|
+
export default defineConfig({
|
|
30
|
+
plugins: [
|
|
31
|
+
{
|
|
32
|
+
resolve: "order-management",
|
|
33
|
+
options: {
|
|
34
|
+
refundProviders: {
|
|
35
|
+
enabled: ["razorpay", "stripe"],
|
|
36
|
+
credentials: {
|
|
37
|
+
razorpay: {
|
|
38
|
+
keyId: process.env.RAZORPAY_KEY_ID,
|
|
39
|
+
keySecret: process.env.RAZORPAY_KEY_SECRET,
|
|
40
|
+
},
|
|
41
|
+
stripe: {
|
|
42
|
+
apiKey: process.env.STRIPE_API_KEY,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Documentation
|
|
53
|
+
|
|
54
|
+
For complete implementation guide including:
|
|
55
|
+
- Backend setup and configuration
|
|
56
|
+
- Frontend integration examples
|
|
57
|
+
- API reference
|
|
58
|
+
- Complete code examples
|
|
59
|
+
|
|
60
|
+
See **[IMPLEMENTATION_GUIDE.md](./IMPLEMENTATION_GUIDE.md)**
|
|
61
|
+
|
|
62
|
+
## How It Works
|
|
63
|
+
|
|
64
|
+
1. Customer creates return request and provides payment details
|
|
65
|
+
2. Admin marks return as "received" in Medusa admin
|
|
66
|
+
3. Plugin automatically:
|
|
67
|
+
- Detects COD order
|
|
68
|
+
- Processes refund via payment gateway
|
|
69
|
+
- Transfers money to customer
|
|
70
|
+
- Creates/updates refund record
|
|
34
71
|
|
|
35
72
|
## Compatibility
|
|
36
73
|
|
|
37
|
-
|
|
74
|
+
Compatible with Medusa v2.4.0 and above.
|
|
38
75
|
|
|
39
|
-
##
|
|
76
|
+
## License
|
|
40
77
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Visit the [Plugins documentation](https://docs.medusajs.com/learn/fundamentals/plugins) to learn more about plugins and how to create them.
|
|
44
|
-
|
|
45
|
-
Visit the [Docs](https://docs.medusajs.com/learn/installation#get-started) to learn more about our system requirements.
|
|
46
|
-
|
|
47
|
-
## What is Medusa
|
|
48
|
-
|
|
49
|
-
Medusa is a set of commerce modules and tools that allow you to build rich, reliable, and performant commerce applications without reinventing core commerce logic. The modules can be customized and used to build advanced ecommerce stores, marketplaces, or any product that needs foundational commerce primitives. All modules are open-source and freely available on npm.
|
|
50
|
-
|
|
51
|
-
Learn more about [Medusa’s architecture](https://docs.medusajs.com/learn/introduction/architecture) and [commerce modules](https://docs.medusajs.com/learn/fundamentals/modules/commerce-modules) in the Docs.
|
|
52
|
-
|
|
53
|
-
## Community & Contributions
|
|
54
|
-
|
|
55
|
-
The community and core team are available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can ask for support, discuss roadmap, and share ideas.
|
|
56
|
-
|
|
57
|
-
Join our [Discord server](https://discord.com/invite/medusajs) to meet other community members.
|
|
58
|
-
|
|
59
|
-
## Other channels
|
|
60
|
-
|
|
61
|
-
- [GitHub Issues](https://github.com/medusajs/medusa/issues)
|
|
62
|
-
- [Twitter](https://twitter.com/medusajs)
|
|
63
|
-
- [LinkedIn](https://www.linkedin.com/company/medusajs)
|
|
64
|
-
- [Medusa Blog](https://medusajs.com/blog/)
|
|
78
|
+
MIT
|