iugu / iugu-node

iugu - Biblioteca para Node
33 stars 37 forks source link

Erro quando faz o stringify do objeto charge #8

Open eduardonunesp opened 8 years ago

eduardonunesp commented 8 years ago

Olá amigos, estou com o seguinte problema, quando executo o método charge.create e meu objecto é transformado no body post, a função stringifyRequestData faz algo inesperado com o meu array de items. Por exemplo:

iugu.charge.create({
  email: 'user@example.com',
  method: 'bank_slip',
  items: [{
    description: "Item Um",
    quantity: "1",
    price_cents: "1000"
  }]
}, function(err, response) {})

A request enviada será:

email=user%40example.com&method=bank_slip&items%5B%5D=%5Bobject%20Object%5D

Perceba que houve um erro ao transformar os itens do array, no caso aparece ali object Object, e o Iugu acaba por me retornar um error, invalidando o método charge

$ uname -ra 
Darwin prometheus.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64

$ node -v
v4.2.4
eduardonunesp commented 8 years ago

O erro retornado é o seguinte:

[Error: Invalid JSON received from the Iugu API] type: 'IuguAPIError', rawType: undefined, code: undefined, param: undefined, message: 'Invalid JSON received from the Iugu API', detail: undefined, raw: { message: 'Invalid JSON received from the Iugu API', response: '<!doctype html>\n\n \n \n algo está errado...\n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n

\n\n
\n \n
\n\n
\n
Algo está tecnicamente
\n
errado.
\n
Obrigado por notar, já vamos consertar. Em breve as coisas voltarão ao normal.
\n
\n\n
\n\n \n\n', exception: [SyntaxError: Unexpected token <] } } POST /api/users/checkoutb 400 2469.189 ms - -

vinicius0026 commented 8 years ago

Também estou tendo esse problema. Poderiam, por gentileza, esclarecer?

eduardonunesp commented 8 years ago

@vinicius0026 Eu resolvi no meu fork, transformei as requisições para JSON e as coisas parecem estar funcionando bem. Me parece q o projeto esta meio abandonado.

pnegri commented 8 years ago

Edu e Vinicius. Podem realizar mais testes e se estiver ok fazerem um pull request?

Abs

Em 25 de fevereiro de 2016 09:59, Eduardo Nunes Pereira < notifications@github.com> escreveu:

@vinicius0026 https://github.com/vinicius0026 Eu resolvi no meu fork, transformei as requisições para JSON e as coisas parecem estar funcionando bem. Me parece q o projeto esta meio abandonado.

— Reply to this email directly or view it on GitHub https://github.com/iugu/iugu-node/issues/8#issuecomment-188777150.

Att Patrick Negri - CEO iugu.com - Recebimentos e Assinaturas para a sua empresa

paruckerr commented 8 years ago

Estou com o mesmo problema, foi feito o pull request @eduardonunesp? abs!

phrsouza commented 7 years ago

O erro permanece ou já foi corrigido?

phrsouza commented 7 years ago

@eduardonunesp Teria como vc fazer um pull request? Seu fork resolveu meu problema aqui, muito obrigado =)

phrsouza commented 7 years ago

@paruckerr A seguinte chamada retornou o mesmo erro para mim.

let compra = {
        token: req.params.token,
        email: 'teste@teste.com.br',
        items: [
            {
                description: 'Pacote 1',
                quantity: 1,
                price_cents: 1111
            }
        ]
    };

    iugu.charge.create(compra , (err, charge) => {
        if (err){
            console.log(err);
            res.json(err);
        }
        else{
            res.json(charge);
        }
    });

Erro:

