1
1
/* globals wc_pagarme_checkout */
2
-
2
+ /*jshint esversion: 8 */
3
3
let pagarmeCard = {
4
4
limitTokenize : 10 ,
5
5
tokenExpirationAttribute : 'data-pagarmecheckout-expiration' ,
6
6
cardNumberTarget : 'input[data-element="pagarme-card-number"]' ,
7
7
brandTarget : 'input[data-pagarmecheckout-element="brand-input"]' ,
8
8
valueTarget : 'input[data-pagarmecheckout-element="order-value"]' ,
9
9
installmentsTarget : '[data-pagarme-component="installments"]' ,
10
+ installmentsInfoTarget : '[data-pagarme-component="installments-info"]' ,
10
11
mundiCdn : 'https://cdn.mundipagg.com/assets/images/logos/brands/png/' ,
11
12
tokenElement : '[data-pagarmecheckout-element="token"]' ,
12
13
fieldsetCardElements : 'fieldset[data-pagarmecheckout="card"]' ,
@@ -36,7 +37,18 @@ let pagarmeCard = {
36
37
return jQuery ( '.wc_payment_method.payment_method_' + value ) ;
37
38
} ,
38
39
isPagarmePayment : function ( ) {
39
- return jQuery ( 'form .payment_methods input[name="payment_method"]:checked' ) . val ( ) . indexOf ( 'pagarme' ) ;
40
+ let paymentSelected = jQuery ( 'form .payment_methods input[name="payment_method"]:checked' ) ;
41
+ if ( paymentSelected . length <= 0 ) {
42
+ return false ;
43
+ }
44
+ paymentSelected = paymentSelected . val ( ) ;
45
+ if ( ! paymentSelected ) {
46
+ return false ;
47
+ }
48
+ if ( paymentSelected . indexOf ( 'pagarme' ) == '-1' ) {
49
+ return false ;
50
+ }
51
+ return paymentSelected . indexOf ( 'pagarme' ) ;
40
52
} ,
41
53
keyEventHandlerCard : function ( event ) {
42
54
this . clearToken ( event ) ;
@@ -244,22 +256,26 @@ let pagarmeCard = {
244
256
if ( ! elem ) {
245
257
return false ;
246
258
}
247
- let brand = elem . closest ( 'fieldset' ) . find ( this . brandTarget ) . val ( ) ;
259
+ const brand = elem . closest ( 'fieldset' ) . find ( this . brandTarget ) . val ( ) ;
248
260
let total = elem . closest ( 'fieldset' ) . find ( this . valueTarget ) . val ( ) ;
249
261
if ( total ) {
250
262
total = pagarmeCard . formatValue ( total ) ;
251
263
}
252
- let cardForm = elem . closest ( "fieldset" ) ;
253
- let select = cardForm . find ( this . installmentsTarget ) ;
254
- if ( ! total )
264
+ const cardForm = elem . closest ( "fieldset" ) ;
265
+ const select = cardForm . find ( this . installmentsTarget ) ;
266
+ const info = cardForm . find ( this . installmentsInfoTarget ) ;
267
+ if ( ! total ) {
255
268
total = cartTotal ;
269
+ }
256
270
if ( ( ! total ) ||
257
271
( select . data ( "type" ) === 2 && ! brand ) ||
258
- ( select . data ( "type" ) === 1 && elem . data ( 'element' ) !== "order-value" ) )
272
+ ( select . data ( "type" ) === 1 && elem . data ( 'element' ) !== "order-value" )
273
+ ) {
259
274
return false ;
260
- let storageName = btoa ( brand + total ) ;
275
+ }
276
+ const storageName = btoa ( brand + total ) ;
261
277
sessionStorage . removeItem ( storageName ) ;
262
- let storage = sessionStorage . getItem ( storageName ) ;
278
+ const storage = sessionStorage . getItem ( storageName ) ;
263
279
if ( storage ) {
264
280
select . html ( storage ) ;
265
281
} else {
@@ -272,7 +288,7 @@ let pagarmeCard = {
272
288
}
273
289
} ) ;
274
290
ajax . done ( function ( response ) {
275
- pagarmeCard . _done ( select , storageName , cardForm , response ) ;
291
+ pagarmeCard . _done ( select , info , storageName , cardForm , JSON . parse ( response ) ) ;
276
292
} ) ;
277
293
ajax . fail ( function ( ) {
278
294
pagarmeCard . _fail ( cardForm ) ;
@@ -282,8 +298,14 @@ let pagarmeCard = {
282
298
return true ;
283
299
} ,
284
300
285
- _done : function ( select , storageName , event , response ) {
286
- select . html ( response ) ;
301
+ _done : function ( select , info , storageName , event , response ) {
302
+ if ( info . length ) {
303
+ info . addClass ( 'pagarme-hidden' ) ;
304
+ if ( response . installmentsConfig > 1 ) {
305
+ info . removeClass ( 'pagarme-hidden' ) ;
306
+ }
307
+ }
308
+ select . html ( response . optionsHtml ) ;
287
309
sessionStorage . setItem ( storageName , response ) ;
288
310
this . removeLoader ( event ) ;
289
311
} ,
0 commit comments