wirecardBrasil / moip-sdk-node

Módulo Node.js para integração com API Moip v2
MIT License
58 stars 14 forks source link

StatusCodeError: 500 - "ERROR":"Ops... We were not waiting for it" #34

Closed rodrigofbm closed 5 years ago

rodrigofbm commented 5 years ago

Estava funcionando normalmente, mas hoje fui testar e passei a receber essa mensagem. Não há mais nada sobre o erro além dessa mensagem.

Igor-Lopes commented 5 years ago

Você teria como postar o seu código com a função que você está utilizando, juntamente com o body da sua request ? Além disso, qual environment você está utilizando, produção ou sandbox ? Já vi alguns parâmetros inválidos que acabam resultando nisso, assim como já vi o ambiente sandbox indisponível algumas poucas vezes, mas sem o seu código fica ruim de analisar.

rodrigofbm commented 5 years ago

Está no ambiente sandbox. Eu até usei os parâmetros do exemplo aqui da lib, mas deu o mesmo resultado, cheguei a pensar que realmente o ambiente sandbox possa estar offline

Igor-Lopes commented 5 years ago

@rodrigofbm Mas então, posta o seu código com a sua request pra gente analisar.

rodrigofbm commented 5 years ago
module.exports.createCustomerCard = (application, req, res) => {
    let ownerId = req.params.ownerId;
    const { User } = require('../models/Schemas/userSchema');
        const moipModels = new application.app.models.moipModels(User);

    const pubKey = `-----BEGIN PUBLIC KEY-----

                    -----END PUBLIC KEY-----`;

    req.assert('expirationMonth', 'O mês deve ter dois dígitos').isLength({ min: 2, max:2 });
    req.assert('expirationYear', 'O ano deve ter dois dígitos').isLength({ min: 2, max:2 });

    let errors = req.validationErrors();

    if(errors) {
        console.log(errors);
        return res.status(403).send(errors);
    }

    const {
        nome,
        email,
        dataNascimento,
        cpf,
        foneAreaCode,
        foneNumber,
        expirationMonth,
        expirationYear,
        creditCardNumber,
        ccv
    } = req.body;

    let novaData = dataNascimento.split('/');
    let dataAmericana = novaData[2] + '-' + novaData[1] + '-' + novaData[0];

    moip.customer.createCreditCard('5bafd7cac8e01b1a66f3ea30', {
        method: "CREDIT_CARD",
        creditCard: {
            expirationMonth: '05',
            expirationYear: '22',
            number: '5555666677778884',
            cvc: '123',
            holder: {
                fullname: 'Rodrigo Torres',
                birthdate: '1993-11-16',
                taxDocument: {
                    type: "CPF",
                    number: '08087383831'
                },
                phone: {
                    countryCode: "55",
                    areaCode: '21',
                    number: '32323443'
                }
            }
        }
    }).then((response) => {
        MoipCreditCard
            .setEncrypter(JSEncrypt, 'node')
            .setPubKey(pubKey)
            .setCreditCard({ 
                number: `${creditCardNumber}`,
                cvc: '123',  
                expirationMonth: '05',
                expirationYear: '22'
            })
            .hash()
            .then(hash => {
                moipModels.addCustomerCard(res, ownerId, hash, response.body); 
            });

    }).catch((err) => {
        res.status(400).send({error: `${err}`});
        console.log(err)
    });

}
Igor-Lopes commented 5 years ago

Embora os seus parâmetros estejam corretos, tentei com outros parâmetros válidos e a API sempre retorna o mesmo erro, o que me leva acreditar que realmente se trata de alguma instabilidade no ambiente sandbox. Tentei outras resources como criar uma Order ou listar os Payments, e funcionam normalmente. Parece algo limitado aos cartões dos customers. Por um breve momento, acessando o painel sandbox tive o Erro 502 do NGINX e algumas requests demoraram a responder. O @somentelucas poderia talvez confirmar se trata de alguma instabilidade do ambiente.

rodrigofbm commented 5 years ago

Isso. Os outros métodos funcionam normalmente. Vou aguardar.

Igor-Lopes commented 5 years ago

Realmente se tratava de alguma instabilidade do ambiente Sandbox:

screen shot 2018-10-11 at 13 49 47

matheusdavidson commented 5 years ago

No meu caso o problema é que eu estava enviando o customer como array ao invés de objeto

Igor-Lopes commented 5 years ago

@matheusdavidson Alguns parâmetros inválidos podem resultar neste tipo de erro.