banzeh / cielo Goto Github PK
View Code? Open in Web Editor NEWClient para a API 3.0 da Cielo em node.js
Home Page: https://banzeh.github.io/cielo/
License: MIT License
Client para a API 3.0 da Cielo em node.js
Home Page: https://banzeh.github.io/cielo/
License: MIT License
Acredito que o URL para consulta de transações esteja errado (apisandbox.cieloecommerce.cielo.com.br).
Pela documentação deveria buscar de "https://apiquerysandbox.cieloecommerce.cielo.com.br".
Usei as URL's de sandbox para ilustrar o problema.
Acredito que basta alterar o URL para que a consulta funcione.
Vou submeter uma PR assim que terminar de editar localmente.
Gostaria que fosse implementado a utilização de casas decimais na API. Estou com meu cadastro fechado na Cielo e eu não faço ideia do motivo pelos quais eles fecharam o meu cadastro. O que eu posso imaginar é que seja pela utilização de casas decimais na hora de tentar efetuar o pagamento.
Não faço ideia do motivo do bloqueio e acredito também que falta alertar à equipe de segurança que existem programadores que utilizam a API e por um simples valor TRUE/FALSE ou até mesmo casas decimais podem resultar em problemas e que os tais não podem ser considerados como tentativa de fraude.
Eu passei horas implementando a API de vocês e infelizmente eu agora estou com o meu cadastro bloqueado e estão pedindo um prazo de 180 dias para "estudar o caso".
Peço por gentileza que seja feita algo em relação à isso. Estou com meu aplicativo parado por conta disso.
Atenciosamente,
Marcos Porto
Ola banzeh,
Quando seto o sandbox: true, eu não recebo nada de retorno. Sem erro, sem Json.
Se coloco true no sandbox, eu recebo autorização negada por conta de usar um numero de cartão inválido.
Estou usando o
node v10.0.0
npm v5.6.0
Describe the bug
Can't initialize the cielo instance using the keyword new.
To Reproduce
Steps to reproduce the behavior:
TypeError: cielo_1.Cielo is not a constructor at Object.<anonymous> (/Users/anzileiro/projects/azdata/history-market-cron/src/cielo.ts:13:21) at Module._compile (internal/modules/cjs/loader.js:959:30) at Module.m._compile (/Users/anzileiro/.nvm/versions/node/v12.14.0/lib/node_modules/ts-node/src/index.ts:814:23) at Module._extensions..js (internal/modules/cjs/loader.js:995:10) at Object.require.extensions.<computed> [as .ts] (/Users/anzileiro/.nvm/versions/node/v12.14.0/lib/node_modules/ts-node/src/index.ts:817:12) at Module.load (internal/modules/cjs/loader.js:815:32) at Function.Module._load (internal/modules/cjs/loader.js:727:14) at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10) at main (/Users/anzileiro/.nvm/versions/node/v12.14.0/lib/node_modules/ts-node/src/bin.ts:226:14) at Object.<anonymous> (/Users/anzileiro/.nvm/versions/node/v12.14.0/lib/node_modules/ts-node/src/bin.ts:485:3)
Expected behavior
To get the instance.
Desktop (please complete the following information):
O titulo já diz tudo..
Executo o código do exemplo para gerar card token e da erro de CORS..
Ola,
Primeiro, obrigado pelo pacote! :)
Estou tentando usar, com base nos exemplos que passou e estou recebendo o seguinte erro:
ERRO { Error: getaddrinfo ENOTFOUND apisandbox.cieloecommerce.cielo.com.br apisandbox.cieloecommerce.cielo.com.br:443
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'apisandbox.cieloecommerce.cielo.com.br',
host: 'apisandbox.cieloecommerce.cielo.com.br',
port: 443 }
Algo que eu possa estar fazendo errado?
Quando tento realizar uma compra usando o Brand: 'Mastercard', ele me retorna o seguinte erro:
[{"Code": "999", "Message": "Error converting value \"Mastercard\" to type 'Braspag.CommonTYpes.Enums.BrandEnum'. Path 'DebitCard.Brand', line 1, position 388"}]
Alguém sabe o que o que esotu fazendo de errado. Meu cartão está sendo passado como:
número do cartão: 5111111111111111
cvc: 999
data: 12/2020
Holder: "Teste"
OBS: Usando pelo sandbox.
Olá,
Fiz algumas modificações locais apenas para fazer o GET com o cartão tokenizado e gostaria de saber se você poderia fazer estas alterações também para futuros projetos que possam utilizar e para nós também.
O método no cielo.js ficou assim:
controller.consultaTokenizedCard = (data) => {
const o = {
hostname: URL_CONSULTA,
path: `/1/card/${data.token}`,
method: 'GET'
}
return get(Object.assign(requestOptions, o), data)
}
No index.js em 'cards'
cards: {
createTokenizedCard: cielo.createTokenizedCard,
consultaTokenizedCard: cielo.consultaTokenizedCard
},
E para a documentação
const cartao= {
"token": '66b2c162-efbf-4692-aee5-e536c0f81037'
}
const card = await cielo.cards.consultaTokenizedCard(cartao)
console.log('Consulta token', card)
ou
cielo.cards.consultaTokenizedCard(cartao)
.then((data) => {
console.log(data)
})
.catch((err) => {
console.log(err);
})
Obrigado.
Estou tentando rodar no Lambda da AWS mas estou com um erro que não consegui resolver.
O código que estou testando:
exports.handler = (event, context, callback) => {
const paramsCielo = {
'MerchantId': 'e60c1e21cf8743d1bc1fbd760fe0aba4',
'MerchantKey': 'LVYLUTLJYYIXXRUQMXLIMYEDLRVCRWHNGYQFIVIG',
'sandbox': true,
'debug': false
};
var cielo = require('cielo')(paramsCielo);
callback(null, paramsCielo);
};
O erro:
Function Logs
2018-04-26 19:05:04.910 /var/task/node_modules/cielo/cielo.js:183
let optionsCopy = {...options};
^^^
SyntaxError: Unexpected token ...
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at exports.handler (/var/task/cielo/index.js:10:30)
Esse erro é por conta de usar o AWS Lambda ou algo que tenho que alterar no pacote?
Abcs
Olá, recebo o codigo 101 - MerchantId is required.
Passo os parâmetros usando como referencia sua descrição e com MerchantId cadastrado na Cielo.
Pode me ajudar com esse erro?
Obrigado
Describe the bug
Quando adicionamos o endereó do cliente a SandBox Cielo retorna Customer Address Country is Required
, contudo na request estou enviando os dados completos com o campo country.
**** DADOS FICTÍCIOS ****
REQUEST:
Conteúdo da Response:
{
statusCode: 400,
request: '{"customer":{"Name":"Maurico Reis","Email":"[email protected]","Identity":"43221134606","IdentityType":"CPF","Address":{"street":"Alameda Suzana Viela","number":"135","complement":"","zipCode":"91574-952","city":"Barros de Nossa Senhora","state":"RO"},"deliveryAddress":{"street":"Alameda Suzana Viela","number":"135","complement":"","zipCode":"91574-952","city":"Barros de Nossa Senhora","state":"RO"}},"merchantOrderId":"27320213","payment":{"currency":"BRL","country":"BRA","amount":59688,"installments":3,"softDescriptor":"27320213","type":"CreditCard","capture":false,"authenticate":false,"creditCard":{"brand":"JCB","cardNumber":"3557606997328732","securityCode":"064","holder":"Jordão Nogueira","expirationDate":"10/2025"}}}'
Bom dia.
Poderia me ajudar? Estou tentando usar a integração com o Express. Porém, não recebo nenhuma resposta...parece que fica fazendo a requisição eternamente.
var express = require('express');
var app = express();
var paramsCielo = {
'MerchantId': '1efce832-e60d-435d-b8c1-dd3121ec4248',
'MerchantKey': '80T5wEBXuyhBF99ANLlii5WwIlOijvHqafcQNDcD',
'RequestId': 'xxxxxxx', // Opcional - Identificação do Servidor na Cielo
'sandbox': true, // Opcional - Ambiente de Testes
'debug': false // Opcional - Exibe os dados enviados na requisição para a Cielo
}
var cielo = require('cielo')(paramsCielo);
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.get('/cielo', function(req, res) {
var dadosSale = {
"MerchantOrderId":"2014111703",
"Customer":{
"Name":"Comprador crédito simples"
},
"Payment":{
"Type":"CreditCard",
"Amount":15700,
"Installments":1,
"SoftDescriptor":"123456789ABCD",
"CreditCard":{
"CardNumber":"0000000000000001",
"Holder":"Teste Holder",
"ExpirationDate":"12/2030",
"SecurityCode":"123",
"Brand":"Visa"
}
}
}
cielo.creditCard.simpleTransaction(dadosSale)
.then((data) => {
console.log(data);
res.send('Cielo funcionou!')
})
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
Muito obrigado!
Describe the bug
In some cases the user can put only phone and not a mail, in this case on Type CustomerModel don't have this possibility.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
You can check this think please?
Caro Banzeh.
Estou tentando fazer um teste simples, mas recebo sempre o mesmo erro:
2018-07-27T21:08:18.832Z
[Arguments] {
'0': 'erro no request ',
'1':
{ Error: read ECONNRESET
at TLSWrap.onread (net.js:656:25) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' } }
------------ END DEBUG ------------
CEIELO ERRO { Error: read ECONNRESET
at TLSWrap.onread (net.js:656:25) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' }
O código que estou usando no teste é esse:
const paramsCielo = {
// SANDBOX
MerchantId: "xxxxxxxx",
MerchantKey: "xxxxxxxxxx",
sandbox: true, // Opcional - Ambiente de Testes
debug: true // Opcional - Exibe os dados enviados na requisição para a Cielo
};
const cielo = require("cielo")(paramsCielo);
const dadosSale = {
MerchantOrderId: "2014111703",
Customer: {
Name: "Comprador crédito simples"
},
Payment: {
Type: "CreditCard",
Amount: 15700,
Installments: 1,
SoftDescriptor: "123456789ABCD",
CreditCard: {
CardNumber: "0000000000000001",
Holder: "Teste Holder",
ExpirationDate: "12/2030",
SecurityCode: "123",
Brand: "Visa"
}
}
};
cielo.creditCard
.completeTransaction(dadosSale)
.then(data => {
console.log("CEIELO SUCESSO ", data);
//response.send(data);
})
.catch(err => {
console.error("CEIELO ERRO", err);
//response.send(err);
});
Abcs
André
Realizei várias formas de cadastro no site da Cielo, porém em nenhum lugar consigo encontrar a Merchant Key necessária para a API.
Como faço para obter a chave e começar a testar?
Estou tentando desenvolver uma API com Node JS utilizando seu client. Funciona normalmente, se tudo correr bem, ou seja se faltar um parâmetro por exemplo, a aplicação finaliza e não exibe de maneira amigável o retorno do erro (API Cielo). Gostaria de uma ajuda.
Segue o erro abaixo. Observação: node v8.9.0 e estou utilizando async/away.
/home/max/Agendamento/1972-master/node_modules/cielo/lib/library.js:29
if ([200, 201].indexOf(statusCode) === -1) throw new Error(`Ocorre um erro ao fazer a requisição. StatusCode: ${statusCode}`)
^
Error: Ocorre um erro ao fazer a requisição. StatusCode: 400
at IncomingMessage.<anonymous> (/home/max/Agendamento/1972-master/node_modules/cielo/lib/library.js:29:58)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
Segue parte do service (com CardNumber = "", propositalmente)
exports.creditoSimples = async() => {
var dadosSale = {
"MerchantOrderId":"CONSULTA2019000001",
"Customer":{
"Name":"Comprador crédito simples"
},
"Payment":{
"Type":"CreditCard",
"Amount":15700,
"Installments":1,
"SoftDescriptor":"123456789ABCD",
"CreditCard":{
"CardNumber":"",
"Holder":"Teste Holder",
"ExpirationDate":"12/2030",
"SecurityCode":"123",
"Brand":"Visa"
}
}
}
const transaction = await cielo.creditCard.simpleTransaction(dadosSale);
return transaction;
}
Segue parte do controller
// Transação Simples
exports.post = async(req, res, next) => {
try {
var data = await svCielo.creditoSimples();
console.log('Crédito Simples ->', data)
res.status(201).send({
message: 'Transação realizada com sucesso!'
});
} catch (e) {
console.log(e);
res.status(500).send({
message: 'Falha ao processar sua requisição'
});
}
};
Rota utilizada
router.post('/simples', controller.post);
Alguem sabe se tem algum plugins pronto para usa ecommerce tipo deity-falcon, vuestorefront, cezerin2?
Futuro vai implementar?
Is your feature request related to a problem? Please describe.
curl
curl --request PUT "https://apisandbox.cieloecommerce.cielo.com.br/1/RecurrentPayment/{RecurrentPaymentId}/Deactivate"
--header "Content-Type: application/json"
--header "MerchantId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
--header "MerchantKey: 0123456789012345678901234567890123456789"
--header "RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
--data-binary
--verbose
Describe the solution you'd like
Desabilitar um pedido recorrente
Additional context
Seria muito importante ter a parte de cancelamento do pagamento recorrente junto a cielo.
A criação da Opção de pagamento por links achei super interessante. Contudo, gostaria de saber se é possível utilizar está API para realizar a geração de novos links para pagamento. Porque procurei opção de inserir o clientID e o Token e não encontrei. Será que a geração de novos pagamento por links só pode ser efetuado via POST?
Olá,
É mais uma dúvida do que feature.... mas senão tiver isso seria legal implementar... os dados que envio para geração de boleto, como um endereço com acentuação, a lib "banzeh/cielo" já faz todo o tratamento desses dados?
Estou utilizando seu package para integração com a cielo via node, e em testes de crédito (creio que débito também), estou com problemas para obter o retorno com cartão do tipo discover.
Vi que no enum EnumBrands, o discover está como DISCOVERY, programo há pouco tempo e não tenho certeza se é isso, mas utilizando o postman batendo direto na api da cielo consegui obter o retorno enviando o brand como DISCOVER.
Abraço,
Vinicius Colasanto.
Gostaria de saber se para reconhecer a bandeira do cartão vc utiliza uma API diferente da ConsultaBin para mandar o Request de uma compra.
Pois estou testando aqui, o ConsultaBin funciona apenas com cartões Visa e Master, fora isso, não está reconhecendo certo de acordo com os 6 números que passo como parâmetro.
Ola,
Existe a intenção de implementar o split de pagamento nesse pacote? Estou buscando algo e não encontro, e este pacote uso há algum tempo e gosto muito.
Abraços
Por muito tempo funcionava tudo corretamente. Mas recentemente comecei a receber esse erro da Cielo:
Ocorre um erro ao fazer a requisição. StatusCode: 400.
Estou usando chaves de acesso ao sandbox recém geradas. Alguma ideia do que pode ser?
Describe the bug
Ao criar uma recorrência, o retorno na trás nenhum dado, nem mesmo, código de erro
To Reproduce
Steps to reproduce the behavior:
cielo.recurrent.create()
;merchantOrderId, customer, payment
;recurrentPayment
e creditCard
;recurrentPayment
do objeto payment ele funciona como uma venda normal (pelo mesmo método citado acima).Expected behavior
Realizar uma recorrência e retornar os dados da recorrência, caso erro, retornar a mensagem de erro consistente. No caso, é retornado esse erro:
{
statusCode: '',
request: '{"merchantOrderId":"12345678","customer":{"name":"Fulano de Tal"},"payment":{"type":"CreditCard","amount":50,"installments":1,"returnUrl":"https://google.com.br","recurrentPayment":{"authorizeNow":true,"endDate":"2020-12-12","interval":"MONTHLY"},"creditCard":{"cardNumber":"5223 4049 1585 0591","holder":"Fulano de Tal","expirationDate":"05/2022","securityCode":"111","saveCard":false,"brand":"MASTER"}}}',
response: ''
}
Desktop (please complete the following information):
Additional context
Cartão gerado por um gerador web com o final 1 para validar a bandeira. (utilizando sandbox: true
e debug: true
)
Estou tentando utilizar junto com o firebase cloud functions utilizando typescript (v3.2.2) e cielo (^1.1.2) mas não consigo importar o módulo. Diz que não existe, já alterei tsconfig.json para aceitar JS e nada.
Alguém sabe como posso importar o módulo e usar perfeitamente no ts ou devo portar o código do módulo pra typescript para conseguir a importação?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.