Skip to content

Commit

Permalink
Bank Account validator from Moip SDK JS
Browse files Browse the repository at this point in the history
  • Loading branch information
willmiranda committed May 5, 2017
1 parent 5b4d7b9 commit eda6d06
Show file tree
Hide file tree
Showing 33 changed files with 2,326 additions and 3 deletions.
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/node_modules/*
/build/*
/.grunt/*
/cov/*

_SpecRunner.html

.todo
*.swp
.idea
.DS_Store
137 changes: 137 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
module.exports = function (grunt) {

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
banner: '<%= pkg.name %>-<%= pkg.version %>.js',

jshint : {
all: ['src/**/*.js']
},

jasmine: {
options: {
src: "src/**/*.js",
specs: "spec/**/*.js",
helpers: "spec/helpers/*.js",
vendor: ["lib/jsencrypt.min.js"],
},
coverage: {
src: '<%= jasmine.options.src %>',
options: {
specs: '<%= jasmine.options.specs %>',
template: require('grunt-template-jasmine-istanbul'),
templateOptions: {
coverage: 'cov/coverage.json',
report: [
{
type: 'html',
options: {
dir: 'cov/html'
}
},
{
type: 'cobertura',
options: {
dir: 'cov/cobertura'
}
},
{
type: 'text-summary'
}
]
}
}
}
},

concat: {
dist: {
src: ["lib/jsencrypt.min.js", "src/**/*.js"],
dest: 'build/<%= pkg.name %>.js',
},
options: {
stripBanners: true,
stripFooters: true,
},
},

uglify: {
options: {
banner: '/*! <%= banner %> - build date: <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'build/<%= pkg.name %>.js',
dest: 'build/<%= pkg.name %>.min.js'
}
},

copy: {
version: {
src: 'build/<%= pkg.name %>.min.js',
dest: 'build/<%= pkg.name %>-<%= pkg.version %>.min.js'
},
dist: {
src: 'build/<%= pkg.name %>.min.js',
dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.min.js'
},
lastest: {
src: 'build/<%= pkg.name %>.min.js',
dest: 'dist/<%= pkg.name %>.min.js'
}
},

bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: 'Release v%VERSION%',
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
regExp: false
}
}
});

grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-aws');

//**********************
// Private task (auxiliar)
//**********************
grunt.registerTask('refresh', 'Refresh data from package.json', function() {
grunt.config.set('pkg', grunt.file.readJSON('./package.json'));
});

//**********************
// Public tasks
//**********************
grunt.registerTask('default', ['jshint','jasmine'] );
grunt.registerTask('build', ['default', 'concat', 'uglify', 'copy:version', 'copy:dist', 'copy:lastest']);

//**********************
// Final task (publish lib)
//**********************
grunt.registerTask('release', 'Release bank-account-validator.js', function(verTarget) {
if (verTarget == null){
grunt.fail.fatal('Specify release level: release:patch, release:minor, release:major');
}
if (!(verTarget == 'patch' || verTarget == 'minor' || verTarget == 'major')) {
grunt.fail.fatal('Specify release level: release:patch, release:minor, release:major');
}
grunt.task.run(['build', 'bump-only:'+verTarget, 'refresh', 'build']);
});

};
115 changes: 112 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,113 @@
# bank-account-validator-js
Validador de contas bancárias em JavaScript
# Validador de contas bancárias

Projeto em construção. Por enquanto, siga as instruções a partir do projeto moip-sdk-js https://github.com/moip/moip-sdk-js#validação-de-conta-bancária
A validação da conta bancária é realizada sobre as regras dos seguintes bancos: Itaú, Bradesco, Banco do Brasil, Santander, Citibank e HSBC. Para os outros bancos é realizada uma validação padrão:
* Agência de 1 até 5 números
* Dígito da agência de 0 a 2 caracteres
* Conta corrente de 1 até 12 números
* Dígito da conta corrente de 0 a 2 caracteres

O número da agência e conta corrente dos bancos Itaú, Bradesco, e Banco do Brasil são validados através do cálculo do dígito verificador (semelhante a validação do CPF).

