![]()
Moip v2 Ruby SDK
O jeito mais simples e rápido de integrar o Moip a sua aplicação Ruby
Índice
- Instalação
- Configurando a autenticação
- Configurando o ambiente
- Exemplos de Uso:
- Tratamento de Exceções
- Documentação
- Licença
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
NotFoundErrorcaso 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
- Essa função depende de permissões das contas associadas ao recebimento. Consulte a documentação.
- 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
NotFoundErrorcaso 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
NotFoundErrorserá 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
“