Moip v2 Ruby SDK

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

Build Status Code Climate Test Coverage

Índice

Instalação

Adicione a seguinte linha no seu Gemfile:

“by gem “moip2”

Configurando a autenticação

Por BasicAuth

“by auth = Moip2::Auth::Basic.new(“TOKEN”, “SECRET”)

Por OAuth

“by auth = Moip2::Auth::OAuth.new(“TOKEN_OAUTH”)

Configurando o ambiente

Após definir o tipo de autenticação, é necessário gerar o client, informando em qual ambiente você quer executar suas ações:

“by client = Moip2::Client.new(:sandbox/:production, auth)

Após isso, é necessário instanciar um ponto de acesso a partir do qual você utilizará as funções da API:

“by api = Moip2::Api.new(client)

Você pode customizar o client passando um hash de opções na inicialização. Essas opções serão passadas adiante para o client HTTParty, que aceita as opções descritas na documentação.

Por exemplo, para alterar o timeout das requisições para 5 segundos:

“by client = Moip2::Client.new(:sandbox/:production, auth, timeout: 5)

Clientes

Criação

“by customer = api.customer.create({ ownId: “meu_id_de_cliente”, fullname: “Jose Silva”, email: “[email protected]”, phone: { #… }, birthDate: “1988-12-30”, taxDocument: { #… }, shippingAddress: { #… }, fundingInstrument: { # Campo opcional. Consulte a documentação da API. } })

Consulta

“by customer = api.customer.show(“CUS-V41BR451L”)

Adicionar cartão de crédito

“by credit_card = api.customer.add_credit_card(“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”, }, }, }, } )

Deletar cartão de crédito

Retorna uma Exception do tipo NotFoundError caso não encontre o cartão de crédito para deletar.

“by api.customer.delete_credit_card!(“CREDIT-CARD-ID”)

Pedidos

Criação

“by order = api.order.create({ own_id: “ruby_sdk_1”, items: [{ product: Nome do produto, quantity: 1, detail: Mais info, price: 1000 }], customer: { own_id: “ruby_sdk_customer_1”, fullname: “Jose da Silva”, email: “[email protected]”, } })

Consulta

Pedido Específico

“by order = api.order.show(“ORD-V41BR451L”)

Todos os Pedidos

Sem Filtro

“by orders = api.order.find_all()

Com Filtros

“by orders = api.order.find_all(filters: { status: { in: [PAID, WAITING] }, amount: { bt: [500, 1000] } })

Com Paginação

“by orders = api.order.find_all(limit: 10, offset: 50)

Consulta Valor Específico

“by orders = api.order.find_all(q: “your_value”)

Pagamentos

Criação

Cartão de Crédito

Com Hash

“by api.payment.create(order.id, { installment_count: 1, funding_instrument: { method: “CREDIT_CARD”, credit_card: { hash: “valor do cartão criptografado vindo do JS”, holder: { fullname: “Jose Portador da Silva”, birthdate: “1988-10-10”, tax_document: { type: “CPF”, number: “22222222222” } } } } } )

Com Dados do Cartão

Esses método requer certificação PCI. Consulte a documentação.

