@@ -50,20 +50,22 @@ module ProcessOut {
5050 cardForm => {
5151 this . getCardDetailsSectionEventListeners ( )
5252
53- // Dynamically change scheme logo based on the card number
5453 cardForm . getNumberField ( ) . addEventListener ( "input" , e => {
55- const scheme = e . schemes [ 0 ]
56- const cardSchemeLogo = document . querySelector ( ".dco-card-scheme-logo" )
57-
58- if ( scheme && CARD_SCHEMES_ASSETS [ scheme ] ) {
59- cardSchemeLogo . removeAttribute ( "hidden" )
60-
61- cardSchemeLogo . setAttribute (
62- "src" ,
63- this . procesoutInstance . endpoint ( "js" , CARD_SCHEMES_ASSETS [ scheme ] ) ,
64- )
65- } else {
66- cardSchemeLogo . setAttribute ( "hidden" , "true" )
54+ if ( ! this . paymentMethod . card . scheme_selection_enabled ) {
55+ // Dynamically change scheme logo based on the card number
56+ const scheme = e . schemes [ 0 ]
57+ const cardSchemeLogo = document . querySelector ( ".dco-card-scheme-logo" )
58+
59+ if ( scheme && CARD_SCHEMES_ASSETS [ scheme ] ) {
60+ cardSchemeLogo . removeAttribute ( "hidden" )
61+
62+ cardSchemeLogo . setAttribute (
63+ "src" ,
64+ this . procesoutInstance . endpoint ( "js" , CARD_SCHEMES_ASSETS [ scheme ] ) ,
65+ )
66+ } else {
67+ cardSchemeLogo . setAttribute ( "hidden" , "true" )
68+ }
6769 }
6870
6971 this . validateCardRestrictions ( e . schemes || [ ] )
@@ -193,6 +195,8 @@ module ProcessOut {
193195 options . expiryAutoNext = false
194196 options . cardNumberAutoNext = true
195197 options . requireCVC = this . paymentMethod . card . cvc_required
198+ options . enableCardSchemeSelection = this . paymentMethod . card . scheme_selection_enabled
199+ options . preferredSchemes = this . paymentMethod . card . scheme_selection_default_order
196200
197201 return options
198202 }
@@ -434,7 +438,9 @@ module ProcessOut {
434438 } ,
435439 ] )
436440
437- HTMLElements . appendChildren ( cardNumberInput , [ cardSchemeLogo ] )
441+ if ( ! this . paymentMethod . card . scheme_selection_enabled ) {
442+ HTMLElements . appendChildren ( cardNumberInput , [ cardSchemeLogo ] )
443+ }
438444
439445 HTMLElements . appendChildren ( cardNumberInputWrapper , [
440446 cardNumberInput ,
@@ -722,23 +728,17 @@ module ProcessOut {
722728 if ( ! restrictToIins || restrictToIins . length === 0 || ! data ) {
723729 return
724730 }
731+
725732 const iin = data . card_iin || ""
726733
727734 if ( iin . length === 0 ) {
728735 this . setCardRestrictionState ( false )
729736 return
730737 }
731738
732- var isBlockedIin = false
739+ const isAllowedIin = restrictToIins . indexOf ( iin ) !== - 1
733740
734- restrictToIins . forEach ( function ( blockedIin ) {
735- if ( blockedIin === iin ) {
736- isBlockedIin = true
737- return
738- }
739- } )
740-
741- this . setCardRestrictionState ( isBlockedIin )
741+ this . setCardRestrictionState ( ! isAllowedIin )
742742 }
743743
744744 private validateCardRestrictions ( schemes : string [ ] ) {
@@ -753,18 +753,15 @@ module ProcessOut {
753753 return
754754 }
755755
756- var isBlockedScheme = false
756+ var hasAllowedScheme = false
757757
758- restrictToSchemes . forEach ( function ( blockedScheme ) {
759- schemes . forEach ( function ( scheme ) {
760- if ( blockedScheme === scheme ) {
761- isBlockedScheme = true
762- return
763- }
764- } )
758+ schemes . forEach ( function ( scheme ) {
759+ if ( restrictToSchemes . indexOf ( scheme ) !== - 1 ) {
760+ hasAllowedScheme = true
761+ }
765762 } )
766763
767- this . setCardRestrictionState ( isBlockedScheme )
764+ this . setCardRestrictionState ( ! hasAllowedScheme )
768765 }
769766
770767 private setCardRestrictionState ( isRestricted : boolean ) {
0 commit comments