@nicogorga/medusa-payment-mercadopago 0.2.1 → 0.2.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.
|
@@ -74,9 +74,16 @@ class MercadopagoProviderService extends utils_1.AbstractPaymentProvider {
|
|
|
74
74
|
throw new utils_1.MedusaError(utils_1.MedusaErrorTypes.INVALID_DATA, "No payment session id found in data");
|
|
75
75
|
}
|
|
76
76
|
const payment = new mercadopago_1.Payment(this.client_);
|
|
77
|
-
const results = (await payment.search({
|
|
78
|
-
options: {
|
|
79
|
-
|
|
77
|
+
const results = ((await payment.search({
|
|
78
|
+
options: {
|
|
79
|
+
external_reference: paymentSessionId,
|
|
80
|
+
sort: 'date_approved',
|
|
81
|
+
criteria: 'desc'
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
// Ideally, this would be done in the call to Mercado Pago, but they don't expose an option
|
|
85
|
+
// to filter based on status
|
|
86
|
+
)?.results ?? []).filter(payment => payment.status === 'approved');
|
|
80
87
|
if (!results.length) {
|
|
81
88
|
this.logger_.warn(`No payment found in Mercado Pago for payment session: ${paymentSessionId}\n This could be caused by lag in Mercado Pago's system and doesn't mean the payment was not created`);
|
|
82
89
|
}
|
|
@@ -102,25 +109,24 @@ class MercadopagoProviderService extends utils_1.AbstractPaymentProvider {
|
|
|
102
109
|
return { data: paymentData };
|
|
103
110
|
}
|
|
104
111
|
async getPaymentStatus(input) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const paymentData = await payment.get({ id: paymentId });
|
|
110
|
-
status = paymentData.status || "";
|
|
111
|
-
}
|
|
112
|
-
switch (status) {
|
|
112
|
+
const paymentId = input.data?.id;
|
|
113
|
+
const payment = new mercadopago_1.Payment(this.client_);
|
|
114
|
+
const paymentData = await payment.get({ id: paymentId });
|
|
115
|
+
switch (paymentData.status) {
|
|
113
116
|
case "authorized":
|
|
114
|
-
return { status: "authorized" };
|
|
117
|
+
return { status: "authorized", data: paymentData };
|
|
115
118
|
case "approved":
|
|
116
|
-
return { status: "captured" };
|
|
119
|
+
return { status: "captured", data: paymentData };
|
|
117
120
|
case "cancelled":
|
|
118
121
|
case "refunded":
|
|
119
|
-
return { status: "canceled" };
|
|
122
|
+
return { status: "canceled", data: paymentData };
|
|
120
123
|
case "rejected":
|
|
121
|
-
return { status: "error"
|
|
124
|
+
return { status: "error", data: {
|
|
125
|
+
...paymentData,
|
|
126
|
+
error_message: this.sanitizeErrorMessage(paymentData)
|
|
127
|
+
} };
|
|
122
128
|
default:
|
|
123
|
-
return { status: "pending" };
|
|
129
|
+
return { status: "pending", data: paymentData };
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
132
|
async refundPayment(input) {
|
|
@@ -193,28 +199,36 @@ class MercadopagoProviderService extends utils_1.AbstractPaymentProvider {
|
|
|
193
199
|
if (!customer) {
|
|
194
200
|
throw new utils_1.MedusaError(utils_1.MedusaErrorTypes.INVALID_DATA, "No customer provided while creating account holder");
|
|
195
201
|
}
|
|
202
|
+
const customerClient = new mercadopago_1.Customer(this.client_);
|
|
203
|
+
let mercadopagoCustomer;
|
|
196
204
|
try {
|
|
197
|
-
const customerClient = new mercadopago_1.Customer(this.client_);
|
|
198
205
|
const body = {
|
|
199
206
|
email: customer.email,
|
|
200
207
|
first_name: customer.first_name || undefined,
|
|
201
208
|
last_name: customer.last_name || undefined,
|
|
202
209
|
date_registered: new Date().toISOString(),
|
|
203
210
|
};
|
|
204
|
-
|
|
211
|
+
mercadopagoCustomer = await customerClient.create({
|
|
205
212
|
body: body,
|
|
206
213
|
requestOptions: {
|
|
207
214
|
idempotencyKey: idempotency_key,
|
|
208
215
|
},
|
|
209
216
|
});
|
|
210
|
-
return {
|
|
211
|
-
id: createdCustomer.id,
|
|
212
|
-
data: createdCustomer
|
|
213
|
-
};
|
|
214
217
|
}
|
|
215
|
-
catch (
|
|
216
|
-
|
|
218
|
+
catch (e) {
|
|
219
|
+
const error = e;
|
|
220
|
+
if (!!error.cause?.find(c => c.code === '101')) {
|
|
221
|
+
const { results } = await customerClient.search({ options: { email: customer.email } });
|
|
222
|
+
mercadopagoCustomer = results[0];
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
throw new utils_1.MedusaError(utils_1.MedusaErrorTypes.UNEXPECTED_STATE, "An error occurred while trying to create a Mercado Pago customer");
|
|
226
|
+
}
|
|
217
227
|
}
|
|
228
|
+
return {
|
|
229
|
+
id: mercadopagoCustomer.id,
|
|
230
|
+
data: mercadopagoCustomer
|
|
231
|
+
};
|
|
218
232
|
}
|
|
219
233
|
async updateAccountHolder({ context, }) {
|
|
220
234
|
const { account_holder, customer, idempotency_key } = context;
|
|
@@ -373,4 +387,4 @@ class MercadopagoProviderService extends utils_1.AbstractPaymentProvider {
|
|
|
373
387
|
}
|
|
374
388
|
MercadopagoProviderService.identifier = "mercadopago";
|
|
375
389
|
exports.default = MercadopagoProviderService;
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbWVyY2Fkby1wYWdvL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFPbUM7QUFnQ25DLDJEQUFnRztBQUloRyxtQ0FBb0M7QUFXcEMsTUFBTSwwQkFBMkIsU0FBUSwrQkFBMkM7SUFNbEYsWUFBWSxTQUErQixFQUFFLE9BQTJCO1FBQ3RFLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHFCQUFpQixDQUFDO1lBQ25DLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBeUI7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFBLGdCQUFRLEVBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLHdCQUFnQixDQUFDLFlBQVksRUFDN0IsMkRBQTJELENBQzVELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLEtBQTJCO1FBRTNCLE9BQU87WUFDTCxFQUFFLEVBQUUsRUFBRTtZQUNOLElBQUksRUFBRTtnQkFDSixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVO2dCQUNsQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDckI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENB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
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbWVyY2Fkby1wYWdvL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFPbUM7QUFnQ25DLDJEQUFnRztBQUloRyxtQ0FBb0M7QUFXcEMsTUFBTSwwQkFBMkIsU0FBUSwrQkFBMkM7SUFNbEYsWUFBWSxTQUErQixFQUFFLE9BQTJCO1FBQ3RFLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHFCQUFpQixDQUFDO1lBQ25DLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBeUI7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFBLGdCQUFRLEVBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLHdCQUFnQixDQUFDLFlBQVksRUFDN0IsMkRBQTJELENBQzVELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLEtBQTJCO1FBRTNCLE9BQU87WUFDTCxFQUFFLEVBQUUsRUFBRTtZQUNOLElBQUksRUFBRTtnQkFDSixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVO2dCQUNsQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDckI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENB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
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 0.2.2 - 2025-05-13
|
|
11
|
+
### Added
|
|
12
|
+
- Check if creating customer in MP fails because it already exists and if so, store it in Medusa
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- Fix authorizePayment, getting the approved payment in case of multiple attempts
|
|
16
|
+
|
|
10
17
|
## 0.2.1 - 2025-05-12
|
|
11
18
|
### Added
|
|
12
19
|
- New function to get a sanitized error message, based on the status and status_detail retuned in Mercado Pago PaymentResponse object
|
package/package.json
CHANGED
|
@@ -40,10 +40,10 @@ import {
|
|
|
40
40
|
import MercadoPagoConfig, { Customer, CustomerCard, Payment, PaymentRefund } from "mercadopago";
|
|
41
41
|
import { PaymentCreateRequest } from "mercadopago/dist/clients/payment/create/types";
|
|
42
42
|
import { PaymentSearchResult } from "mercadopago/dist/clients/payment/search/types";
|
|
43
|
-
import { MercadopagoOptions, MercadopagoWebhookPayload } from "../../types";
|
|
43
|
+
import { MercadopagoError, MercadopagoOptions, MercadopagoWebhookPayload } from "../../types";
|
|
44
44
|
import { createHmac } from "crypto";
|
|
45
45
|
import { Logger } from "@medusajs/medusa";
|
|
46
|
-
import { CustomerRequestBody } from "mercadopago/dist/clients/customer/commonTypes";
|
|
46
|
+
import { CustomerRequestBody, CustomerResponse } from "mercadopago/dist/clients/customer/commonTypes";
|
|
47
47
|
import { CustomerUpdateData } from "mercadopago/dist/clients/customer/update/types";
|
|
48
48
|
import { PostStoreMercadopagoPaymentType } from "../../api/store/mercadopago/payment/validators";
|
|
49
49
|
import { PaymentResponse } from "mercadopago/dist/clients/payment/commonTypes";
|
|
@@ -113,11 +113,17 @@ class MercadopagoProviderService extends AbstractPaymentProvider<MercadopagoOpti
|
|
|
113
113
|
|
|
114
114
|
const payment = new Payment(this.client_);
|
|
115
115
|
const results =
|
|
116
|
-
(
|
|
116
|
+
((
|
|
117
117
|
await payment.search({
|
|
118
|
-
options: {
|
|
118
|
+
options: {
|
|
119
|
+
external_reference: paymentSessionId,
|
|
120
|
+
sort: 'date_approved',
|
|
121
|
+
criteria: 'desc'
|
|
122
|
+
},
|
|
119
123
|
})
|
|
120
|
-
|
|
124
|
+
// Ideally, this would be done in the call to Mercado Pago, but they don't expose an option
|
|
125
|
+
// to filter based on status
|
|
126
|
+
)?.results ?? []).filter(payment => payment.status === 'approved');
|
|
121
127
|
if (!results.length) {
|
|
122
128
|
this.logger_.warn(
|
|
123
129
|
`No payment found in Mercado Pago for payment session: ${paymentSessionId}\n This could be caused by lag in Mercado Pago's system and doesn't mean the payment was not created`
|
|
@@ -153,27 +159,25 @@ class MercadopagoProviderService extends AbstractPaymentProvider<MercadopagoOpti
|
|
|
153
159
|
async getPaymentStatus(
|
|
154
160
|
input: GetPaymentStatusInput
|
|
155
161
|
): Promise<GetPaymentStatusOutput> {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const paymentId = input.data?.id;
|
|
160
|
-
const payment = new Payment(this.client_);
|
|
161
|
-
const paymentData = await payment.get({ id: paymentId as string });
|
|
162
|
-
status = paymentData.status || ""
|
|
163
|
-
}
|
|
162
|
+
const paymentId = input.data?.id;
|
|
163
|
+
const payment = new Payment(this.client_);
|
|
164
|
+
const paymentData = await payment.get({ id: paymentId as string }) as unknown as Record<string, unknown>;
|
|
164
165
|
|
|
165
|
-
switch (status) {
|
|
166
|
+
switch (paymentData.status) {
|
|
166
167
|
case "authorized":
|
|
167
|
-
return { status: "authorized" };
|
|
168
|
+
return { status: "authorized", data: paymentData };
|
|
168
169
|
case "approved":
|
|
169
|
-
return { status: "captured" };
|
|
170
|
+
return { status: "captured", data: paymentData };
|
|
170
171
|
case "cancelled":
|
|
171
172
|
case "refunded":
|
|
172
|
-
return { status: "canceled" };
|
|
173
|
+
return { status: "canceled", data: paymentData };
|
|
173
174
|
case "rejected":
|
|
174
|
-
return { status: "error"
|
|
175
|
+
return { status: "error", data: {
|
|
176
|
+
...paymentData,
|
|
177
|
+
error_message: this.sanitizeErrorMessage(paymentData as unknown as PaymentResponse)
|
|
178
|
+
}}
|
|
175
179
|
default:
|
|
176
|
-
return { status: "pending" };
|
|
180
|
+
return { status: "pending", data: paymentData };
|
|
177
181
|
}
|
|
178
182
|
}
|
|
179
183
|
|
|
@@ -269,8 +273,10 @@ class MercadopagoProviderService extends AbstractPaymentProvider<MercadopagoOpti
|
|
|
269
273
|
throw new MedusaError(MedusaErrorTypes.INVALID_DATA, "No customer provided while creating account holder")
|
|
270
274
|
}
|
|
271
275
|
|
|
276
|
+
const customerClient = new Customer(this.client_);
|
|
277
|
+
let mercadopagoCustomer: CustomerResponse | undefined
|
|
278
|
+
|
|
272
279
|
try {
|
|
273
|
-
const customerClient = new Customer(this.client_);
|
|
274
280
|
const body: CustomerRequestBody = {
|
|
275
281
|
email: customer.email,
|
|
276
282
|
first_name: customer.first_name || undefined,
|
|
@@ -278,19 +284,26 @@ class MercadopagoProviderService extends AbstractPaymentProvider<MercadopagoOpti
|
|
|
278
284
|
date_registered: new Date().toISOString(),
|
|
279
285
|
};
|
|
280
286
|
|
|
281
|
-
|
|
287
|
+
mercadopagoCustomer = await customerClient.create({
|
|
282
288
|
body: body,
|
|
283
289
|
requestOptions: {
|
|
284
290
|
idempotencyKey: idempotency_key,
|
|
285
291
|
},
|
|
286
292
|
});
|
|
293
|
+
} catch (e) {
|
|
294
|
+
const error = e as MercadopagoError
|
|
287
295
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
296
|
+
if (!!error.cause?.find(c => c.code === '101')) {
|
|
297
|
+
const { results } = await customerClient.search({ options: { email: customer.email}})
|
|
298
|
+
mercadopagoCustomer = results![0]
|
|
299
|
+
} else {
|
|
300
|
+
throw new MedusaError(MedusaErrorTypes.UNEXPECTED_STATE, "An error occurred while trying to create a Mercado Pago customer")
|
|
291
301
|
}
|
|
292
|
-
}
|
|
293
|
-
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return {
|
|
305
|
+
id: mercadopagoCustomer!.id!,
|
|
306
|
+
data: mercadopagoCustomer as unknown as Record<string, unknown>
|
|
294
307
|
}
|
|
295
308
|
}
|
|
296
309
|
|
package/src/types/index.ts
CHANGED