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()
197
197
return substr ($ this ->getNumber (), -4 , 4 ) ?: null ;
198
198
}
199
199
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
+
200
213
/**
201
214
* Credit Card Brand
202
215
*
Original file line number Diff line number Diff line change @@ -179,6 +179,20 @@ public function testGetNumberLastFourNonDigits()
179
179
$ this ->assertSame ('1234 ' , $ this ->card ->getNumberLastFour ());
180
180
}
181
181
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
+
182
196
public function testGetBrandDefault ()
183
197
{
184
198
$ card = new CreditCard ;
You can’t perform that action at this time.
0 commit comments