### Validador de conta bancária on-line
Você pode realizar a validação a qualquer momento através do site:
http://validadorbanco.com.br

# Implementação a validação em seu site

Para um funcionamento inicial, copie o trecho de código abaixo para sua página HTML.


```html
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/moip/bank-account-validator-js/master/dist/bank-account-validator.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#validate_bank_account").click(function() {
Moip.BankAccount.validate({
bankNumber : $("#bank_number").val(),
agencyNumber : $("#agency_number").val(),
agencyCheckNumber : $("#agency_check_number").val(),
accountNumber : $("#account_number").val(),
accountCheckNumber : $("#account_check_number").val(),
valid: function() {
alert("Conta bancária válida")
},
invalid: function(data) {
var errors = "Conta bancária inválida: \n";
for(i in data.errors){
errors += data.errors[i].description + "-" + data.errors[i].code + ")\n";
}
alert(errors);
}
});
});
});
</script>
<form>
<select id="bank_number">
<option value="001">BANCO DO BRASIL S.A.</option>
<option value="237">BANCO BRADESCO S.A.</option>
<option value="341">BANCO ITAÚ S.A.</option>
<option value="104">CAIXA ECONOMICA FEDERAL</option>
<option value="033">BANCO SANTANDER BANESPA S.A.</option>
<option value="399">HSBC BANK BRASIL S.A.</option>
<option value="151">BANCO NOSSA CAIXA S.A.</option>
<option value="745">BANCO CITIBANK S.A.</option>
</select>

<input id="agency_number" placeholder="Agência" type="text"/>
<input id="agency_check_number" placeholder="Dígito da agência" type="text" />
<input id="account_number" placeholder="Conta corrente" type="text" />
<input id="account_check_number" placeholder="Dígito da conta corrente" type="text" />

<input type="button" value="Validar" id="validate_bank_account" />
</form>
```

Lembrando que se estiver em ambiente de desenvolvimento é recomendável utilizar o arquivo validator.html.

### Tratamento de erros
Estes são os códigos de erro retornados quando uma conta bancária inválida é informada. Estas mensagens podem ser retornadas quando uma conta bancária do ITAÚ está totalmente inválida:
* INVALID_AGENCY_NUMBER: A agência deve conter 4 números. Complete com zeros a esquerda se necessário
* INVALID_AGENCY_CHECK_NUMBER: Dígito da agência inválido
* INVALID_ACCOUNT_NUMBER: A conta corrente deve conter 5 números. Complete com zeros a esquerda se necessário
* INVALID_ACCOUNT_CHECK_NUMBER: Dígito da conta corrente inválido
* AGENCY_CHECK_NUMBER_DONT_MATCH: Dígito da agência não corresponde ao número da agência preenchido
* ACCOUNT_CHECK_NUMBER_DONT_MATCH: Dígito da conta não corresponde ao número da conta/agência preenchido
* INVALID_BANK_NUMBER: Banco inválido (quando o código do banco não possui entre 3 e 5 dígitos)

### Código dos bancos

A listagem de todos os bancos você pode obter em http://www.codigobanco.com.

# Contribuindo

Após realizar as mudanças do projeto, ou caso queira apenas executar o projeto localmente:

### Instalação de dependências
``` javascript
%> npm install
```

### Testes unitários
``` javascript
%> grunt
```

### Build
``` javascript
%> grunt build
```

### Executando a validação no browser
Após executar o build, basta abrir o arquivo validator.html no seu browser.

### Release (gera uma nova versão major/minor/patch)
Por exemplo, para a correção de um bug alterando a versão de 1.0.0 para 1.0.1, o comando seria:
``` javascript
%> grunt release:patch
```

Após este comando:
- Arquivo com a nova versão será gerado em dist/bank-account-validator-MAJOR.MINOR.PATCH.min.js
- A nova versão ficará registrada no package.json no campo "version"
4 changes: 4 additions & 0 deletions dist/bank-account-validator-1.0.0.min.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions dist/bank-account-validator.min.js

Large diffs are not rendered by default.

Loading

0 comments on commit eda6d06

Please sign in to comment.