payment-token-efi 2.0.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ on:
2
+ push:
3
+ branches: [ main ]
4
+ paths:
5
+ - 'package.json'
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v1
12
+ - uses: actions/setup-node@v1
13
+ with:
14
+ node-version: 14
15
+ - run: npm install
16
+ - uses: JS-DevTools/npm-publish@v1
17
+ with:
18
+ token: ${{ secrets.NPM_TOKEN }}
package/README.md CHANGED
@@ -1,247 +1,255 @@
1
1
  <h1>Script payment_token cartão de crédito | Efí</h1>
2
2
 
3
- Este módulo JavaScript permite a criptografia dos dados do cartão diretamente no navegador do cliente, gerando o payment_token, identificando a bandeira do cartão e obtendo informações de parcelamento.
4
-
5
- Com essa biblioteca é possível implementar uma solução segura e eficiente para manipulação de dados de cartão de crédito em seus projetos. Além disso, a criptografia dos dados diretamente no navegador do cliente aumenta a segurança da transação e protege as informações do cartão contra interceptações maliciosas.
3
+ Esta biblioteca JavaScript permite uma solução segura e eficiente para manipular dados de cartão de crédito em seus projetos. Além disso, a criptografia dos dados diretamente no front-end da aplicação aumenta a segurança da transação e protege as informações do cartão contra interceptações maliciosas. Também é possível identificar a bandeira do cartão e obter informações de parcelamento.
6
4
 
7
5
  **Ir para:**
