wchagas / pagseguro-node Goto Github PK
View Code? Open in Web Editor NEWIntegração com pagseguro em nodejs
License: MIT License
Integração com pagseguro em nodejs
License: MIT License
Quando realizado as instalações dos pacotes apresenta erros ao executar os testes em ambiente Windows:
SET NODE_ENV=tests&&jest
FAIL tests/transaction.test.js
● Test suite failed to run
Cannot find module './config' from 'transaction.test.js'
1 | const config = require("./config");
| ^
2 | const pagseguro = require("../src");
3 | const moment = require("moment");
4 |
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/transaction.test.js:1:1)
FAIL tests/installment.test.js
● Test suite failed to run
Cannot find module './config' from 'installment.test.js'
1 | const config = require('./config')
| ^
2 | const pagseguro = require('../src')
3 |
4 | describe('Installment', function() {
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/installment.test.js:1:1)
FAIL tests/session.test.js
● Test suite failed to run
Cannot find module './config' from 'session.test.js'
1 | const config = require("./config");
| ^
2 | const pagseguro = require("../src");
3 |
4 | describe("Session", function() {
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/session.test.js:1:1)
FAIL tests/format.test.js
● Test suite failed to run
Cannot find module './config' from 'format.test.js'
1 | const config = require('./config')
| ^
2 | const pagseguro = require('../src')
3 | const clone = require('clone')
4 |
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/format.test.js:1:1)
FAIL tests/connect.test.js
● Test suite failed to run
Cannot find module './config' from 'connect.test.js'
1 | const config = require('./config')
| ^
2 | const pagseguro = require('../src')
3 |
4 | describe('Connect', function() {
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/connect.test.js:1:1)
FAIL tests/authorization.test.js
● Test suite failed to run
Cannot find module './config' from 'authorization.test.js'
1 | const config = require('./config')
| ^
2 | const pagseguro = require('../src')
3 |
4 | describe('Authorization', function() {
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
at Object. (tests/authorization.test.js:1:1)
Test Suites: 6 failed, 6 total
Tests: 0 total
Snapshots: 0 total
Time: 7.299s
Primeiramente parabéns pela biblioteca, segundo, como eu faço para obter o token informado nessa linha?
Entendo que deve ser uma criptografia com os dados do cartão informado, problema que não achei na documentacao se existe esse metodo no codigo fonte.
Obrigado
Criei o objeto como no exemplo:
...
` creditCard: {
// Token retornado no serviço de obtenção de token do cartão de crédito (checkout transparente)
token: '',
installment: {
// Valor das parcelas obtidas no serviço de opções de parcelamento
value: '20.00',
// Quantidade de parcelas escolhidas pelo cliente
quantity: 4,
// Quantidade de parcelas sem juros oferecidas ao cliente. O valor deve ser o
// mesmo indicado no método getInstallments, no parâmetro
// maxInstallmentNoInterest.
noInterestInstallmentQuantity: 2
},`
...
O XML convertido não possue value gerando erro 400 do pagseguro:
"installment value is required"
Como gerar o hash do sender?
Erro de "sender hash is required." ao utilizar a funcão de débito.
Parabéns pelo trabalho. Mexi pouco com o projeto, mas o pelo pouco que vi, está muito bom.
Não é uma issue, seria um "improvement".
Ao criar uma sessão (já no .connect(config)) é exibida no console uma grande contidade de logs.
encapsulada em:
IncomingMessage {
...
}
Seria bom se existisse uma opcção no config para que as mensagens não fossem exibidas mesmo no ambiente de "dev".
Forte abraço!
Primeiramente parabéns pela contribuição e trabalho!
Estou obtendo uma exceção ao importar sua lib no projeto, o seguinte erro é exposto:
Error: Cannot find module '@babel/runtime/helpers/interopRequireDefault'
As únicas coisas que fiz foram:
npm install nodejs-pagseguro
;const pagseguro = require("nodejs-pagseguro")
;Se necessário, estou utilizando as seguinte versões:
O que pode estar havendo de errado?
estou usando em producao e reparei que as urls de producao de notificacao estao com uma barra no final o que impede o retorno da notificacao e pois o mesmo se encontra no estado 404
transaction: {
search: "v3/transactions",
//abandoned: 'v2/transactions' TODO: use?
directPayment: "v2/transactions",
code: "v2/transactions",
refund: "v2/transactions/refunds/",
cancel: "v2/transactions/cancels/",
notification: "v3/transactions/notifications/"
},
poderia tirar as barras?
Quero deixar minha gratidão pelo projeto @wchagas.
RESUMO: Venda com cartão de crédito
Requisitos:
1 - Get Session (tests/session.test.js);
2 - Get Token (Atualização que está pendente - Adicionado endpoint para gerar o token do cartão #8);
3 - Get Installment (Parcelas - tests/installment.test.js);
4 - Venda com cartão de crédito (ex: test/sellCardCredit.test.js - sugestão para nome do teste);
DETALHES DOS ITENS:
Como mencionado precisa desses quatro itens para a venda acontecer;
1 - Get Session (tests/session.test.js);
Nos testes do projeto esse teste mostra como você obtem o (session);
2 - Get Token (Atualização que está pendente - Adicionado endpoint para gerar o token do cartão #8);
Pull request do @rafaneri que se encontra pendente, caso queira implementar no seu projeto, aqui estão os arquivos https://github.com/wchagas/pagseguro-node/pull/8/files;
3 - Get Installment (Parcelas - tests/installment.test.js);
Nesse teste você obtem o parcelamento;
4 - Venda com cartão de crédito (codigo a seguir, pode ser aplicado como um test para venda com cartão de credito);
const config = require('./config');
const pagseguro = require('../src');
describe('Transaction', () => {
const client = pagseguro.connect(config.pagseguro);
it('creditCard', async () => {
const session = await client.session.get();
const token = await client.token.get(
Object.assign(config.card, { sessionId: session.content }),
);
const installment = await client.installment.get({
amount: 2370,
cardBrand: 'visa',
maxInstallmentNoInterest: 2,
});
const {
cardBrand,
quantity,
amount,
totalAmount,
interestFree,
} = installment.content[0]; //Venda somente com uma parcela, array retornado do pagseguro, caso queira mais de uma mude o indice
const request = {
method: 'CREDITCARD',
reference: `Tipo CREDITCARD, 23/09/2020 10:35, valorTotal ${amount}`,
sender: {
name: 'Willy Chagas',
email: '[email protected]', // https://sandbox.pagseguro.uol.com.br/comprador-de-testes.html
phone: {
areaCode: 48,
number: 91510980,
},
document: {
type: 'CPF',
value: 18974411008,
},
},
billing: {
street: 'Av João Lima',
number: 55,
complement: 'Casa',
district: 'Campeche',
city: 'Florianopolis',
state: 'SC',
country: 'BRA',
postalCode: '88063333',
},
items: [
{
id: 1,
description: 'Casa Flórida 109',
quantity: 1,
amount: 1680,
},
{
id: 2,
description: 'Projeto de Interiores',
quantity: 1,
amount: 690.0,
},
],
creditCard: {
token: token.content.token,
holder: {
name: 'Jose Comprador',
document: {
type: 'CPF',
value: 22111944785,
},
},
installment: {
quantity,
amount,
totalAmount,
installmentAmount: totalAmount,
},
},
};
const sellCredtiCard = await client.transaction.creditCard(request);
console.log(sellCredtiCard);
await expect(typeof sellCredtiCard).toEqual('object');
await expect(sellCredtiCard).toHaveProperty('content');
await expect(sellCredtiCard).toHaveProperty('statusCode');
await expect(sellCredtiCard.statusCode).toBe(200);
await expect(sellCredtiCard).toHaveProperty('status');
await expect(sellCredtiCard.status).toBe('success');
});
});
DÚVIDA:
Meu objetivo é ajudar e pedir ajuda, minha dúvida estou tendo erros quando faço a venda com cartão de crédito com mais de uma parcela, ou seja, quando faço com apenas uma parcela funciona (installment.content[0]), agora quando tento com mais de uma parcela (installment.content[2]), recebo o seguinte erro do PagSeguro:
Failed: PagseguroError {
"content": Array [
Object {
"code": 53041,
"message": "valor da parcela inválida",
},
],
"name": "PagseguroError",
"status": "error",
"statusCode": 400,
}
Caso você possa me ajudar com essa questão do parcelamento no cartão de crédito, ficarei grato.
Seria legal adicionar um suporte ao typescript
Fiz o clone do projeto e ao executar o npm install para ambiente windows, exibe o erro:
npm run clean && npm run test && npm run build
[email protected] clean C:\Users\Flavio\Documents\node\pagseguro-node
rimraf lib
[email protected] test C:\Users\Flavio\Documents\node\pagseguro-node
NODE_ENV=tests jest
'NODE_ENV' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
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.