File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed
Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -197,6 +197,19 @@ public function getNumberLastFour()
197197 return substr ($ this ->getNumber (), -4 , 4 ) ?: null ;
198198 }
199199
200+ /**
201+ * Returns a masked credit card number with only the last 4 chars visible
202+ *
203+ * @param string $mask Character to use in place of numbers
204+ * @return string
205+ */
206+ public function getNumberMasked ($ mask = 'X ' )
207+ {
208+ $ maskLength = strlen ($ this ->getNumber ()) - 4 ;
209+
210+ return str_repeat ($ mask , $ maskLength ) . $ this ->getNumberLastFour ();
211+ }
212+
200213 /**
201214 * Credit Card Brand
202215 *
Original file line number Diff line number Diff line change @@ -179,6 +179,20 @@ public function testGetNumberLastFourNonDigits()
179179 $ this ->assertSame ('1234 ' , $ this ->card ->getNumberLastFour ());
180180 }
181181
182+ public function testGetNumberMasked ()
183+ {
184+ $ this ->card ->setNumber ('4000000000001234 ' );
185+
186+ $ this ->assertSame ('XXXXXXXXXXXX1234 ' , $ this ->card ->getNumberMasked ());
187+ }
188+
189+ public function testGetNumberMaskedNonDigits ()
190+ {
191+ $ this ->card ->setNumber ('4000 0000 0000 12x34 ' );
192+
193+ $ this ->assertSame ('XXXXXXXXXXXX1234 ' , $ this ->card ->getNumberMasked ());
194+ }
195+
182196 public function testGetBrandDefault ()
183197 {
184198 $ card = new CreditCard ;
You can’t perform that action at this time.
0 commit comments