Skip to content

Commit

Permalink
Merge pull request #5 from romatallinn/v0.0.5
Browse files Browse the repository at this point in the history
V0.0.5
  • Loading branch information
MrLightful authored Jun 10, 2024
2 parents 117842f + 176878c commit eb571cc
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 13 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# 0.0.4
## 0.0.5

- Fix validation for pre-defined test card numbers in sandbox mode.
Learn more: https://braspag.github.io/en/manual/braspag-pagador#test-cards-(simulado)

## 0.0.4

- Allow localized character sets for cardholder names

Expand Down
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.0.4"
version: "0.0.5"
clock:
dependency: transitive
description:
Expand Down
8 changes: 6 additions & 2 deletions lib/src/apps/sop/cielo_sop.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@ class CieloSOP {
language: _coreOptions.language);
CieloValidators.validateHolderName(card.holderName,
language: _coreOptions.language);
CieloValidators.validateCardNumber(card.rawNumber,
validateMod10: options.mod10Required, language: _coreOptions.language);
CieloValidators.validateCardNumber(
card.rawNumber,
validateMod10: options.mod10Required,
language: _coreOptions.language,
isSandbox: _coreOptions.environment == CieloEnvironment.sandbox,
);
CieloValidators.validateExpirationDate(card.expirationDate,
language: _coreOptions.language);
CieloValidators.validateSecurityCode(card.securityCode,
Expand Down
23 changes: 15 additions & 8 deletions lib/src/core/utils/validators.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class CieloValidators {
/// Validates [cardNumber] using the Luhn algorithm (MOD10) if [validateMod10] is true.
/// Throws a localised [CieloException] if the field is invalid.
static bool validateCardNumber(String cardNumber,
{CieloLanguage language = CieloLanguage.pt, bool validateMod10 = true}) {
{CieloLanguage language = CieloLanguage.pt, bool validateMod10 = true, bool isSandbox = false}) {
if (cardNumber.isEmpty) {
throw CieloCardValidationException(
field: 'cardNumber',
Expand All @@ -80,13 +80,20 @@ class CieloValidators {
),
);
}
RegExp regExp = RegExp(r'^(?:4[0-9]{12}(?:[0-9]{3})?' // Visa
r'|5[1-5][0-9]{14}' // MasterCard
r'|3[47][0-9]{13}' // American Express
r'|3(?:0[0-5]|[68][0-9])[0-9]{11}' // Diners Club
r'|6(?:011|5[0-9]{2})[0-9]{12}' // Discover
r'|(?:2131|1800|35\d{3})\d{11})$' // JCB
);
String regex = r'^(?:4[0-9]{12}(?:[0-9]{3})?' // Visa
r'|^5[1-5][0-9]{14}$' // MasterCard
r'|^3[47][0-9]{13}$' // American Express
r'|^3(?:0[0-5]|[68][0-9])[0-9]{11}$' // Diners Club
r'|^6(?:011|5[0-9]{2})[0-9]{12}$' // Discover
r'|^(?:2131|1800|35\d{3})\d{11})$'; // JCB

// Allow pre-defined test card numbers in sandbox mode.
// Learn more: https://braspag.github.io/en/manual/braspag-pagador#test-cards-(simulado)
if (isSandbox) {
regex += r'|^[0]{15}[1-9]$';
}

RegExp regExp = RegExp(regex);
if (!regExp.hasMatch(cardNumber)) {
throw CieloCardValidationException(
field: 'cardNumber',
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: cielo_flutter
description: An unofficial Flutter SDK for Brazilian Cielo/Braspag payment gateways.
version: 0.0.4
version: 0.0.5
repository: https://github.com/romatallinn/cieloSdk-flutter

environment:
Expand Down

0 comments on commit eb571cc

Please sign in to comment.