“by api.payment.create(order.id, { installment_count: 1, funding_instrument: { method: “CREDIT_CARD”, credit_card: { expiration_month: 04, expiration_year: 18, number: “4002892240028922”, cvc: “123”, holder: { # … } } } } )

Com Boleto

“by api.payment.create(order.id, { # … funding_instrument: { method: “BOLETO”, boleto: { expiration_date: “2017-09-30”, instruction_lines: { first: “Primeira linha do boleto”, second: “Segunda linha do boleto”, third: “Terceira linha do boleto” }, logo_uri: “https://sualoja.com.br/logo.jpg” } } } )

Consulta

“by pagamento = api.payment.show(“PAY-CRUP19YU2VE1”)

Capturar pagamento pré-autorizado

“by api.payment.capture(“PAY-KT5OSI01X8QU”)

Cancelar pagamento pré-autorizado

“by api.payment.void(“PAY-IXNGCU456GG4”)

Reembolsos

Criação

Valor Total

“by reembolso = api.refund.create(“ORD-V41BR451L”)

Valor Parcial

“by reembolso = api.refund.create(“ORD-V41BR451L”, amount: 2000)

Consulta

“by reembolso = api.refund.show(“REF-V41BR451L”)

Multipedidos

Criação

“by multi = api.multi_order.create( { ownId: “meu_multiorder_id”, orders: [{ # Objeto Order 1 }, { # Objeto Order 2 }] } )

Consulta

“by multi = api.multi_order.show(“MOR-V41BR451L”)

Nota

  1. Essa função depende de permissões das contas associadas ao recebimento. Consulte a documentação.
  2. Para reembolsos de multipedidos, é necessario reembolsar os pedidos individualmente. Consulte a documentação.

Multipagamentos

Criação

“by multi_pag = api.multi_payment.create(“MOR-V41BR451L”, { installmentCount: 1, fundingInstrument: { # … } } )

Consulta

“by multi_pag = api.multi_payment.show(“MPY-V41BR451L”)

Capturar multipagamento pré-autorizado

“by multi = api.multi_payment.capture(“MPY-V41BR451L”)

Cancelar multipagamento pré-autorizado

“by multi = api.multi_payment.void(“MPY-V41BR451L”)

Conta Moip

Criação

“by account = api.accounts.create( { email: { address: “[email protected]”, }, person: { name: “Joaquim José”, lastName: “Silva Silva”, taxDocument: { type: “CPF”, number: “572.619.050-54”, }, identityDocument: { type: “RG”, number: “35.868.057-8”, 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\u00E3o Paulo”, state: “SP”, country: “BRA”, }, }, type: “MERCHANT” } )

Consulta

“by account = api.accounts.show(“MPA-12312312312”)

Verifica se usuário já possui Conta Moip

“by api.accounts.exists?(“123.456.789.10”)

Conta bancária

Criação

“by bank_account = api.bank_accounts.create(“MPA-14C9EE706C55”, bank_number: “237”, agency_number: “12345”, agency_check_number: “0”, account_number: “12345678”, account_check_number: “7”, type: “CHECKING”, holder: { tax_document: { type: “CPF”, number: “164.664.426-32”, }, fullname: “Sales Machine da Silva”, })

Consulta

“by api.bank_accounts.show(“BKA-DWTSK16UQI9N”)

Listagem

“by api.bank_accounts.find_all(“MPA-14C9EE706C55”)

Atualizar conta bancaria

“by api.bank_accounts.update(“BKA-DWTSK16UQI9N”, bank_number: “237”, agency_number: “12345”, agency_check_number: “0”, account_number: “87654323”, account_check_number: “7”, type: “CHECKING”, holder: { tax_document: { type: “CPF”, number: “164.664.426-32”, }, fullname: “Sales Machine da Silva”, })

Deletar conta bancaria

Retorna uma Exception do tipo NotFoundError caso não encontre a conta bancária para deletar

“by api.bank_accounts.delete(“BKA-DWTSK16UQI9N”)

OAuth (Moip Connect)

Solicitar permissões de acesso ao usuário

“by api.connect.authorize_url(“APP-ID”,“http://localhost/moip/callback”,“RECEIVE_FUNDS,REFUND”)

Gerar token OAuth

“by api.connect.authorize( client_id: “APP-YRYCCJ5P603B”, client_secret: “363cdf8ab70a4c5aa08017564c08efbe”, code: “4efde1f89d9acc3b12124ccfded146518465e423”, redirect_uri: “http://localhost/moip/callback”, grant_type: “authorization_code” )

Atualizar token OAuth

“by api.connect.authorize( refresh_token: “1d5dc51e71674683b4ed79cd7a988fa1_v2”, grant_type: “refresh_token” )

Obter Chave Pública

“by keys = api.keys.show

Preferências de notificação

Criação

“by api.notifications.create( events: [ORDER., PAYMENT.AUTHORIZED, PAYMENT.CANCELLED], target: http://requestb.in/1dhjesw1, media: WEBHOOK )]

Consulta

“by api.notifications.show(“NOTIFICATION-ID”)

Exclusão

Caso o notification não seja encontrado uma exceção do tipo NotFoundError será lançada, veja como tratar aqui.

“by api.notifications.delete(“NOTIFICATION-ID”)

Listagem

“by api.notifications.find_all

Webhooks

Consulta

Todos Webhooks

“by webhooks = api.webhooks.find_all

Com Paginação

“by webhooks = api.webhooks.find_all(limit: 10, offset: 50)

Consulta Evento

“by webhooks = api.webhooks.find_all(event: “PAYMENT.WAITING”)

Consulta Valor Específico

“by webhooks = api.webhooks.find_all(resource_id: “PAY-REJJ9F12MF7R”)

Saldo Moip

Consulta

“by api.balances.show()

Show all entries

“by api.entries.find_all

Show one entry

“by api.entries.show(entry_id)

Tratamento de Exceções

Caso algum recurso não seja encontrado uma exceção do tipo NotFoundError será lançada.

“by begin api.payment.create( # … ) rescue NotFoundError => e puts e.message end

Documentação

Documentação oficial

Licença

The MIT License