8
- - [**Exemplo**](#exemplo)
6
+
7
+ - [**Demonstração**](#demonstração)
9
8
  - [**Instalação**](#instalação)
10
- - [**Web**](#web)
11
- - [**Node**](#node)
9
+ - [**Web**](#web-browser)
10
+ - [**Gerenciador de pacote**](#gerenciador-de-pacote-npm-ou-yarn))
11
+ - [**UMD**](#universal-module-definition-umd)
12
+ - [**ES Modules**](#ecmascript-modules-esm)
13
+ - [**CommonJS**](#commonjs-cjs)
14
+ - [**Tipagens TypeScript**](#tipagens-typescript)
12
15
  - [**Utilização**](#utilização)
13
16
  - [**Criação da cobrança**](#criação-da-cobrança)
14
17
  - [**Documentação Adicional**](#documentação-adicional)
15
18
  - [**Comunidade e suporte**](#comunidade-e-suporte)
16
19
  - [**Licença**](#licença)
17
20
 
18
- ___
21
+ ---
22
+
23
+ ## **Demonstração**
19
24
 
20
- ## **Exemplo**
21
- Para ilustrar a utilização deste módulo em um contexto prático, você pode conferir um exemplo no seguinte link: <a href='https://efipay.github.io/js-payment-token-efi/' target ='_blank'>Clique aqui</a>.
25
+ Para ilustrar a utilização desta biblioteca em um contexto prático, você pode conferir uma demonstração [neste link](https://efipay.github.io/js-payment-token-efi/).
22
26
 
23
- ___
27
+ ![Demonstração geerando um payment_token](https://sejaefi.link/rygrqiv3DR)
28
+
29
+ ---
24
30
 
25
31
  ## **Instalação**
26
- Abaixo, fornecemos algumas opções de instalação da biblioteca para atender a projetos web que utilizam JavaScript puro ou tecnologias como o Node.js. A seguir, apresentamos mais detalhes.
27
32
 
28
- ### **Web**
29
- Realize o <a href='https://raw.githubusercontent.com/efipay/js-payment-token-efi/main/dist/payment-token-efi.min.js' target ='_blank'>download da biblioca</a> localizada em `/dist/payment-token-efi.min.js`, ou importação através do link do CDN.
33
+ Abaixo, fornecemos algumas opções de instalação da biblioteca para atender a projetos web que utilizam JavaScript puro ou frameworks modernos.
30
34
 
31
- - **Importação local**
32
- ```javascript
33
- <script src="./dist/payment-token-efi.min"></script>
34
- ```
35
+ ### **Web (Browser)**
36
+
37
+ Realize o [download da biblioteca](https://raw.githubusercontent.com/efipay/js-payment-token-efi/main/dist/payment-token-efi-umd.min.js) localizada em `/dist/payment-token-efi-umd.min.js` para importação local, ou utilize a importação através do link do CDN.
35
38
 
39
+ - **Importação local**
40
+ ```html
41
+ <script src="./dist/payment-token-efi-umd.min.js"></script>
42
+ ```
36
43
  - **Importação por CDN**
37
- ```javascript
38
- <script src="https://cdn.jsdelivr.net/gh/efipay/js-payment-token-efi/dist/payment-token-efi.min.js"></script>
39
- ```
44
+ ```html
45
+ <script src="https://cdn.jsdelivr.net/gh/efipay/js-payment-token-efi/dist/payment-token-efi-umd.min.js"></script>
46
+ ```
47
+ _**Obs**: neste tipo de aplicação, utilize o módulo **umd**._
40
48
 
41
- ### **Node**
42
- Nesse cenário, você tem duas opções para instalar a biblioteca.
49
+ ### **Gerenciador de pacote (NPM ou Yarn)**
43
50
 
44
- - **Importação local**
45
-
46
- Fazer o <a href='https://raw.githubusercontent.com/efipay/js-payment-token-efi/main/distNode/payment-token-efi.js' target ='_blank'>download do arquivo</a> `/distNode/payment-token-efi.js` e adicioná-lo localmente.
51
+ Se você estiver utilizando um gerenciador de pacotes como npm ou yarn, instale a biblioteca diretamente:
52
+
53
+ ```sh
54
+ npm install payment-token-efi
55
+ // ou
56
+ yarn add payment-token-efi
57
+ ```
58
+
59
+ Após a instalação, você pode importar a biblioteca conforme o ambiente que estiver utilizando:
60
+
61
+ #### **Universal Module Definition (UMD)**
62
+
63
+ Para ambientes que suportam Universal Module Definition:
47
64
 
48
- ```js
49
- const EfiJs = require('./distNode/payment-token-efi');
50
- ```
65
+ ```javascript
66
+ import EfiPay from "payment-token-efi";
67
+ ```
68
+
69
+ #### **ECMAScript Modules (ESM)**
51
70
 
71
+ Para ambientes que suportam ES Modules:
72
+
73
+ ```javascript
74
+ import EfiPay from "payment-token-efi";
75
+ ```
52
76
 
53
- - **Importação por NPM**
54
-
55
- A segunda opção é utilizar o [gerenciador de pacotes NPM](https://www.npmjs.com/package/payment-token-efi) e instalar a biblioteca com o seguinte comando:
77
+ #### **CommonJS (CJS)**
56
78
 
57
- ```cmd
58
- npm i payment-token-efi
59
- // ou
60
- yarn add payment-token-efi
61
- ```
79
+ Para ambientes que utilizam o padrão CommonJS:
62
80
 
63
- Após a instalação da biblioteca, basta importá-la em seu projeto.
81
+ ```javascript
82
+ const EfiPay = require("payment-token-efi");
83
+ ```
84
+ _**Obs**: Esta biblioteca não é compatível no backend em Node.js_
64
85
 
65
- ```js
66
- const EfiJs = require('payment-token-efi');
67
- ```
86
+ ### **Tipagens TypeScript**
68
87
 
69
- **Observação**
88
+ Se você estiver utilizando TypeScript, você pode instalar as tipagens para a biblioteca:
70
89
 
71
- É importante ressaltar que também é necessário instalar a seguinte biblioteca para a virtualização do DOM.
72
- ```cmd
73
- npm install jsdom --save
90
+ ```sh
91
+ npm install @types/payment-token-efi
74
92
  // ou
75
- yarn add jsdom
93
+ yarn add @types/payment-token-efi
76
94
  ```
77
95
 
78
- ___
96
+ ---
79
97
 
80
98
  ## **Utilização**
81
99
 
82
100
  Este script oferece três funções para manipulação de dados de cartão de crédito. A primeira função permite <ins>**identificar a bandeira**</ins> do cartão a partir do seu número. A segunda função <ins>**busca informações de parcelamento**</ins> de acordo com as configurações de recebimento em sua conta. Por fim, a terceira função <ins>**gera o token de pagamento (payment_token) e a máscara do cartão (card_mask)**</ins> com base nos dados do cartão.
83
101
 
84
- Para utilizar esse script, é necessário passar o código Identificador de Conta (payee_code) como parâmetro para gerar o payment_token dos dados do cartão de crédito. Você pode obter essa informação em sua conta digital, no menu `API > Introdução > Identificador de Conta`. <a href='https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2023/03/08/matheus.rodrigues/24fa15-dda30019-a643-409e-8813-c7cc68adcc40.png' target='_blank'>Veja onde encontrá-la</a>. Certifique-se de ter essa informação disponível ao utilizar as funções do script.
102
+ Para utilizar esse script, é necessário passar o código **Identificador de Conta** (payee_code) como parâmetro para gerar o payment_token dos dados do cartão de crédito. Você pode obter essa informação em sua conta digital, no menu `API > Introdução > Identificador de Conta`. <a href='https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2023/03/08/matheus.rodrigues/24fa15-dda30019-a643-409e-8813-c7cc68adcc40.png' target='_blank'>Veja onde encontrar</a>.
85
103
 
86
104
  <br>
87
105
 
88
- * ### **Identificar a bandeira**
89
- * **Dados de entrada:**
90
-
91
- | Parâmetro/Método | Descrição | Tipo | Obrigatório |
92
- |-------------------|--------------------------------------|----------|-------------|
93
- | setCardNumber | Número do cartão de crédito | string | Sim |
94
- | debugger | Depurador de código | boolean | Não |
95
-
96
- * **Exemplo:**
97
- ```js
98
- try {
99
- EfiJs.CreditCard
100
- .setCardNumber('4485785674290087')
101
- .verifyCardBrand()
102
- .then(brand => {
103
- console.log('Bandeira: ', brand);
104
- if (brand !== 'undefined') {
105
- // Exemplo: executar a função para gerar o payment_token com a bandeira identificada
106
- }
107
- }).catch(err => {
108
- console.log('Código: ', err.code);
109
- console.log('Nome: ', err.error);
110
- console.log('Mensagem: ', err.error_description);
111
- });
112
- } catch (error) {
113
- console.log('Código: ', error.code);
114
- console.log('Nome: ', error.error);
115
- console.log('Mensagem: ', error.error_description);
116
- }
117
- ```
118
-
119
- * **Dados de saída:**
120
-
121
- | Parâmetro | Descrição | Tipo |
122
- |------------|-----------------------------------|----------|
123
- | brand | Brandeira do cartão. `"undefined"`, `"unsupported"`, `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string |
106
+ - ### **Identificar a bandeira**
124
107
 
108
+ - **Dados de entrada:**
125
109
 
110
+ | Parâmetro/Método | Descrição | Tipo | Obrigatório |
111
+ | ---------------- | --------------------------- | ------- | ----------- |
112
+ | setCardNumber | Número do cartão de crédito | string | Sim |
113
+ | debugger | Depurador de código | boolean | Não |
126
114
 
127
- <br>
115
+ - **Exemplo:**
116
+
117
+ ```js
118
+ async function identificarBandeira() {
119
+ try {
120
+ const bandeira = await EfiPay.CreditCard
121
+ .setCardNumber("4485785674290087")
122
+ .verifyCardBrand();
128
123
 
129
- * ### **Buscar as informações de parcelamento**
130
-
131
- * **Dados de entrada:**
132
-
133
- | Parâmetro/Método | Descrição | Tipo | Obrigatório |
134
- |---------------|---------------------------------------------|----------|-------------|
135
- | setAccount | Identificador de conta | string | Sim |
136
- | setEnvironment | Ambiente. `"production"` ou `"homologation"` | string | Sim |
137
- | setBrand | Bandeira do cartão `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string | Sim |
138
- | setTotal | Valor total | Integer | Sim |
139
- | debugger | Depurador de código | boolean | Não |
140
-
141
- * **Exemplo:**
142
- ```js
143
- try {
144
- EfiJs.CreditCard
145
- .setAccount('Identificador_de_conta_aqui')
146
- .setEnvironment('production') // 'production' or 'homologation'
147
- .setBrand('visa')
148
- .setTotal(28990)
149
- .getInstallments()
150
- .then(installments => {
151
- console.log('Parcelas', installments);
152
- }).catch(err => {
153
- console.log('Código: ', err.code);
154
- console.log('Nome: ', err.error);
155
- console.log('Mensagem: ', err.error_description);
156
- });
157
- } catch (error) {
158
- console.log('Código: ', error.code);
159
- console.log('Nome: ', error.error);
160
- console.log('Mensagem: ', error.error_description);
161
- }
162
- ```
163
-
164
- * **Dados de saída:**
165
-
166
- | Parâmetro | Descrição | Tipo |
167
- |------------|-----------------------------------|----------|
168
- | installments | Array com as parcelas. `{"rate": 0,"name": "brand","installments": [{"installment": 1,"has_interest": false,"value": 500,"currency": "5,00","interest_percentage": 0}]}` | object |
124
+ console.log("Bandeira: ", resultBandeira);
125
+ } catch (error) {
126
+ console.log("Código: ", error.code);
127
+ console.log("Nome: ", error.error);
128
+ console.log("Mensagem: ", error.error_description);
129
+ }
130
+ }
131
+ ```
132
+
133
+ - **Dados de saída:**
134
+
135
+ | Parâmetro | Descrição | Tipo |
136
+ | --------- | --------------------------------------------------------------------------------------------------------------- | ------ |
137
+ | brand | Brandeira do cartão. `"undefined"`, `"unsupported"`, `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string |
169
138
 
170
139
  <br>
171
140
 
172
- * ### **Gerar o payment_token e card_mask**
173
-
174
- * **Dados de entrada:**
175
-
176
- | Parâmetro/Método | Descrição | Tipo | Obrigatório |
177
- |-------------------|------------------------------------------------|----------|-------------|
178
- | setAccount | Identificador de conta | string | Sim |
179
- | setEnvironment | Ambiente. `"production"` ou `"homologation"` | string | Sim |
180
- | setCreditCardData | Dados do cartão de crédito | object | Sim |
181
- | - | brand `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string | Sim |
182
- | - | number | string | Sim |
183
- | - | cvv | string | Sim |
184
- | - | expirationMonth `'MM'` | string | Sim |
185
- | - | expirationYear `'YYYY'` | string | Sim |
186
- | - | reuse | boolean | Não |
187
- | debugger | Depurador de código | boolean | Não |
188
-
189
- * **Exemplo:**
190
- ```js
191
- try {
192
- EfiJs.CreditCard
193
- .setAccount('Identificador_de_conta_aqui')
194
- .setEnvironment('production') // 'production' or 'homologation'
195
- .setCreditCardData({
196
- brand: 'visa',
197
- number: '4485785674290087',
198
- cvv: '123',
199
- expirationMonth: '05',
200
- expirationYear: '2029',
201
- reuse: false
202
- })
203
- .getPaymentToken()
204
- .then(data => {
205
- const payment_token = data.payment_token;
206
- const card_mask = data.card_mask;
207
- console.log('payment_token', payment_token);
208
- console.log('card_mask', card_mask);
209
- }).catch(err => {
210
- console.log('Código: ', err.code);
211
- console.log('Nome: ', err.error);
212
- console.log('Mensagem: ', err.error_description);
213
- });
214
- } catch (error) {
215
- console.log('Código: ', error.code);
216
- console.log('Nome: ', error.error);
217
- console.log('Mensagem: ', error.error_description);
218
- }
219
- ```
220
-
221
- * **Dados de saída:**
222
-
223
- | Parâmetro | Descrição | Tipo |
224
- |----------------|--------------------------------------------------------------|----------|
225
- | payment_token | Token de pagamento que representa o cartão utilizado | string |
226
- | card_mask | Máscara do cartão utilizado | string |
227
-
228
-
229
- - ### **Ativar debbuger**
230
- O debugger pode ser ativado para depurar e encontrar possível falhas.
231
- ```js
232
- EfiJs.CreditCard.debugger(true);
233
- ```
234
-
235
-
236
- - ### **Dados de saída em caso de falha**
237
- Em caso de erro, será retornado no try/catch o objeto com os parâmetros descritos abaixo.
238
-
239
- | Parâmetro | Descrição | Tipo |
240
- |-----------|---------------------------------------------------|----------|
241
- | code | Código de erro para identificação. | string |
242
- | error | Nome do erro. | string |
243
- | error_description | Mensagem detalhando o erro ocorrido. | string |
141
+ - ### **Buscar as informações de parcelamento**
142
+
143
+ - **Dados de entrada:**
144
+
145
+ | Parâmetro/Método | Descrição | Tipo | Obrigatório |
146
+ | ---------------- | ----------------------------------------------------------------------------- | ------- | ----------- |
147
+ | setAccount | Identificador de conta | string | Sim |
148
+ | setEnvironment | Ambiente. `"production"` ou `"sandbox"` | string | Sim |
149
+ | setBrand | Bandeira do cartão `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string | Sim |
150
+ | setTotal | Valor total | Integer | Sim |
151
+ | debugger | Depurador de código | boolean | Não |
152
+
153
+ - **Exemplo:**
154
+
155
+ ```js
156
+ async function listarParcelas() {
157
+ try {
158
+ const parcelas = await EfiPay.CreditCard
159
+ .setAccount("Identificador_de_conta_aqui")
160
+ .setEnvironment("production") // 'production' or 'sandbox'
161
+ .setBrand("visa")
162
+ .setTotal(28990)
163
+ .getInstallments()
164
+ .console.log("Parcelas", installments);
165
+ } catch (error) {
166
+ console.log("Código: ", error.code);
167
+ console.log("Nome: ", error.error);
168
+ console.log("Mensagem: ", error.error_description);
169
+ }
170
+ }
171
+ ```
172
+
173
+ - **Dados de saída:**
174
+
175
+ | Parâmetro | Descrição | Tipo |
176
+ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ |
177
+ | installments | Array com as parcelas. `{"rate": 0,"name": "brand","installments": [{"installment": 1,"has_interest": false,"value": 500,"currency": "5,00","interest_percentage": 0}]}` | object |
178
+
179
+ <br>
244
180
 
181
+ - ### **Gerar o payment_token e card_mask**
182
+
183
+ - **Dados de entrada:**
184
+
185
+ | Parâmetro/Método | Descrição | Tipo | Obrigatório |
186
+ | ----------------- | ---------------------------------------------------------------- | ------- | ----------- |
187
+ | setAccount | Identificador de conta | string | Sim |
188
+ | setEnvironment | Ambiente. `"production"` ou `"sandbox"` | string | Sim |
189
+ | setCreditCardData | Dados do cartão de crédito | object | Sim |
190
+ | - | brand `"visa"`, `"mastercard"`, `"amex"`, `"elo"`, `"hipercard"` | string | Sim |
191
+ | - | number | string | Sim |
192
+ | - | cvv | string | Sim |
193
+ | - | expirationMonth `'MM'` | string | Sim |
194
+ | - | expirationYear `'YYYY'` | string | Sim |
195
+ | - | reuse | boolean | Não |
196
+ | debugger | Depurador de código | boolean | Não |
197
+
198
+ - **Exemplo:**
199
+
200
+ ```js
201
+ async function gerarPaymentToken() {
202
+ try {
203
+ const paymentTokenData = await EfiPay.CreditCard
204
+ .setAccount("Identificador_de_conta_aqui")
205
+ .setEnvironment("production") // 'production' or 'sandbox'
206
+ .setCreditCardData({
207
+ brand: "visa",
208
+ number: "4485785674290087",
209
+ cvv: "123",
210
+ expirationMonth: "05",
211
+ expirationYear: "2029",
212
+ reuse: false,
213
+ })
214
+ .getPaymentToken();
215
+
216
+ const payment_token = paymentTokenData.payment_token;
217
+ const card_mask = paymentTokenData.card_mask;
218
+
219
+ console.log("payment_token", payment_token);
220
+ console.log("card_mask", card_mask);
221
+ } catch (error) {
222
+ console.log("Código: ", error.code);
223
+ console.log("Nome: ", error.error);
224
+ console.log("Mensagem: ", error.error_description);
225
+ }
226
+ }
227
+ ```
228
+
229
+ - **Dados de saída:**
230
+
231
+ | Parâmetro | Descrição | Tipo |
232
+ | ------------- | ---------------------------------------------------- | ------ |
233
+ | payment_token | Token de pagamento que representa o cartão utilizado | string |
234
+ | card_mask | Máscara do cartão utilizado | string |
235
+
236
+ * ### **Ativar debbuger**
237
+
238
+ O debugger pode ser ativado para depurar e encontrar possível falhas.
239
+
240
+ ```js
241
+ EfiPay.CreditCard.debugger(true);
242
+ ```
243
+
244
+ * ### **Dados de saída em caso de falha**
245
+
246
+ Em caso de erro, será retornado no try/catch o objeto com os parâmetros descritos abaixo.
247
+
248
+ | Parâmetro | Descrição | Tipo |
249
+ | ----------------- | ------------------------------------ | ------ |
250
+ | code | Código de erro para identificação. | string |
251
+ | error | Nome do erro. | string |
252
+ | error_description | Mensagem detalhando o erro ocorrido. | string |
245
253
 
246
254
  <br>
247
255
 
@@ -249,22 +257,28 @@ Para utilizar esse script, é necessário passar o código Identificador de Cont
249
257
 
250
258
  ## **Criação da cobrança**
251
259
 
252
- Após a obtenção do payment_token será possível emitir a cobrança de cartão de crétito. [Acesse nossa documentação técnica](https://dev.gerencianet.com.br/docs/pagamento-com-cartao#2-criar-cobran%C3%A7a-por-cart%C3%A3o-de-cr%C3%A9dito) para mais detalhes.
260
+ Após a obtenção do payment_token será possível emitir a cobrança de cartão de crétito. [Acesse nossa documentação técnica](https://dev.efipay.com.br/docs/api-cobrancas/cartao#cria%C3%A7%C3%A3o-de-cobran%C3%A7a-por-cart%C3%A3o-de-cr%C3%A9dito-em-one-step-um-passo) para mais detalhes.
261
+
262
+ Para criar cobranças de cartão de crédito, lembre-se de registrar o ramo de atividades em sua conta Efí. [Veja como](https://sejaefi.com.br/central-de-ajuda/dados-cadastrais/inserir-ramo-de-atividade#conteudo).
253
263
 
254
264
  ---
255
265
 
256
266
  ## **Documentação Adicional**
257
267
 
258
- <a href='https://sejaefi.com.br/api/' target='_blank'>Acesse nossa documentação técnica</a> para ver todas as informações da geração do payment_token e mais detalhes das APIs.
268
+ [Acesse nossa documentação técnica](https://dev.efipay.com.br/)</a> para ver todas as informações das APIs Efí Pay.
259
269
 
260
- Se você ainda não tem uma conta digital da Efí, <a href='https://sejaefi.com.br/' target='_blank'>abra a sua agora</a>!
270
+ Se você ainda não tem uma conta digital da Efí, [abra a sua agora](https://sejaefi.com.br/)!
261
271
 
262
272
  ---
263
273
 
264
274
  ## **Comunidade e suporte**
265
- Conecte-se a milhares de desenvolvedores, participe de discussões, tire dúvidas e integre suas operações às APIs Efí (API Pix, API Boletos e muito mais) com a ajuda da maior comunidade de integradores do Brasil. <a href='https://comunidade.sejaefi.com.br/' target='_blank'>Faça parte da comunidade Efí.
275
+
276
+ <a href="https://comunidade.sejaefi.com.br/"><img src="https://efipay.github.io/comunidade-discord-efi/assets/img/thumb-repository.png"></a>
277
+
278
+ [Faça parte da comunidade Efí](https://comunidade.sejaefi.com.br/) e conecte-se a milhares de desenvolvedores, participe de discussões, tire dúvidas e integre suas operações às APIs Efí (API Pix, API Boletos e Cartão, e muito mais) com a ajuda da maior comunidade de integradores de meios de pagamentos do Brasil.
266
279
 
267
280
  ---
268
281
 
269
282
  ## **Licença**
283
+
270
284
  [MIT](LICENSE)