{
  "type": "IuguAPIError",
  "message": "Invalid JSON received from the Iugu API",
  "raw": {
    "message": "Invalid JSON received from the Iugu API",
    "response": "<!doctype html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <title>algo está errado...</title>\n\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\" />\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n    <meta name=\"apple-mobile-web-status-bar-style\" content=\"yes\" />\n    <meta http-equiv=\"cleartype\" content=\"on\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n    <meta name=\"MobileOptmized\" content=\"320\" />\n    \n    <link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n    <style type=\"text/css\">\n      @font-face {\n        font-family: \"Museo Sans 100\";\n        src: url(\"/fonts/museosans-100-webfont.eot\");\n        src: url(\"/fonts/museosans-100-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"/fonts/museosans-100-webfont.woff\") format(\"woff\"), url(\"/fonts/museosans-100-webfont.ttf\") format(\"truetype\"), url(\"/fonts/museosans-100-webfont.svg#museo_sans_100regular\") format(\"svg\");\n        font-weight: normal;\n        font-style: normal;\n      }\n\n      @font-face {\n        font-family: \"Museo Sans 300\";\n        src: url(\"/fonts/museosans-300-webfont.eot\");\n        src: url(\"/fonts/museosans-300-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"/fonts/museosans-300-webfont.woff\") format(\"woff\"), url(\"/fonts/museosans-300-webfont.ttf\") format(\"truetype\"), url(\"/fonts/museosans-300-webfont.svg#museo_sans_300regular\") format(\"svg\");\n        font-weight: normal;\n        font-style: normal;\n      }\n\n      @font-face {\n        font-family: \"Museo Sans 500\";\n        src: url(\"/fonts/museosans-500-webfont.eot\");\n        src: url(\"/fonts/museosans-500-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"/fonts/museosans-500-webfont.woff\") format(\"woff\"), url(\"/fonts/museosans-500-webfont.ttf\") format(\"truetype\"), url(\"/fonts/museosans-500-webfont.svg#museo_sans_500regular\") format(\"svg\");\n        font-weight: normal;\n        font-style: normal;\n      }\n\n      @font-face {\n        font-family: \"Museo Sans 700\";\n        src: url(\"/fonts/museosans-700-webfont.eot\");\n        src: url(\"/fonts/museosans-700-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"/fonts/museosans-700-webfont.woff\") format(\"woff\"), url(\"/fonts/museosans-700-webfont.ttf\") format(\"truetype\"), url(\"/fonts/museosans-700-webfont.svg#museo_sans_700regular\") format(\"svg\");\n        font-weight: normal;\n        font-style: normal;\n      }\n\n      html { \n        margin: 0px;\n        padding: 0px;\n      }\n      body {\n        padding: 20px;\n        font-family: \"Museo Sans 100\";\n        color: #424242;\n        font-size: 16px;\n      }\n\n      #box {\n        position: absolute;\n        width: 800px;\n        height: 400px;\n        top: 50%;\n        left: 50%;\n        margin-left: -400px;\n        margin-top: -200px;\n      }\n\n      #illustration {\n        position: absolute;\n        max-width: 80%;\n        top: 0px;\n        right: 0px;\n        z-index: 1;\n      }\n      #illustration img {\n        width: 100%;\n      }\n\n      .p1 {\n        font-family: \"Museo Sans 100\";\n        font-size: 2em;\n        max-width: 260px;\n      }\n      .p2 {\n        font-family: \"Museo Sans 700\";\n        font-size: 5em;\n      }\n      .p3 {\n        max-width: 340px;\n        margin-top: 20px;\n        font-family: \"Museo Sans 100\";\n        font-size: 1.3em;\n        color: #959595;\n        line-height: 1.4em;\n      }\n\n\n      @media screen and (max-width:820px) {\n        /* ... */\n        body {\n          font-size: 14px;\n        }\n        \n      \n\n        #box {\n          position: relative;\n          width: 100%;\n          height: auto;\n          top: auto;\n          left: auto;\n          margin-left: auto;\n          margin-right: auto;\n          margin-top: auto;\n        }\n\n        #illustration {\n          position: relative; \n          margin-left: auto;\n          margin-right: auto;\n          max-width: 90%;\n          top: auto;\n          right: auto;\n          margin-bottom: 40px;\n        }\n\n      }\n\n      @media screen and (max-width:400px) {\n        /* ... */\n        body {\n          font-size: 12px;\n        }\n      }\n    </style>\n  </head>\n  <body>\n\n    <div id=\"box\">\n\n      <div id=\"illustration\">\n        <img src=\"/500.png\" alt=\"\" />\n      </div>\n\n      <div style=\"z-index:5000;position:absolute;\">\n      <div class=\"p1\">Algo está tecnicamente</div>\n      <div class=\"p2\">errado.</div>\n      <div class=\"p3\">Obrigado por notar, já vamos consertar. Em breve as coisas voltarão ao normal.</div>\n      </div>\n\n    </div>\n\n  </body>\n</html>\n",
    "exception": {}
  }
}

As alterações propostas pelo @eduardonunesp resolveram meu problema..

phrsouza commented 7 years ago

O suporte do iugu me orientou a chamar a api diretamente. Como exemplo me passaram esse snippet aqui: https://gist.github.com/alepaez/50391a241b0da286ce8f8368392f5dcf

var request = require('request');
var options = {
  url: 'https://api.iugu.com/v1/invoices',
  contentType: 'application/json',
  json: true,
  body: {
    api_token: "MEUTOKEN",
    email: "test@test.test",
    due_date: "02/12/2016",
    items:
    [
        {description: "teste", quantity: 1, price_cents: 100},
        {description: "teste2", quantity: 1, price_cents: 100}
    ]
  }
}

request.post(options, function(err,httpResponse,body){
  console.log(body);
})
felipeplets commented 6 years ago

Pessoal, estou iniciando uma implementação e este erro segue na biblioteca, alguém responsável pelo projeto pode fazer o merge e gerar uma nova versão da lib?

andre0799 commented 6 years ago

+1

felipeplets commented 6 years ago

@andre0799 se quiser instalar minha versão da lib basta executar: npm install git+https://github.com/felipeplets/iugu-node.git