Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro ao executar o post pagamentos/pagamento

log do servidor:

[nodemon] 1.19.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching dir(s): *.*
[nodemon] starting `node index.js`
consign v0.1.2 Initialized in C:\Users\user\Desktop\proj\payfast
+ .\controllers\correios.js
+ .\controllers\pagamentos.js
+ .\controllers\uploads.js
+ .\persistencia\connectionFactory.js
+ .\persistencia\PagamentoDao.js
+ .\servicos\clienteCartoes.js
+ .\servicos\correiosSOAPClient.js
Servidor rodando na porta 3000.
processando uma requisicao de um novo pagamento
pagamento criado
undefined
(node:120) [DEP0126] DeprecationWarning: timers.active() is deprecated. Please use timeout.refresh() instead.
(node:120) [DEP0096] DeprecationWarning: timers.unenroll() is deprecated. Please use clearTimeout instead.
C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\Parser.js:78
        throw err; // Rethrow non-MySQL errors
        ^

AssertionError [ERR_ASSERTION]: body
    at Object.module.exports.<computed> [as ok] (C:\Users\user\Desktop\proj\payfast\node_modules\restify\node_modules\assert-plus\assert.js:242:35)
    at JsonClient.write (C:\Users\user\Desktop\proj\payfast\node_modules\restify\lib\clients\json_client.js:33:12)
    at JsonClient.post (C:\Users\user\Desktop\proj\payfast\node_modules\restify\lib\clients\string_client.js:45:18)
    at CartoesClient.autoriza (C:\Users\user\Desktop\proj\payfast\servicos\clienteCartoes.js:10:17)
    at Query._callback (C:\Users\user\Desktop\proj\payfast\controllers\pagamentos.js:88:24)
    at Query.Sequence.end (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\sequences\Sequence.js:85:24)
    at Query._handleFinalResultPacket (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\sequences\Query.js:144:8)
    at Query.OkPacket (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\sequences\Query.js:78:10)
    at Protocol._parsePacket (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\Protocol.js:280:23)
    at Parser.write (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\Parser.js:74:12)
    at Protocol.write (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\Users\user\Desktop\proj\payfast\node_modules\mysql\lib\Connection.js:109:28)
    at Socket.emit (events.js:209:13)
    at addChunk (_stream_readable.js:305:12)
    at readableAddChunk (_stream_readable.js:286:11)
    at Socket.Readable.push (_stream_readable.js:220:10) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}
[nodemon] app crashed - waiting for file changes before starting...

JSON utilizado:

{
    "pagamento": {
        "forma_de_pagamento": "cartao",
        "valor": 98.53,
        "moeda": "USD",
        "descricao": "criando um pagamento"
    }
}

Estou utilizando o código do .zip da aula 3 e o pagamento consta corretamente no BD

5 respostas

Fala ai Mateus, tudo bem? Olhando os logs parece que ele logou um undefined.

Talvez seja o body da requisição, verifique se os dados estão chegando na API.

Como você está fazendo a requisição?

Espero ter ajudado.

Estou usando o programa postman.

A requisição chega na API pois os dados são inclusos corretamente no BD

Certo, consegue compartilhar o projeto comigo? Assim eu dou uma olhada por aqui com mais calma e detalhes.

Pode compartilhar através do Github ou Google Drive (zipado).

Se possível, também compartilha a requisição do Postman, para eu fazer igual, pode ser um print.

Fico no aguardo e desculpa pela demora.

a Requisição do postman é o JSON citado acima.

Estou utilizando o .zip disponibilizado no final da aula 3

Fala ai Mateus, tudo bem? O problema seu é que falta adicionar os dados do cartão no body da requisição.

Como seu pagamento é do tipo cartao você precisa passar os dados do mesmo, um exemplo completo seria:

{
  "pagamento":{
    "forma_de_pagamento":"cartao",
    "valor":98.53 ,
    "moeda":"USD",
    "descricao":"criando um pagamento"
  },
  "cartao":{
    "numero":1234123412341234,
    "bandeira":"visa",
    "ano_de_expiracao":2016,
    "mes_de_expiracao":12,
    "cvv":123
  }
}

Espero ter ajudado.