medusa-hdfc-payment 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.
@@ -3,12 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleError = void 0;
4
4
  const utils_1 = require("@medusajs/utils");
5
5
  const handleError = (error) => {
6
- const message = error.response?.data?.error_message ||
7
- error.response?.data?.message ||
8
- error.message ||
6
+ // If error is already a MedusaError, re-throw it to avoid double-wrapping
7
+ if (error instanceof utils_1.MedusaError) {
8
+ throw error;
9
+ }
10
+ // Handle network errors (DNS, connection issues)
11
+ // AxiosError without response indicates a network error
12
+ const isAxiosError = error && typeof error === 'object' && 'isAxiosError' in error;
13
+ const isNetworkError = !isAxiosError || (isAxiosError && !error.response);
14
+ if (isNetworkError) {
15
+ const errorMessage = error.message || "Unknown network error";
16
+ if (errorMessage.includes("ENOTFOUND") || errorMessage.includes("getaddrinfo")) {
17
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `HDFC API endpoint not found. Please verify the API endpoint URL is correct. Error: ${errorMessage}. Check your HDFC payment gateway configuration.`);
18
+ }
19
+ if (errorMessage.includes("ECONNREFUSED") || errorMessage.includes("ETIMEDOUT")) {
20
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Cannot connect to HDFC payment gateway. Please check your network connection and API endpoint. Error: ${errorMessage}`);
21
+ }
22
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `HDFC API network error: ${errorMessage}`);
23
+ }
24
+ // Handle Axios errors with response (HTTP errors)
25
+ const axiosError = error;
26
+ const message = axiosError.response?.data?.error_message ||
27
+ axiosError.response?.data?.message ||
28
+ axiosError.message ||
9
29
  "HDFC API error";
10
- const code = error.response?.status || 500;
11
- const errorCode = error.response?.data?.error_code;
30
+ const code = axiosError.response?.status || 500;
31
+ const errorCode = axiosError.response?.data?.error_code;
32
+ const fullErrorData = axiosError.response?.data;
33
+ // Log detailed error information for debugging
34
+ console.error(`[HDFC Error Handler] HTTP Status: ${code}`);
35
+ console.error(`[HDFC Error Handler] Error Code: ${errorCode || 'N/A'}`);
36
+ console.error(`[HDFC Error Handler] Error Message: ${message}`);
37
+ console.error(`[HDFC Error Handler] Full Error Response: ${JSON.stringify(fullErrorData)}`);
12
38
  if (code === 401) {
13
39
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Authentication failed with HDFC payment gateway");
14
40
  }
@@ -18,11 +44,19 @@ const handleError = (error) => {
18
44
  if (code === 429) {
19
45
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Rate limit exceeded. Please try again later.");
20
46
  }
21
- if (code === 400 && error.response?.data?.errors) {
22
- const validationErrors = Object.entries(error.response.data.errors)
23
- .map(([field, msgs]) => `${field}: ${Array.isArray(msgs) ? msgs.join(", ") : msgs}`)
24
- .join("; ");
25
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `HDFC validation failed: ${validationErrors}`);
47
+ if (code === 400) {
48
+ // Handle validation errors with detailed messages
49
+ if (axiosError.response?.data?.errors) {
50
+ const validationErrors = Object.entries(axiosError.response.data.errors)
51
+ .map(([field, msgs]) => `${field}: ${Array.isArray(msgs) ? msgs.join(", ") : msgs}`)
52
+ .join("; ");
53
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `HDFC validation failed: ${validationErrors}. Full response: ${JSON.stringify(fullErrorData)}`);
54
+ }
55
+ // For 400 errors, include full error details
56
+ const errorDetails = errorCode
57
+ ? `Error Code: ${errorCode}. ${message}`
58
+ : message;
59
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `HDFC API Bad Request: ${errorDetails}. Full response: ${JSON.stringify(fullErrorData)}`);
26
60
  }
27
61
  // Map HDFC specific error codes to Medusa error types
28
62
  if (errorCode) {
@@ -43,4 +77,4 @@ const handleError = (error) => {
43
77
  : utils_1.MedusaError.Types.UNEXPECTED_STATE, `HDFC payment error: ${message}`);
44
78
  };
45
79
  exports.handleError = handleError;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9oZGZjL2NsaWVudC9oYW5kbGUtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTZDO0FBSXRDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBNEIsRUFBUyxFQUFFO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWE7UUFDbkMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTztRQUM3QixLQUFLLENBQUMsT0FBTztRQUNiLGdCQUFnQixDQUFBO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLEdBQUcsQ0FBQTtJQUMxQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUE7SUFFbEQsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsaURBQWlELENBQ2xELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsMkRBQTJELENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOENBQThDLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDaEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJCQUEyQixnQkFBZ0IsRUFBRSxDQUM5QyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1QkFBdUIsT0FBTyxFQUFFLENBQ2pDLENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixvQkFBb0IsT0FBTyxFQUFFLENBQzlCLENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsT0FBTyxFQUFFLENBQy9CLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixJQUFJLEtBQUssR0FBRztRQUNWLENBQUMsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO1FBQzdCLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRztZQUNkLENBQUMsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLENBQUMsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEMsdUJBQXVCLE9BQU8sRUFBRSxDQUNqQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBckVZLFFBQUEsV0FBVyxlQXFFdkIifQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9oZGZjL2NsaWVudC9oYW5kbGUtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTZDO0FBSXRDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBa0QsRUFBUyxFQUFFO0lBQ3ZGLDBFQUEwRTtJQUMxRSxJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7UUFDakMsTUFBTSxLQUFLLENBQUE7SUFDYixDQUFDO0lBRUQsaURBQWlEO0lBQ2pELHdEQUF3RDtJQUN4RCxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLGNBQWMsSUFBSSxLQUFLLENBQUE7SUFDbEYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBRSxLQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXpGLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQTtRQUU3RCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9FLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsc0ZBQXNGLFlBQVksa0RBQWtELENBQ3JKLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoRixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLHlHQUF5RyxZQUFZLEVB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
@@ -9,16 +9,17 @@ const handle_error_1 = require("./handle-error");
9
9
  class HDFCClient {
10
10
  constructor(options) {
11
11
  this.isDisposed = false;
12
- if (!options.merchant_id || !options.api_key || !options.secret_key) {
13
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "HDFC API credentials are required (merchant_id, api_key, secret_key)");
12
+ if (!options.merchant_id || !options.api_key || !options.payment_page_client_id) {
13
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "HDFC API credentials are required (merchant_id, api_key, payment_page_client_id)");
14
14
  }
15
15
  this.merchantId = options.merchant_id;
16
16
  this.apiKey = options.api_key;
17
- this.secretKey = options.secret_key;
17
+ this.paymentPageClientId = options.payment_page_client_id;
18
18
  this.environment = options.environment || "sandbox";
19
+ // Correct base URLs from official integration kit
19
20
  const baseURL = this.environment === "production"
20
- ? "https://securepg.hdfcbank.com/api/v1"
21
- : "https://securepg.hdfcbank.com/sandbox/api/v1";
21
+ ? "https://smartgateway.hdfc.bank.in"
22
+ : "https://smartgateway.hdfcuat.bank.in";
22
23
  this.axios = axios_1.default.create({
23
24
  baseURL,
24
25
  headers: {
@@ -32,10 +33,12 @@ class HDFCClient {
32
33
  if (this.isDisposed) {
33
34
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Cannot use disposed HDFC client");
34
35
  }
35
- // Add authentication headers
36
- config.headers["X-Merchant-Id"] = this.merchantId;
37
- config.headers["X-API-Key"] = this.apiKey;
38
- config.headers["Authorization"] = `Bearer ${this.secretKey}`;
36
+ // Use Basic Auth with base64 encoded API_KEY
37
+ const base64ApiKey = Buffer.from(this.apiKey).toString("base64");
38
+ config.headers["Authorization"] = `Basic ${base64ApiKey}`;
39
+ config.headers["x-merchantid"] = this.merchantId;
40
+ config.headers["version"] = "2024-06-24";
41
+ config.headers["User-Agent"] = "MEDUSA_HDFC_PLUGIN/1.0.0";
39
42
  return config;
40
43
  });
41
44
  // Add response interceptor for error handling
@@ -52,22 +55,49 @@ class HDFCClient {
52
55
  */
53
56
  async initiate(data) {
54
57
  try {
55
- const response = await this.axios.post("/payments/initiate", {
56
- merchant_id: this.merchantId,
58
+ const requestUrl = `${this.axios.defaults.baseURL}/session`;
59
+ // Build request payload, filtering out undefined/null values
60
+ const requestPayload = {
61
+ payment_page_client_id: this.paymentPageClientId,
57
62
  order_id: data.order_id,
58
63
  amount: data.amount,
59
- currency: data.currency,
60
- customer_email: data.customer_email,
61
- customer_phone: data.customer_phone,
64
+ currency: data.currency ? data.currency.toUpperCase() : data.currency, // Ensure uppercase
62
65
  return_url: data.return_url,
63
- cancel_url: data.cancel_url,
64
- metadata: data.metadata,
65
- });
66
- return response.data;
66
+ };
67
+ // Only include optional fields if they have values
68
+ if (data.customer_id) {
69
+ requestPayload.customer_id = data.customer_id;
70
+ }
71
+ if (data.customer_email) {
72
+ requestPayload.customer_email = data.customer_email;
73
+ }
74
+ if (data.customer_phone) {
75
+ requestPayload.customer_phone = data.customer_phone;
76
+ }
77
+ // Metadata removed - HDFC API may not accept nested objects
78
+ console.log(`[HDFC Client] Initiate - Request URL: ${requestUrl}`);
79
+ console.log(`[HDFC Client] Initiate - Request Payload: ${JSON.stringify(requestPayload)}`);
80
+ const response = await this.axios.post("/session", requestPayload);
81
+ console.log(`[HDFC Client] Initiate - Raw Axios Response Status: ${response.status}`);
82
+ console.log(`[HDFC Client] Initiate - Raw Axios Response Headers: ${JSON.stringify(response.headers)}`);
83
+ console.log(`[HDFC Client] Initiate - Response Data: ${JSON.stringify(response.data)}`);
84
+ const responseData = response.data;
85
+ console.log(`[HDFC Client] Initiate - Returning response data: ${JSON.stringify(responseData)}`);
86
+ return responseData;
67
87
  }
68
88
  catch (error) {
89
+ // Log full error details including request payload for debugging
90
+ const axiosError = error;
91
+ if (axiosError.response) {
92
+ console.error(`[HDFC Client] Initiate - Error Response Status: ${axiosError.response.status}`);
93
+ console.error(`[HDFC Client] Initiate - Error Response Data: ${JSON.stringify(axiosError.response.data)}`);
94
+ console.error(`[HDFC Client] Initiate - Error Code: ${axiosError.response.data?.error_code || 'N/A'}`);
95
+ console.error(`[HDFC Client] Initiate - Error Message: ${axiosError.response.data?.error_message || axiosError.response.data?.message || 'N/A'}`);
96
+ }
97
+ console.error(`[HDFC Client] Initiate - Full Error:`, error);
98
+ // handleError will throw, so this is unreachable but satisfies TypeScript
69
99
  (0, handle_error_1.handleError)(error);
70
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to initiate payment with HDFC");
100
+ throw error; // Unreachable, but satisfies TypeScript's return type check
71
101
  }
72
102
  }
73
103
  /**
@@ -90,8 +120,9 @@ class HDFCClient {
90
120
  return response.data;
91
121
  }
92
122
  catch (error) {
123
+ // handleError will throw, so this is unreachable but satisfies TypeScript
93
124
  (0, handle_error_1.handleError)(error);
94
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to authorize payment with HDFC");
125
+ throw error; // Unreachable, but satisfies TypeScript's return type check
95
126
  }
96
127
  }
97
128
  /**
@@ -106,8 +137,9 @@ class HDFCClient {
106
137
  return response.data;
107
138
  }
108
139
  catch (error) {
140
+ // handleError will throw, so this is unreachable but satisfies TypeScript
109
141
  (0, handle_error_1.handleError)(error);
110
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to capture payment with HDFC");
142
+ throw error; // Unreachable, but satisfies TypeScript's return type check
111
143
  }
112
144
  }
113
145
  /**
@@ -115,33 +147,32 @@ class HDFCClient {
115
147
  */
116
148
  async refund(data) {
117
149
  try {
118
- const response = await this.axios.post(`/payments/${data.transaction_id}/refund`, {
119
- merchant_id: this.merchantId,
150
+ const requestPayload = {
151
+ order_id: data.order_id,
120
152
  amount: data.amount,
121
- reason: data.reason,
122
- });
153
+ unique_request_id: data.unique_request_id || `refund_${Date.now()}`,
154
+ };
155
+ const response = await this.axios.post(`/refunds`, requestPayload);
123
156
  return response.data;
124
157
  }
125
158
  catch (error) {
159
+ // handleError will throw, so this is unreachable but satisfies TypeScript
126
160
  (0, handle_error_1.handleError)(error);
127
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to refund payment with HDFC");
161
+ throw error; // Unreachable, but satisfies TypeScript's return type check
128
162
  }
129
163
  }
130
164
  /**
131
165
  * Get payment status
132
166
  */
133
- async getStatus(transactionId) {
167
+ async getStatus(orderId) {
134
168
  try {
135
- const response = await this.axios.get(`/payments/${transactionId}/status`, {
136
- params: {
137
- merchant_id: this.merchantId,
138
- },
139
- });
169
+ const response = await this.axios.get(`/orders/${orderId}`);
140
170
  return response.data;
141
171
  }
142
172
  catch (error) {
173
+ // handleError will throw, so this is unreachable but satisfies TypeScript
143
174
  (0, handle_error_1.handleError)(error);
144
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to get payment status from HDFC");
175
+ throw error; // Unreachable, but satisfies TypeScript's return type check
145
176
  }
146
177
  }
147
178
  /**
@@ -154,10 +185,11 @@ class HDFCClient {
154
185
  });
155
186
  }
156
187
  catch (error) {
188
+ // handleError will throw, so this is unreachable but satisfies TypeScript
157
189
  (0, handle_error_1.handleError)(error);
158
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Failed to cancel payment with HDFC");
190
+ throw error; // Unreachable, but satisfies TypeScript's return type check
159
191
  }
160
192
  }
161
193
  }
162
194
  exports.default = HDFCClient;
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2hkZmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTRDO0FBQzVDLDJDQUE2QztBQUM3QyxpREFBNEM7QUFjNUMsTUFBcUIsVUFBVTtJQVE3QixZQUFZLE9BQTBCO1FBRjlCLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFHeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNFQUFzRSxDQUN2RSxDQUFBO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUE7UUFFbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZO1lBQy9DLENBQUMsQ0FBQyxzQ0FBc0M7WUFDeEMsQ0FBQyxDQUFDLDhDQUE4QyxDQUFBO1FBRWxELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQztZQUN4QixPQUFPO1lBQ1AsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7WUFDRCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQTtRQUVGLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsS0FB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
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2hkZmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQXdEO0FBQ3hELDJDQUE2QztBQUM3QyxpREFBNEM7QUFlNUMsTUFBcUIsVUFBVTtJQVE3QixZQUFZLE9BQTBCO1FBRjlCLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFHeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDaEYsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0ZBQWtGLENBQ25GLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFBO1FBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUE7UUFFbkQsa0RBQWtEO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWTtZQUMvQyxDQUFDLENBQUMsbUNBQW1DO1lBQ3JDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQTtRQUUxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDeEIsT0FBTztZQUNQLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCO1lBQ0QsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUE7UUFFRixpQ0FBaUM7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
@@ -3,9 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const utils_1 = require("@medusajs/utils");
6
+ const utils_1 = require("@medusajs/framework/utils");
7
7
  const client_1 = __importDefault(require("./client"));
8
8
  class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
9
+ static validateOptions(options) {
10
+ if (!(0, utils_1.isDefined)(options.merchant_id)) {
11
+ throw new Error("Required option `merchant_id` is missing in HDFC plugin");
12
+ }
13
+ if (!(0, utils_1.isDefined)(options.api_key)) {
14
+ throw new Error("Required option `api_key` is missing in HDFC plugin");
15
+ }
16
+ if (!(0, utils_1.isDefined)(options.payment_page_client_id)) {
17
+ throw new Error("Required option `payment_page_client_id` is missing in HDFC plugin");
18
+ }
19
+ }
9
20
  constructor({ logger }, options) {
10
21
  super({}, options);
11
22
  this.logger_ = logger;
@@ -13,113 +24,176 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
13
24
  this.client = new client_1.default({
14
25
  merchant_id: options.merchant_id,
15
26
  api_key: options.api_key,
16
- secret_key: options.secret_key,
27
+ payment_page_client_id: options.payment_page_client_id,
28
+ response_key: options.response_key,
17
29
  environment: options.environment || "sandbox",
18
30
  });
19
31
  }
32
+ buildError(message, error) {
33
+ const errorMessage = error instanceof Error ? error.message : String(error);
34
+ return new Error(`${message}: ${errorMessage}`.trim());
35
+ }
20
36
  /**
21
37
  * Initialize a payment session
22
38
  */
23
39
  async initiatePayment(context) {
24
40
  try {
25
- const { order_id, amount, currency, customer, return_url, cancel_url } = context;
26
- if (!order_id || !amount || !currency) {
27
- return {
28
- error: "Missing required fields: order_id, amount, currency",
29
- };
41
+ this.logger_.info(`[HDFC Payment] Initiate - Context received: ${JSON.stringify(context)}`);
42
+ // Extract from top level or nested context structure (Medusa v2 format)
43
+ // Following Stripe's pattern of extracting typed parameters from context
44
+ const nestedContext = context.context || {};
45
+ const extractedAmount = context.amount || nestedContext.amount;
46
+ const extractedCurrencyCode = context.currency_code || nestedContext.currency_code;
47
+ const data = context.data;
48
+ // Extract session_id from multiple possible locations
49
+ const topLevelData = data;
50
+ const nestedData = nestedContext.data;
51
+ const sessionId = topLevelData?.session_id ||
52
+ nestedData?.session_id ||
53
+ undefined;
54
+ const customer = context.customer || nestedContext.customer;
55
+ const returnUrl = context.return_url || nestedContext.return_url;
56
+ const cancelUrl = context.cancel_url || nestedContext.cancel_url;
57
+ // Use session_id as order_id if order_id is not available
58
+ const order_id = context.order_id || sessionId || nestedContext.idempotency_key;
59
+ // Convert currency to uppercase (HDFC expects "INR" not "inr")
60
+ const currency = extractedCurrencyCode ? extractedCurrencyCode.toUpperCase() : undefined;
61
+ this.logger_.info(`[HDFC Payment] Initiate - Extracted values: order_id=${order_id}, amount=${extractedAmount}, currency=${currency}, sessionId=${sessionId}`);
62
+ if (!order_id || !extractedAmount || !currency) {
63
+ this.logger_.warn(`[HDFC Payment] Initiate - Missing required fields. order_id: ${order_id}, amount: ${extractedAmount}, currency: ${currency}`);
64
+ throw this.buildError("Missing required fields: order_id (or session_id), amount, currency_code", new Error("Missing required fields"));
30
65
  }
31
- const response = await this.client.initiate({
66
+ const customerId = customer?.id || undefined;
67
+ const customerEmail = customer?.email || undefined;
68
+ const customerPhone = customer?.phone || undefined;
69
+ // Build return URL with payment session ID for frontend linking
70
+ const baseReturnUrl = returnUrl || this.options_.return_url || "";
71
+ const returnUrlWithSession = sessionId
72
+ ? `${baseReturnUrl}${baseReturnUrl.includes('?') ? '&' : '?'}payment_session_id=${sessionId}`
73
+ : baseReturnUrl;
74
+ // Build request data, only including fields with actual values (no undefined/null)
75
+ const requestData = {
32
76
  order_id,
33
- amount: Math.round(amount),
77
+ amount: Math.round(extractedAmount),
34
78
  currency,
35
- customer_email: customer?.email,
36
- customer_phone: customer?.phone,
37
- return_url: return_url || this.options_.return_url,
38
- cancel_url: cancel_url || this.options_.cancel_url,
39
- metadata: {
40
- order_id,
41
- },
42
- });
79
+ return_url: returnUrlWithSession,
80
+ ...(customerId && { customer_id: customerId }),
81
+ ...(customerEmail && { customer_email: customerEmail }),
82
+ ...(customerPhone && { customer_phone: customerPhone }),
83
+ };
84
+ // Note: Metadata removed as HDFC API might not accept nested objects
85
+ // If needed, metadata can be added as flat key-value pairs
86
+ this.logger_.info(`[HDFC Payment] Initiate - Request to HDFC API: ${JSON.stringify(requestData)}`);
87
+ const response = await this.client.initiate(requestData);
88
+ this.logger_.info(`[HDFC Payment] Initiate - API Response received: ${JSON.stringify(response)}`);
89
+ // Map payment_links.web to payment_url (official API structure)
90
+ const paymentUrl = response.payment_links?.web;
91
+ this.logger_.info(`[HDFC Payment] Initiate - Payment URL extracted: ${paymentUrl ? paymentUrl : 'NOT FOUND'}`);
92
+ this.logger_.info(`[HDFC Payment] Initiate - Response has payment_links.web: ${!!response.payment_links?.web}`);
93
+ if (!paymentUrl) {
94
+ this.logger_.warn(`[HDFC Payment] Initiate - HDFC API did not return payment_links.web for order ${order_id}. Response: ${JSON.stringify(response)}`);
95
+ throw this.buildError("HDFC payment gateway did not return a payment URL. Please check your HDFC API configuration and ensure the session endpoint returns 'payment_links.web'.", new Error("Payment URL not found in response"));
96
+ }
97
+ // Store HDFC order_id and Medusa session_id in payment session data
98
+ // This allows authorizePayment to link back to the correct HDFC order
99
+ // Use response.id (HDFC order ID like "ordeh_...") as the primary order_id for status checks
100
+ // response.order_id is the Medusa session ID we sent
101
+ const hdfcOrderId = response.id || response.order_id;
102
+ const finalData = {
103
+ order_id: hdfcOrderId, // HDFC order_id (response.id) - used to check status
104
+ payment_url: paymentUrl,
105
+ session_id: sessionId, // Medusa payment session ID (for reference)
106
+ hdfc_order_id: hdfcOrderId, // Explicit HDFC order_id (alias for clarity)
107
+ medusa_session_id: response.order_id, // The Medusa session ID we sent to HDFC
108
+ };
109
+ this.logger_.info(`[HDFC Payment] Initiate - Final response data: ${JSON.stringify(finalData)}`);
110
+ this.logger_.info(`[HDFC Payment] Initiate - Stored HDFC order_id: ${hdfcOrderId}, Medusa session_id: ${sessionId}`);
43
111
  return {
44
- data: {
45
- payment_id: response.payment_id,
46
- order_id: response.order_id,
47
- payment_url: response.payment_url || response.redirect_url,
48
- },
112
+ data: finalData,
49
113
  };
50
114
  }
51
115
  catch (error) {
52
116
  this.logger_.error("HDFC initiate payment error:", error);
53
- return {
54
- error: error.message || "Failed to initiate payment",
55
- };
117
+ throw this.buildError("An error occurred in InitiatePayment", error);
56
118
  }
57
119
  }
58
120
  /**
59
121
  * Authorize a payment
122
+ * Note: With HDFC, authorization happens on the payment page.
123
+ * This method checks the order status to see if payment was completed.
60
124
  */
61
125
  async authorizePayment(paymentSessionData, context) {
62
126
  try {
63
- const { order_id, amount, currency, customer, billing_address } = context;
64
- if (!order_id || !amount || !currency) {
65
- return {
66
- error: "Missing required fields: order_id, amount, currency",
67
- };
127
+ // Priority: Use HDFC order_id from payment session data (stored during initiate)
128
+ // The order_id should be response.id from HDFC API (e.g., "ordeh_...")
129
+ // Fallback: Try to extract from context or URL params
130
+ const orderId = paymentSessionData.order_id ||
131
+ paymentSessionData.hdfc_order_id ||
132
+ context.order_id ||
133
+ context.hdfc_order_id;
134
+ this.logger_.info(`[HDFC Payment] Authorize - Payment session data: ${JSON.stringify(paymentSessionData)}`);
135
+ this.logger_.info(`[HDFC Payment] Authorize - Context: ${JSON.stringify(context)}`);
136
+ this.logger_.info(`[HDFC Payment] Authorize - Extracted order_id: ${orderId}`);
137
+ if (!orderId) {
138
+ this.logger_.warn(`[HDFC Payment] Authorize - Missing order_id. Payment session data keys: ${Object.keys(paymentSessionData).join(', ')}`);
139
+ throw this.buildError("Missing order_id in payment session data. The HDFC order_id should be stored during payment initiation.", new Error("Missing order_id"));
68
140
  }
69
- const response = await this.client.authorize({
70
- order_id,
71
- amount: Math.round(amount),
72
- currency,
73
- customer_email: customer?.email,
74
- customer_phone: customer?.phone,
75
- billing_address,
76
- return_url: this.options_.return_url,
77
- cancel_url: this.options_.cancel_url,
78
- metadata: {
79
- order_id,
80
- },
81
- });
141
+ // Check the order status (authorization happens on HDFC payment page)
142
+ this.logger_.info(`[HDFC Payment] Authorize - Checking HDFC order status for order_id: ${orderId}`);
143
+ const response = await this.client.getStatus(orderId);
144
+ // Map HDFC status to Medusa status
145
+ let medusaStatus = "pending";
146
+ if (response.status === "CHARGED") {
147
+ medusaStatus = "authorized";
148
+ this.logger_.info(`[HDFC Payment] Authorize - Payment CHARGED, returning authorized status. Order will be created after checkout completion.`);
149
+ }
150
+ else if (response.status === "PENDING" || response.status === "PENDING_VBV") {
151
+ medusaStatus = "pending";
152
+ this.logger_.info(`[HDFC Payment] Authorize - Payment status: ${response.status}, returning pending status.`);
153
+ }
154
+ else if (response.status === "AUTHORIZATION_FAILED" || response.status === "AUTHENTICATION_FAILED") {
155
+ medusaStatus = "error";
156
+ this.logger_.warn(`[HDFC Payment] Authorize - Payment failed: ${response.status}`);
157
+ }
158
+ else {
159
+ this.logger_.warn(`[HDFC Payment] Authorize - Unknown HDFC status: ${response.status}, returning pending`);
160
+ }
161
+ this.logger_.info(`[HDFC Payment] Authorize - Final status: ${medusaStatus}, HDFC status: ${response.status}`);
162
+ this.logger_.info(`[HDFC Payment] Authorize - IMPORTANT: After authorization, frontend must call cart.complete() to create the order`);
82
163
  return {
83
- status: (response.status === "authorized" ? "authorized" : "pending"),
164
+ status: medusaStatus,
84
165
  data: {
85
- transaction_id: response.transaction_id,
86
- payment_id: response.payment_id,
87
166
  order_id: response.order_id,
88
167
  amount: response.amount,
89
168
  currency: response.currency,
90
169
  status: response.status,
91
- payment_url: response.payment_url || response.redirect_url,
92
170
  },
93
171
  };
94
172
  }
95
173
  catch (error) {
96
174
  this.logger_.error("HDFC authorize payment error:", error);
97
- return {
98
- error: error.message || "Failed to authorize payment",
99
- };
175
+ throw this.buildError("An error occurred in authorizePayment", error);
100
176
  }
101
177
  }
102
178
  /**
103
179
  * Capture an authorized payment
180
+ * Note: With HDFC, payment is captured automatically when authorized.
181
+ * This method checks the order status to confirm capture.
104
182
  */
105
183
  async capturePayment(paymentSessionData) {
106
184
  try {
107
- const transactionId = paymentSessionData.transaction_id;
108
- if (!transactionId) {
109
- return {
110
- error: "Missing transaction_id in payment session data",
111
- };
185
+ const orderId = paymentSessionData.order_id || paymentSessionData.transaction_id;
186
+ if (!orderId) {
187
+ throw this.buildError("Missing order_id in payment session data", new Error("Missing order_id"));
112
188
  }
113
- const amount = paymentSessionData.amount;
114
- const response = await this.client.capture({
115
- transaction_id: transactionId,
116
- amount: amount ? Math.round(amount) : undefined,
117
- });
189
+ // HDFC captures automatically when payment is successful
190
+ // Just check the order status
191
+ const response = await this.client.getStatus(orderId);
192
+ // If status is CHARGED, payment is captured
193
+ const isCaptured = response.status === "CHARGED";
118
194
  return {
119
- status: "captured",
195
+ status: isCaptured ? "captured" : "pending",
120
196
  data: {
121
- transaction_id: response.transaction_id,
122
- payment_id: response.payment_id,
123
197
  order_id: response.order_id,
124
198
  amount: response.amount,
125
199
  currency: response.currency,
@@ -129,9 +203,7 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
129
203
  }
130
204
  catch (error) {
131
205
  this.logger_.error("HDFC capture payment error:", error);
132
- return {
133
- error: error.message || "Failed to capture payment",
134
- };
206
+ throw this.buildError("An error occurred in capturePayment", error);
135
207
  }
136
208
  }
137
209
  /**
@@ -139,22 +211,18 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
139
211
  */
140
212
  async refundPayment(paymentSessionData, refundAmount) {
141
213
  try {
142
- const transactionId = paymentSessionData.transaction_id;
143
- if (!transactionId) {
144
- return {
145
- error: "Missing transaction_id in payment session data",
146
- };
214
+ const orderId = paymentSessionData.order_id || paymentSessionData.transaction_id;
215
+ if (!orderId) {
216
+ throw this.buildError("Missing order_id in payment session data", new Error("Missing order_id"));
147
217
  }
148
218
  const response = await this.client.refund({
149
- transaction_id: transactionId,
219
+ order_id: orderId,
150
220
  amount: Math.round(refundAmount),
151
- reason: "Customer refund request",
152
221
  });
153
222
  return {
154
223
  status: "captured",
155
224
  data: {
156
- transaction_id: response.transaction_id,
157
- refund_id: response.refund_id,
225
+ order_id: response.order_id,
158
226
  amount: response.amount,
159
227
  currency: response.currency,
160
228
  status: response.status,
@@ -163,9 +231,7 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
163
231
  }
164
232
  catch (error) {
165
233
  this.logger_.error("HDFC refund payment error:", error);
166
- return {
167
- error: error.message || "Failed to refund payment",
168
- };
234
+ throw this.buildError("An error occurred in refundPayment", error);
169
235
  }
170
236
  }
171
237
  /**
@@ -173,26 +239,43 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
173
239
  */
174
240
  async cancelPayment(paymentSessionData) {
175
241
  try {
176
- const transactionId = paymentSessionData.transaction_id;
177
- if (!transactionId) {
242
+ // Try to find HDFC order ID from multiple possible fields
243
+ const orderId = paymentSessionData.order_id ||
244
+ paymentSessionData.hdfc_order_id ||
245
+ paymentSessionData.transaction_id;
246
+ // If no order_id exists, this payment session was never successfully initiated
247
+ // Return success to allow cleanup without errors
248
+ if (!orderId) {
249
+ this.logger_.warn(`[HDFC Payment] Cancel - No order_id found in payment session data. Session may not have been fully initialized. Keys: ${Object.keys(paymentSessionData).join(', ')}`);
178
250
  return {
179
- error: "Missing transaction_id in payment session data",
251
+ status: "canceled",
252
+ data: {
253
+ status: "cancelled",
254
+ note: "Payment session was not fully initialized",
255
+ },
180
256
  };
181
257
  }
182
- await this.client.cancel(transactionId);
258
+ // Note: HDFC API may not have a cancel endpoint, this is a placeholder
259
+ // In practice, payments are typically cancelled by not completing them
260
+ try {
261
+ await this.client.cancel(orderId);
262
+ }
263
+ catch (cancelError) {
264
+ // If cancel fails (e.g., order doesn't exist or already cancelled), log but don't fail
265
+ this.logger_.warn(`[HDFC Payment] Cancel - Failed to cancel order ${orderId} with HDFC API: ${cancelError}`);
266
+ // Continue to return success since the session is being cleaned up
267
+ }
183
268
  return {
184
269
  status: "canceled",
185
270
  data: {
186
- transaction_id: transactionId,
271
+ order_id: orderId,
187
272
  status: "cancelled",
188
273
  },
189
274
  };
190
275
  }
191
276
  catch (error) {
192
277
  this.logger_.error("HDFC cancel payment error:", error);
193
- return {
194
- error: error.message || "Failed to cancel payment",
195
- };
278
+ throw this.buildError("An error occurred in cancelPayment", error);
196
279
  }
197
280
  }
198
281
  /**
@@ -200,24 +283,23 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
200
283
  */
201
284
  async getPaymentStatus(paymentSessionData) {
202
285
  try {
203
- const transactionId = paymentSessionData.transaction_id;
204
- if (!transactionId) {
286
+ const orderId = paymentSessionData.order_id || paymentSessionData.transaction_id;
287
+ if (!orderId) {
205
288
  return "error";
206
289
  }
207
- const response = await this.client.getStatus(transactionId);
208
- const status = response.status.toLowerCase();
209
- if (status === "authorized" || status === "captured") {
290
+ const response = await this.client.getStatus(orderId);
291
+ // Map HDFC statuses to Medusa statuses
292
+ // HDFC statuses: CHARGED, PENDING, PENDING_VBV, AUTHORIZATION_FAILED, AUTHENTICATION_FAILED
293
+ const status = response.status.toUpperCase();
294
+ if (status === "CHARGED") {
210
295
  return "authorized";
211
296
  }
212
- if (status === "pending" || status === "processing") {
297
+ if (status === "PENDING" || status === "PENDING_VBV") {
213
298
  return "pending";
214
299
  }
215
- if (status === "failed" || status === "error") {
300
+ if (status === "AUTHORIZATION_FAILED" || status === "AUTHENTICATION_FAILED") {
216
301
  return "error";
217
302
  }
218
- if (status === "cancelled" || status === "canceled") {
219
- return "canceled";
220
- }
221
303
  return "requires_more";
222
304
  }
223
305
  catch (error) {
@@ -230,26 +312,26 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
230
312
  */
231
313
  async retrievePayment(paymentSessionData) {
232
314
  try {
233
- const transactionId = paymentSessionData.transaction_id;
234
- if (!transactionId) {
235
- return {
236
- error: "Missing transaction_id in payment session data",
237
- };
315
+ const orderId = paymentSessionData.order_id || paymentSessionData.transaction_id;
316
+ if (!orderId) {
317
+ throw this.buildError("Missing order_id in payment session data", new Error("Missing order_id"));
318
+ }
319
+ const response = await this.client.getStatus(orderId);
320
+ // Map HDFC status to Medusa status
321
+ // HDFC statuses: CHARGED, PENDING, PENDING_VBV, AUTHORIZATION_FAILED, AUTHENTICATION_FAILED
322
+ let medusaStatus = "requires_more";
323
+ if (response.status === "CHARGED") {
324
+ medusaStatus = "authorized";
325
+ }
326
+ else if (response.status === "PENDING" || response.status === "PENDING_VBV") {
327
+ medusaStatus = "pending";
328
+ }
329
+ else if (response.status === "AUTHORIZATION_FAILED" || response.status === "AUTHENTICATION_FAILED") {
330
+ medusaStatus = "error";
238
331
  }
239
- const response = await this.client.getStatus(transactionId);
240
332
  return {
241
- status: (response.status === "authorized" || response.status === "captured"
242
- ? "authorized"
243
- : response.status === "pending" || response.status === "processing"
244
- ? "pending"
245
- : response.status === "failed" || response.status === "error"
246
- ? "error"
247
- : response.status === "cancelled" || response.status === "canceled"
248
- ? "canceled"
249
- : "requires_more"),
333
+ status: medusaStatus,
250
334
  data: {
251
- transaction_id: response.transaction_id,
252
- payment_id: response.payment_id,
253
335
  order_id: response.order_id,
254
336
  amount: response.amount,
255
337
  currency: response.currency,
@@ -262,9 +344,7 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
262
344
  }
263
345
  catch (error) {
264
346
  this.logger_.error("HDFC retrieve payment error:", error);
265
- return {
266
- error: error.message || "Failed to retrieve payment",
267
- };
347
+ throw this.buildError("An error occurred in retrievePayment", error);
268
348
  }
269
349
  }
270
350
  /**
@@ -277,9 +357,7 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
277
357
  }
278
358
  catch (error) {
279
359
  this.logger_.error("HDFC update payment error:", error);
280
- return {
281
- error: error.message || "Failed to update payment",
282
- };
360
+ throw this.buildError("An error occurred in updatePayment", error);
283
361
  }
284
362
  }
285
363
  /**
@@ -288,13 +366,50 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
288
366
  async deletePayment(paymentSessionData) {
289
367
  try {
290
368
  // Cancel the payment if it's still pending
291
- return await this.cancelPayment(paymentSessionData);
369
+ // cancelPayment now handles missing order_id gracefully
370
+ const cancelResult = await this.cancelPayment(paymentSessionData);
371
+ // Check if cancelResult is an error
372
+ if ('error' in cancelResult) {
373
+ // If it's an error, check if we can still clean up gracefully
374
+ const orderId = paymentSessionData.order_id ||
375
+ paymentSessionData.hdfc_order_id ||
376
+ paymentSessionData.transaction_id;
377
+ if (!orderId) {
378
+ // Session was never initialized, safe to delete
379
+ return {
380
+ status: "canceled",
381
+ data: {
382
+ status: "cancelled",
383
+ note: "Payment session was not fully initialized",
384
+ },
385
+ };
386
+ }
387
+ // Re-throw the error if we can't handle it gracefully
388
+ return cancelResult;
389
+ }
390
+ return {
391
+ status: cancelResult.status,
392
+ data: cancelResult.data,
393
+ };
292
394
  }
293
395
  catch (error) {
294
396
  this.logger_.error("HDFC delete payment error:", error);
295
- return {
296
- error: error.message || "Failed to delete payment",
297
- };
397
+ // If cancelPayment fails, still try to return a success response for cleanup
398
+ // This prevents workflow failures when cleaning up old/incomplete sessions
399
+ const orderId = paymentSessionData.order_id ||
400
+ paymentSessionData.hdfc_order_id ||
401
+ paymentSessionData.transaction_id;
402
+ if (!orderId) {
403
+ // Session was never initialized, safe to delete
404
+ return {
405
+ status: "canceled",
406
+ data: {
407
+ status: "cancelled",
408
+ note: "Payment session was not fully initialized",
409
+ },
410
+ };
411
+ }
412
+ throw this.buildError("An error occurred in deletePayment", error);
298
413
  }
299
414
  }
300
415
  /**
@@ -302,15 +417,13 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
302
417
  */
303
418
  async getPaymentData(paymentSessionData) {
304
419
  try {
305
- const transactionId = paymentSessionData.transaction_id;
306
- if (!transactionId) {
420
+ const orderId = paymentSessionData.order_id || paymentSessionData.transaction_id;
421
+ if (!orderId) {
307
422
  return paymentSessionData;
308
423
  }
309
- const response = await this.client.getStatus(transactionId);
424
+ const response = await this.client.getStatus(orderId);
310
425
  return {
311
426
  ...paymentSessionData,
312
- transaction_id: response.transaction_id,
313
- payment_id: response.payment_id,
314
427
  order_id: response.order_id,
315
428
  amount: response.amount,
316
429
  currency: response.currency,
@@ -391,4 +504,4 @@ class HDFCPaymentProviderService extends utils_1.AbstractPaymentProvider {
391
504
  }
392
505
  HDFCPaymentProviderService.identifier = "hdfc";
393
506
  exports.default = HDFCPaymentProviderService;
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvaGRmYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQXNFO0FBWXRFLHNEQUFpQztBQU9qQyxNQUFNLDBCQUEyQixTQUFRLCtCQUF1QjtJQU85RCxZQUNFLEVBQUUsTUFBTSxFQUF3QixFQUNoQyxPQUE0QjtRQUU1QixLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQkFBVSxDQUFDO1lBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1lBQzlCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLFNBQVM7U0FDOUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBZ0M7UUFFaEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQ3BFLE9BVUMsQ0FBQTtZQUVILElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsT0FBTztvQkFDTCxLQUFLLEVBQUUscURBQXFEO2lCQUM3RCxDQUFBO1lBQ0gsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQzFDLFFBQVE7Z0JBQ1IsTUFBTSxFQUFFLElBQUks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
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvaGRmYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBU0EscURBR2tDO0FBR2xDLHNEQUFpQztBQU9qQyxNQUFNLDBCQUEyQixTQUFRLCtCQUF1QjtJQU85RCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQTRCO1FBQ2pELElBQUksQ0FBQyxJQUFBLGlCQUFTLEVBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBQSxpQkFBUyxFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQTtRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUEsaUJBQVMsRUFBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQTtRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQ0UsRUFBRSxNQUFNLEVBQXdCLEVBQ2hDLE9BQTRCO1FBRTVCLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFVLENBQUM7WUFDM0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixzQkFBc0IsRUFBRSxPQUFPLENBQUMsc0JBQXNCO1lBQ3RELFlBQVksRUFBRSxPQUFPLENBQUMsWUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-hdfc-payment",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "HDFC Payment Gateway Provider Plugin for MedusaJS 2",
5
5
  "author": "",
6
6
  "homepage": "",