Semana 6 - Aula 6 - Prática de integração com Node-Fetch - Parte 2

Bom dia Galera!
Na aula 6 da Semana 6, gastei um tempinho aqui pra fazer a primeira parte do POST com o JSON da documentação da Cielo (https://developercielo.github.io/manual/’?shell#requisi%C3%A7%C3%A3o31), Por que o POSTMAN retornava um erro com o JSON utilizado.

Erro: SyntaxError: Unexpected string in JSON at position

Solução: o JSON da documentação atual da Cielo, está faltando “” em dois parâmetros, e tem uma (,) onde não deveria, depois de resolver isso, consegui seguir com a aula do professor. Deixando aqui o JSON ajustado pra quem esbarrar nesse erro. Espero que ajude a economizar um tempinho!

Estou alterando a postagem e colocando outro JSON aqui, porque o que corrigi, tirando a virgula ainda mostrava outro erro, seguindo uma sugestão do @jeanfraga, utilizei o JSON atualizado da documentação oficial da cielo, mas com a tag “capture”, deletada ou como “false”,
Agora sim foi!! No final das contas, minha solução de retirar a (,) não resolveu… rsrs.
Mas resolvi não deletar o post e manter assim mesmo, pra ajudar se alguem tiver o mesmo problema, e assim repasso os créditos de Solução ao colega @jeanfraga; Obrigada Jean!!

{  

   "MerchantOrderId":"2014111701",

   "Customer":{  

      "Name":"Comprador crédito completo",

      "Email":"compradorteste@teste.com",

      "Birthdate":"1991-01-02",

      "Address":{  

         "Street":"Rua Teste",

         "Number":"123",

         "Complement":"AP 123",

         "ZipCode":"12345987",

         "City":"Rio de Janeiro",

         "State":"RJ",

         "Country":"BRA"

      },

        "DeliveryAddress": {

            "Street": "Rua Teste",

            "Number": "123",

            "Complement": "AP 123",

            "ZipCode": "12345987",

            "City": "Rio de Janeiro",

            "State": "RJ",

            "Country": "BRA"

        },

        "Billing": {

            "Street": "Rua Neturno",

            "Number": "12345",

            "Complement": "Sala 123",

            "Neighborhood": "Centro",

            "City": "Rio de Janeiro",

            "State": "RJ",

            "Country": "BR",

            "ZipCode": "20080123"

  }

   },

   "Payment":{  

     "Currency":"BRL",

     "Country":"BRA",

     "ServiceTaxAmount":0,

     "Installments":1,

     "Interest":"ByMerchant",

     "Authenticate":"false",

     "Payment.Recurrent":"false",

     "SoftDescriptor":"123456789ABCD",

     "CreditCard":{  

         "CardNumber":"1234123412341231",

         "Holder":"Teste Holder",

         "ExpirationDate":"12/2030",

         "SecurityCode":"123",

         "SaveCard":"false",

         "Brand":"Visa",

         "CardOnFile":{

            "Usage": "Used",

            "Reason":"Unscheduled"

         }

     },

     "IsCryptoCurrencyNegotiation": true,

     "Type":"CreditCard",

     "Amount":15700,

     "AirlineData":{

         "TicketNumber":"AR988983"

     }

   }

} 
18 Likes

Ainda tou chegando nessa aula, porém, já agradeço pela colaboração.

Bons estudos !! :computer: :computer:

1 Like

A versão atual no node-fetch só funciona com ESModule. Você precisa fazer o downgrade pra conseguir importar com o “require” do jeito que ele faz na aula.

  1. Para desinstalar a versão atual: npm uninstall node-fetch
  2. Para instalar a versão compatível com “require”: npm install node-fetch@2
1 Like

E quais são os atributos que estão faltando os parenteses ?

Agora eu estou tendo alguns problemas com a resposta da requisição. Estou recebendo esses erros aqui quando faço o POST para localhost:3000/ecommerce-api/v1/compras:

…/node_modules/node-fetch/lib/index.js:273
return Body.Promise.reject(new FetchError(invalid json response body at ${_this2.url} reason: ${err.message}, ‘invalid-json’));
^
FetchError: invalid json response body at https://apisandbox.cieloecommerce.cielo.com.br/1/sales/ reason: Unexpected end of JSON input
at /Users/marco/Documents/01 Programação/Gama Academy/Node/REST API/Api1/node_modules/node-fetch/lib/index.js:273:32
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
type: ‘invalid-json’
}

O log da resposta é esse aqui:

Response {
size: 0,
timeout: 0,
[Symbol(Body internals)]: {
body: PassThrough {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: true,
[Symbol(kCapture)]: false,
[Symbol(kCallback)]: null
},
disturbed: false,
error: null
},
[Symbol(Response internals)]: {
url: ‘https://apisandbox.cieloecommerce.cielo.com.br/1/sales/’,
status: 404,
statusText: ‘Not Found’,
headers: Headers { [Symbol(map)]: [Object: null prototype] },
counter: 0
}
}
/Users/marco/Documents/01 Programação/Gama Academy/Node/REST API/Api1/lib/cielo.js:16
.then(res => res.json())
^

TypeError: Cannot read properties of undefined (reading ‘json’)
at /Users/marco/Documents/01 Programação/Gama Academy/Node/REST API/Api1/lib/cielo.js:16:26
at processTicksAndRejections (node:internal/process/task_queues:96:5)

tem um print do seu código ?

Tá idêntico ao da aula mas segue abaixo:

Também tive esse problema depois do ajuste do arquivo @comar80. Conseguiu evoluir? a tarde vou retomar essa parte da aula, se conseguir descobrir já posto aqui.

@comar80 Você conseguiu resolver este erro? O meu está apresentando ele também.

Nossa muito obrigado, me salvou com esse Json. Eu estav vendo mesmo que estava diferente da documentação que o Erik estava usando na aula , ai estava dando erro… com o seu JSON no postman deu certo

1 Like

Ainda não =/ acabei deixando de lado pra seguir com o conteúdo. Se conseguir resolver volto aqui pra avisar!

1 Like

@comar80 Eu acabei voltando uma aula e vi que eu tinha esquecido de trocar de ‘get’ para ‘put’ no arquivo da Cielo na parte de captura, fiz a alteração e funcionou.

1 Like