Skip to content

[Em desenvolvimento] Módulo Node.js para integração com API Moip v2

License

Notifications You must be signed in to change notification settings

micaelomota/moip-sdk-node

 
 

Repository files navigation

Moip SDK Node

O jeito mais simples e rápido de integrar o Moip a sua aplicação Node

[Em desenvolvimento - Não utilize em Produção] Módulo Node.js para integração com a API Moip v2 e assinaturas

Build Status js-standard-style

Índice

Instalação

Npm:

npm install moip-sdk-node --save

Configurando a autenticação

Pré-requisito - Gerar o access_token

var moip = require('moip-sdk-node')({
    token: 'SEU_TOKEN',
    key: 'SUA_CHAVE',
    accessToken: 'access_token',
    production: false // false para utilizar Sandbox e true para Production. Default: false
})

Contas moip

Criação

moip.account.create({
    email: {
        address: "dev.moip@labs.moip.com.br"
    },
    person: {
        name: "Runscope",
        lastName: "Random 9123",
        taxDocument: {
            type: "CPF",
            number: "123.456.798-91"
        },
        identityDocument: {
            type : "RG",
            number: "434322344",
            issuer: "SSP",
            issueDate: "2000-12-12"
        },
        birthDate: "1990-01-01",
        phone: {
            countryCode: "55",
            areaCode: "11",
            number: "965213244"
        },
        address: {
            street: "Av. Brigadeiro Faria Lima",
            streetNumber: "2927",
            district: "Itaim",
            zipCode: "01234-000",
            city: "São Paulo",
            state: "SP",
            country: "BRA"
        }
    },
    type: "MERCHANT",
    transparentAccount: false
}, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consulta

moip.account.getOne(account_id, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Clientes

Criação

moip.customer.create({
    fullname: 'Jose Silva',
    email: 'jose_silva0@email.com',
    birthDate: '1988-12-30',
    taxDocument: {
        type: 'CPF',
        number: '22222222222'
    },
    phone: {
        countryCode: '55',
        areaCode: '11',
        number: '66778899'
    },
    shippingAddress: {
        city: 'Sao Paulo',
        complement: '8',
        district: 'Itaim',
        street: 'Avenida Faria Lima',
        streetNumber: '2927',
        zipCode: '01234000',
        state: 'SP',
        country: 'BRA'
    }
}, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Adicionar Cartão de Crédito

moip.customer.createCreditCard(customer_id,{
    method: "CREDIT_CARD",
    creditCard: {
        expirationMonth: "05",
        expirationYear: "22",
        number: "5555666677778884",
        cvc: "123",
        holder: {
            fullname: "Jose Portador da Silva",
            birthdate: "1988-12-30",
            taxDocument: {
                type: "CPF",
                number: "33333333333"
            },
            phone: {
                countryCode: "55",
                areaCode: "11",
                number: "66778899"
            }
        }
    }
}, function(error, body, response) {
if (error) {
    console.log(error)
} else {
    console.log(body) 
}
})

Deletar Cartão de Crédito

moip.customer.deleteCreditCard(creditcard_id,function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consulta

moip.customer.getOne(customer_id, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consultar todos

moip.customer.getAll(function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Pedidos

Criação

moip.order.create({
    amount: {
        currency: 'BRL',
        subtotals: {
            shipping: 1000
        }
    },
    items: [{
        product: 'Descrição do pedido',
        quantity: 1,
        detail: 'Mais info...',
        price: 1000
    }],
    customer: {
        fullname: 'Jose Silva',
        email: 'jose_silva0@email.com',
        birthDate: '1988-12-30',
        taxDocument: {
            type: 'CPF',
            number: '22222222222'
        },
        phone: {
            countryCode: '55',
            areaCode: '11',
            number: '66778899'
        },
        shippingAddress: {
            street: 'Avenida Faria Lima',
            streetNumber: 2927,
            complement: 8,
            district: 'Itaim',
            city: 'Sao Paulo',
            state: 'SP',
            country: 'BRA',
            zipCode: '01234000'
        }
    }
}, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consulta

Pedido Específico

moip.order.getOne('ORD-SFGB23X8WAVQ', function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Todos os Pedidos

Sem Filtro
moip.order.getAll(function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Pagamentos

Criação

Cartão de Crédito

moip.payment.create('ORD-SFGB23X8WAVQ', {
    {
        installmentCount: 1,
        fundingInstrument: {
            method: 'CREDIT_CARD',
            creditCard: {        
                hash: 'HASH -- gerado do carto a partir de sua chave pública',
                holder: {
                    fullname: 'Jose Santos',
                    birthdate: '1980-01-02',
                    taxDocument: {
                        type: 'CPF',
                        number: '12345679891'
                    },
                    phone: {
                        countryCode: '55',
                        areaCode: '11',
                        number: '25112511'
                    }
                }
            }
        }
    }
}, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Com Hash

Com Boleto

moip.payment.create('ORD-SFGB23X8WAVQ', {
    fundingInstrument: {
        method: "BOLETO",
        boleto: {
            expirationDate: "2017-09-30",
            instructionLines: {
                first: "Primeira linha do boleto",
                second: "Segunda linha do boleto",
                third: "Terceira linha do boleto"
            },
            logoUri: "https://sualoja.com.br/logo.jpg"
        }
    }
}
, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Capturar

moip.payment.preAuthorizationCapture('PAY-6PYBC8E93M2L', function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Cancelar

moip.payment.preAuthorizationCancel('PAY-6PYBC8E93M2L', function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consulta

moip.payment.getOne('PAY-6PYBC8E93M2L', function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Moip Connect

Solicitar permissões de acesso ao usuário

Para solicitar permissão para o merchant (seller) é necessário redirecioná-lo para uma URL de solicitação de permissões. A lista completa de escopos disponíveis está disponível aqui na nossa documentação.

moip.connect.getAuthorizeUrl({
    client_id: 'APP-XXXXXXXXXXXX',
    redirect_uri: 'https://url_registered.in.yourapp',
    scopes: ['RECEIVE_FUNDS', 'REFUND']
}, function (error, url) {
    if (error) {
        console.log(error);
    } else {
        console.log('Redirect user to this URL: ', url);
    }
}

Gerar token OAuth

Uma vez que o merchant (seller) deu permissão para o seu marketplace ou plataforma, você precisa gerar o access token de autenticação do mesmo.

moip.connect.generateToken({
    client_id: 'APP-XXXXXXXXXXXX',
    redirect_uri: 'https://url_registered.in.yourapp',
    client_secret: 'the secret token returned when you created your APP',
    grant_type: 'authorization_code',
    code: 'the code returned to your redirect_uri after seller authorized'
}, function (error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
}

Preferências de notificação

Criação

 moip.notification.create({
     events: [
         'ORDER.*',
         'PAYMENT.AUTHORIZED',
         'PAYMENT.CANCELLED'
     ],
     target: 'https://requestb.in/17ndz451',
     media: 'WEBHOOK'
 }, function(error, body, response) {
     if (error) {
         console.log(error)
     } else {
         console.log(body) 
     }
 })

Consulta

moip.notification.getOne('NPR-1231231231', function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Exclusão

moip.notification.delete('NPR-1231231231', function(error, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(response) 
    }
})

Listagem

moip.notification.getAll(function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Contas bancárias

Criação

moip.bankAccount.create(_account_id,{
    bankNumber: "237",
    agencyNumber: "12345",
    agencyCheckNumber: "0",
    accountNumber: "12345678",
    accountCheckNumber: "7",
    type: "CHECKING",
    holder: {
        taxDocument: {
            type: "CPF",
            number: "622.134.533-22"
        },
        fullname: "Demo Moip"
    }
}, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consulta

moip.bankAccount.getOne(bank_account_id, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Consultar todas

moip.bankAccount.getAll(account_id, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Deletar

moip.bankAccount.deleteOne(bankaccount_id, function(error, body, response) {
    if (error) {
        console.log(error)
    } else {
        console.log(body) 
    }
})

Referência API

Documentação oficial v2

Documentação oficial Assinaturas

Links Úteis

Número de cartões para teste

Simulando diferentes estados de pagamento

Guia para assinaturas

Licença

The MIT License

About

[Em desenvolvimento] Módulo Node.js para integração com API Moip v2

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%