PHPackages                             hrodryk/zoop-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. hrodryk/zoop-php

ActiveLibraries

hrodryk/zoop-php
================

Cliente em PHP para integração server-side com APIs Zoop

1100PHP

Since May 10Pushed 7y agoCompare

[ Source](https://github.com/Hrodryk/zoop-php)[ Packagist](https://packagist.org/packages/hrodryk/zoop-php)[ RSS](/packages/hrodryk-zoop-php/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

[![](https://gist.githubusercontent.com/joaolucasl/00f53024cecf16410d5c3212aae92c17/raw/1789a2131ee389aeb44e3a9d5333f59cfeebc089/moip-icon.png)](https://gist.githubusercontent.com/joaolucasl/00f53024cecf16410d5c3212aae92c17/raw/1789a2131ee389aeb44e3a9d5333f59cfeebc089/moip-icon.png)

MoIP v2 PHP client SDK
======================

[](#moip-v2-php-client-sdk)

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

> Estado atual do sdk

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/f444edac299fe912a409c71f7fcc895e9af01991389101c7ca42d5e5ee7e5830/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6d6f69702f6d6f69702d73646b2d7068702f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/moip/moip-sdk-php/?branch=master)[![Code Climate](https://camo.githubusercontent.com/267dfe68dd9c436178909009029d1383b7322c8473540f2cbe301de0ff572865/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f6d6f69702f6d6f69702d73646b2d7068702f6261646765732f6770612e737667)](https://codeclimate.com/github/moip/moip-sdk-php)[![Codacy Badge](https://camo.githubusercontent.com/17386d83f181c212cecbfc99fd7dedaa8073f216a7270c332ac97a4c998a8979/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f3965383737636637386638343462396139653430636563313735633361613561)](https://www.codacy.com/app/jeancesargarcia/moip-sdk-php?utm_source=github.com&utm_medium=referral&utm_content=moip/moip-sdk-php&utm_campaign=Badge_Grade)[![StyleCI](https://camo.githubusercontent.com/41e298c09c7989f36d9ee9c857a0680050b0b112c68a082bba5aa901a743b51d/68747470733a2f2f7374796c6563692e696f2f7265706f732f31393934313839392f736869656c64)](https://styleci.io/repos/19941899)[![Build Status](https://camo.githubusercontent.com/3a984350aa08ee6df19aa33f48df00dd604c8c509bca5e8942faa257a9a1380b/68747470733a2f2f7472617669732d63692e6f72672f6d6f69702f6d6f69702d73646b2d7068702e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/moip/moip-sdk-php)

> Estatísticas

[![Total Downloads](https://camo.githubusercontent.com/88d922c97a613140774c543c9741f3f25403936bd48268e3cbd30e5507e54f85/68747470733a2f2f706f7365722e707567782e6f72672f6d6f69702f6d6f69702d73646b2d7068702f646f776e6c6f616473)](https://packagist.org/packages/moip/moip-sdk-php)[![Monthly Downloads](https://camo.githubusercontent.com/ea5010312bb6f726c613cc311345203b92b93cebc335edfd2f85936346a05e15/68747470733a2f2f706f7365722e707567782e6f72672f6d6f69702f6d6f69702d73646b2d7068702f642f6d6f6e74686c79)](https://packagist.org/packages/moip/moip-sdk-php)

> Versões

[![Latest Stable Version](https://camo.githubusercontent.com/aab09fa90c6a060cbd8f091b77d959fef49de53fda2927b479b36807eccd77d2/68747470733a2f2f706f7365722e707567782e6f72672f6d6f69702f6d6f69702d73646b2d7068702f762f737461626c65)](https://packagist.org/packages/moip/moip-sdk-php)[![Latest Unstable Version](https://camo.githubusercontent.com/dcf222289db0fc565a67848048263d9963a0a06c3926da357010235f68b33082/68747470733a2f2f706f7365722e707567782e6f72672f6d6f69702f6d6f69702d73646b2d7068702f762f756e737461626c65)](https://packagist.org/packages/moip/moip-sdk-php)

---

**Índice**

- [Instalação](#instala%C3%A7%C3%A3o)
- [Configurando a autenticação](#configurando-a-autentica%C3%A7%C3%A3o)
    - [Por BasicAuth](#por-basic-auth)
    - [Por OAuth](#por-oauth)
- [Exemplos de Uso](#clientes):
    - [Clientes](#clientes)
        - [Criação](#criando-um-comprador)
        - [Consulta](#consultando-os-dados-de-um-comprador)
        - [Adicionar cartão de crédito](#adicionar-cart%C3%A3o-de-cr%C3%A9dito)
        - [Deletar cartão de crédito](#deletar-cart%C3%A3o-de-cr%C3%A9dito)
    - [Pedidos](#pedidos)
        - [Criação](#criando-um-pedido-com-o-comprador-que-acabamos-de-criar)
        - [Consulta](#consultando-um-pedido)
            - [Pedido Específico](#pedido-espec%C3%ADfico)
            - [Todos os Pedidos](#todos-os-pedidos)
                - [Sem Filtro](#sem-filtro)
                - [Com Filtros](#com-filtros)
                - [Com Paginação](#com-pagina%C3%A7%C3%A3o)
                - [Consulta Valor Específico](#consulta-valor-espec%C3%ADfico)
    - [Pagamentos](#pagamentos)
        - [Criação](#cria%C3%A7%C3%A3o)
            - [Cartão de Crédito](#cart%C3%A3o-de-cr%C3%A9dito)
                - [Inserir dados do portador](#inserir-dados-do-portador)
                - [Com Hash](#com-hash)
                - [Com Dados do Cartão](#com-dados-do-cart%C3%A3o)
            - [Com Boleto](#criando-um-pagamento-com-boleto)
            - [Com Débito Bancário](#criando-um-pagamento-com-d%C3%A9bito-banc%C3%A1rio)
        - [Consulta](#consulta)
        - [Capturar pagamento pré-autorizado](#capturar-pagamento-pr%C3%A9-autorizado)
        - [Cancelar pagamento pré-autorizado](#cancelar-pagamento-pr%C3%A9-autorizado)
    - [Reembolsos](#reembolsos)
        - [Cartão de crédito](#cart%C3%A3o-de-cr%C3%A9dito-1)
            - [Valor Total](#valor-total)
            - [Valor Parcial](#valor-parcial)
        - [Conta bancária](#conta-banc%C3%A1ria)
            - [Valor Total](#valor-total-1)
            - [Valor Parcial](#valor-parcial-1)
        - [Consulta](#consultar-reembolso)
    - [OAuth (Moip Connect)](#oauth-moip-connect)
        - [Solicitar permissões de acesso ao usuário](#solicitar-permiss%C3%B5es-de-acesso-ao-usu%C3%A1rio)
        - [Gerando access token OAuth](#gerando-access-token-oauth)
    - [Multipedidos](#multipedidos)
        - [Criação](#criando-um-multipedido)
        - [Consulta](#consultando-um-multipedido)
    - [Multipagamentos](#multipagamentos)
        - [Criação](#criando-um-multipagamento)
        - [Consulta](#consulta-2)
    - [Conta Moip](#conta-moip)
        - [Criação](#cria%C3%A7%C3%A3o-1)
        - [Consulta](#consulta-3)
        - [Consulta](#consulta-1)
        - [Verifica se usuário já possui Conta Moip](#verifica-se-usu%C3%A1rio-j%C3%A1-possui-conta-moip)
        - [Obter chave pública de uma Conta Moip](#obter-chave-p%C3%BAblica-de-uma-conta-moip)
    - [Saldo Moip](#saldo-moip)
        - [Consulta](#consultar-saldos)
    - [Conta Bancária](#conta-banc%C3%A1ria-1)
        - [Criação](#criar-conta-banc%C3%A1ria)
        - [Consulta](#consultar-conta-banc%C3%A1ria)
        - [Listagem](#listar-contas-banc%C3%A1rias)
        - [Atualização](#atualizar-conta-banc%C3%A1ria)
        - [Deletar](#deletar-conta-banc%C3%A1ria)
    - [Transferência](#transfer%C3%AAncia)
        - [Criação](#criando/executando-uma-transfer%C3%AAncia)
        - [Consulta](#consultar-transfer%C3%AAncia)
        - [Listagem](#listar-transfer%C3%AAncias)
        - [Reversão](#reverter-transfer%C3%AAncia)
    - [Preferências de Notificação](#prefer%C3%AAncias-de-notifica%C3%A7%C3%A3o)
        - [Criação](#cria%C3%A7%C3%A3o-2)
        - [Consulta](#consulta-5)
        - [Exclusão](#exclus%C3%A3o)
        - [Listagem](#listagem)
    - [Webhooks](#webhooks)
        - [Consulta](#consulta-6)
- [Packages](#packages)
- [Tratamento de exceções](#tratamento-de-exce%C3%A7%C3%B5es)
- [Documentação](#documenta%C3%A7%C3%A3o)
- [Testes](#testes)
- [Licença](#licen%C3%A7a)
- [Comunidade Slack](#comunidade-slack-) [![Slack](https://user-images.githubusercontent.com/4432322/37355972-ba0e9f32-26c3-11e8-93d3-39917eb24109.png)](https://slackin-cqtchmfquq.now.sh)

Packages
--------

[](#packages)

- [Laravel 5.x](https://github.com/artesaos/moip)
- [Symfony 2 ou 3](https://github.com/leonnleite/moip-bundle)
- [Laravel 4.x (MoIP API v1)](https://github.com/SOSTheBlack/moip)

Dependências
------------

[](#dependências)

#### require

[](#require)

- PHP &gt;= 5.5
- rmccue/requests &gt;= 1.0

#### require-dev

[](#require-dev)

- phpunit/phpunit ~ 4.0

Instalação
----------

[](#instalação)

Execute em seu shell:

```
composer require moip/moip-sdk-php

```

Configurando a autenticação
---------------------------

[](#configurando-a-autenticação)

### Por Basic Auth

[](#por-basic-auth)

```
require 'vendor/autoload.php';

use Moip\Moip;
use Moip\Auth\BasicAuth;

$token = '01010101010101010101010101010101';
$key = 'ABABABABABABABABABABABABABABABABABABABAB';

$moip = new Moip(new BasicAuth($token, $key), Moip::ENDPOINT_SANDBOX);
```

### Por OAuth

[](#por-oauth)

```
require 'vendor/autoload.php';

use Moip\Moip;
use Moip\Auth\OAuth;

$access_token = '33031e2aad484051b89030487e59d133_v2';
$moip = new Moip(new OAuth($access_token), Moip::ENDPOINT_SANDBOX);
```

Clientes
--------

[](#clientes)

### Criando um comprador

[](#criando-um-comprador)

Nesse exemplo será criado um pedido com dados do cliente - Com endereço de entrega e de pagamento.

```
$customer = $moip->customers()->setOwnId(uniqid())
    ->setFullname('Fulano de Tal')
    ->setEmail('fulano@email.com')
    ->setBirthDate('1988-12-30')
    ->setTaxDocument('22222222222')
    ->setPhone(11, 66778899)
    ->addAddress('BILLING',
        'Rua de teste', 123,
        'Bairro', 'Sao Paulo', 'SP',
        '01234567', 8)
    ->addAddress('SHIPPING',
                'Rua de teste do SHIPPING', 123,
                'Bairro do SHIPPING', 'Sao Paulo', 'SP',
                '01234567', 8)
    ->create();
print_r($customer);
```

### Consultando os dados de um comprador

[](#consultando-os-dados-de-um-comprador)

```
$customer = $moip->customers()->get('CUS-Q3BL0CAJ2G33');
print_r($customer);
```

### Adicionar cartão de crédito

[](#adicionar-cartão-de-crédito)

```
$customer = $moip->customers()->creditCard()
    ->setExpirationMonth('05')
    ->setExpirationYear(2018)
    ->setNumber('4012001037141112')
    ->setCVC('123')
    ->setFullName('Jose Portador da Silva')
    ->setBirthDate('1988-12-30')
    ->setTaxDocument('CPF', '33333333333')
    ->setPhone('55','11','66778899')
    ->create(CUSTOMER_ID);
print_r($customer);
```

### Deletar cartão de crédito

[](#deletar-cartão-de-crédito)

```
$moip->customers()->creditCard()->delete(CREDIT_CARD_ID);
```

Pedidos
-------

[](#pedidos)

### Criando um pedido com o comprador que acabamos de criar

[](#criando-um-pedido-com-o-comprador-que-acabamos-de-criar)

Nesse exemplo com vários produtos e ainda especificando valor de frete, valor adicional e ainda valor de desconto.

```
$order = $moip->orders()->setOwnId(uniqid())
    ->addItem("bicicleta 1",1, "sku1", 10000)
    ->addItem("bicicleta 2",1, "sku2", 11000)
    ->addItem("bicicleta 3",1, "sku3", 12000)
    ->addItem("bicicleta 4",1, "sku4", 13000)
    ->addItem("bicicleta 5",1, "sku5", 14000)
    ->addItem("bicicleta 6",1, "sku6", 15000)
    ->addItem("bicicleta 7",1, "sku7", 16000)
    ->addItem("bicicleta 8",1, "sku8", 17000)
    ->addItem("bicicleta 9",1, "sku9", 18000)
    ->addItem("bicicleta 10",1, "sku10", 19000)
    ->setShippingAmount(3000)->setAddition(1000)->setDiscount(5000)
    ->setCustomer($customer)
    ->create();
print_r($order);
```

### Consultando um pedido

[](#consultando-um-pedido)

#### Pedido específico

[](#pedido-específico)

```
$order = $moip->orders()->get('ORD-KZCH1S1ORAH23');
print_r($order);
```

#### Todos os Pedidos

[](#todos-os-pedidos)

##### Sem Filtro

[](#sem-filtro)

```
$orders = $this->moip->orders()->getList();
```

##### Com Filtros

[](#com-filtros)

```
$filters = new Filters();
$filters->greaterThanOrEqual(OrdersList::CREATED_AT, '2017-08-17');
$filters->in(OrdersList::PAYMENT_METHOD, ['BOLETO', 'DEBIT_CARD']);
$filters->lessThan(OrdersList::VALUE, 100000);

$orders = $this->moip->orders()->getList(null, $filters);
```

##### Com Paginação

[](#com-paginação)

```
$orders = $this->moip->orders()->getList(new Pagination(10,0));
```

##### Consulta Valor Específico

[](#consulta-valor-específico)

```
$orders = $this->moip->orders()->getList(null, null, 'josé silva');
```

> Também é possível usar paginação, filtros e consulta de valor específico juntos

```
$filters = new Filters();
$filters->greaterThanOrEqual(OrdersList::CREATED_AT, '2017-08-17');
$filters->lessThan(OrdersList::VALUE, 100000);

$orders = $this->moip->orders()->getList(new Pagination(10,0), $filters, 'josé silva');
```

Pagamentos
----------

[](#pagamentos)

### Criação

[](#criação)

#### Cartão de crédito

[](#cartão-de-crédito)

Após criar o pedido basta criar um pagamento nesse pedido.

##### Inserir dados do portador

[](#inserir-dados-do-portador)

Para realizar o pagamento, via cartão de crédito, utilizando o cartão de um terceiro (quando o cliente não é o portador do cartão que será utilizado), é necessário que estes dados sejam diferenciados e informados corretamente, para cada etapa do fluxo.

```
$holder = $moip->holders()->setFullname('Jose Silva')
    ->setBirthDate("1990-10-10")
    ->setTaxDocument('22222222222', 'CPF')
    ->setPhone(11, 66778899, 55)
    ->setAddress('BILLING', 'Avenida Faria Lima', '2927', 'Itaim', 'Sao Paulo', 'SP', '01234000', 'Apt 101');
```

##### Com hash

[](#com-hash)

> Para mais detalhes sobre a geração de hash com os dados do cartão [consulte a documentação.](https://dev.moip.com.br/docs/criptografia-de-cartao)

```
$hash = 'i1naupwpTLrCSXDnigLLTlOgtm+xBWo6iX54V/hSyfBeFv3rvqa1VyQ8/pqWB2JRQX2GhzfGppXFPCmd/zcmMyDSpdnf1GxHQHmVemxu4AZeNxs+TUAbFWsqEWBa6s95N+O4CsErzemYZHDhsjEgJDe17EX9MqgbN3RFzRmZpJqRvqKXw9abze8hZfEuUJjC6ysnKOYkzDBEyQibvGJjCv3T/0Lz9zFruSrWBw+NxWXNZjXSY0KF8MKmW2Gx1XX1znt7K9bYNfhA/QO+oD+v42hxIeyzneeRcOJ/EXLEmWUsHDokevOkBeyeN4nfnET/BatcDmv8dpGXrTPEoxmmGQ==';
$payment = $order->payments()
    ->setCreditCardHash($hash, $holder)
    ->setInstallmentCount(3)
    ->setStatementDescriptor('teste de pag')
    ->execute();
print_r($payment);
```

##### Com dados do cartão

[](#com-dados-do-cartão)

> Esse método requer certificação PCI. [Consulte a documentação.](https://documentao-moip.readme.io/v2.0/reference#criar-pagamento)

```
$payment = $order->payments()->setCreditCard(12, 21, '4073020000000002', '123', $holder)
    ->execute();
print_r($payment);
```

#### Criando um pagamento com boleto

[](#criando-um-pagamento-com-boleto)

```
$logo_uri = 'https://cdn.moip.com.br/wp-content/uploads/2016/05/02163352/logo-moip.png';
$expiration_date = new DateTime();
$instruction_lines = ['INSTRUÇÃO 1', 'INSTRUÇÃO 2', 'INSTRUÇÃO 3'];
$payment = $order->payments()
    ->setBoleto($expiration_date, $logo_uri, $instruction_lines)
    ->execute();
print_r($payment);
```

#### Criando um pagamento com Débito Bancário

[](#criando-um-pagamento-com-débito-bancário)

No pagamento por débito bancário online também são enviados apenas 3 parâmetros:

- URL do logo que você deseja que apareça, representada abaixo com a variável: $return\_uri;
- Data de vencimento, representada pela variável $expiration\_date;
- Número do banco representado pela variável $bank\_number (atualmente único valor possível é `341`, referente ao Banco Itaú).

```
$bank_number = '341';
$return_uri = 'https://moip.com.br';
$expiration_date = new DateTime();
$payment = $order->payments()
    ->setOnlineBankDebit($bank_number, $expiration_date, $return_uri)
    ->execute();
print_r($payment);
```

### Consulta

[](#consulta)

```
$payment = $moip->payments()->get('PAYMENT-ID');
print_r($payment);
```

### Capturar pagamento pré-autorizado

[](#capturar-pagamento-pré-autorizado)

```
$captured_payment = $payment->capture();
print_r($captured_payment);
```

### Cancelar pagamento pré-autorizado

[](#cancelar-pagamento-pré-autorizado)

> O método `avoid` usado para cancelamento de pagamentos pré-autorizados foi substituído por `cancel`.

```
$payment = $payment->cancel();
print_r($payment);
```

Reembolsos
----------

[](#reembolsos)

Para fazer reembolsos é necessário ter o objeto **`Payment`** do pagamento que você deseja reembolsar ou passar apenas o ID do pagamento.

### Cartão de crédito

[](#cartão-de-crédito-1)

#### Valor Total

[](#valor-total)

##### Com o objeto

[](#com-o-objeto)

```
$refund = $payment->refunds()->creditCardFull();
print_r($refund);
```

#### Valor Parcial

[](#valor-parcial)

##### Com o objeto

[](#com-o-objeto-1)

```
$refund = $payment->refunds()->creditCardPartial(30000);
print_r($refund);
```

### Conta bancária

[](#conta-bancária)

#### Valor Total

[](#valor-total-1)

##### Com o objeto

[](#com-o-objeto-2)

```
$type = 'CHECKING';
$bank_number = '001';
$agency_number = 4444444;
$agency_check_number = 2;
$account_number = 1234;
$account_check_number = 4;
$refund = $payment->refunds()
    ->bankAccountFull(
        $type,
        $bank_number,
        $agency_number,
        $agency_check_number,
        $account_number,
        $account_check_number,
        $customer
    );
print_r($refund);
```

#### Valor Parcial

[](#valor-parcial-1)

##### Com o objeto

[](#com-o-objeto-3)

```
$amount = 30000;
$type = 'SAVING';
$bank_number = '001';
$agency_number = 4444444;
$agency_check_number = 2;
$account_number = 1234;
$account_check_number = 4;
$refund = $payment->refunds()
    ->bankAccountPartial(
        $amount,
        $type,
        $bank_number,
        $agency_number,
        $agency_check_number,
        $account_number,
        $account_check_number,
        $customer
    );
print_r($refund);
```

### Consultar reembolso

[](#consultar-reembolso)

```
$refund = $payment->refunds()->get($refund_id);
```

OAuth (Moip Connect)
--------------------

[](#oauth-moip-connect)

### Solicitar permissões de acesso ao usuário

[](#solicitar-permissões-de-acesso-ao-usuário)

Para solicitar as permissões você deverá invocar o método getAuthUrl (que monta a URL) e redirecionar o usuário para a URL gerada. O usuário deverá conceder a permissão e então ele será redirecionado para a URL determinada pelo seu App e passada como atributo para o objeto Connect.

A URL passada como atributo deve ser exatamente a mesma que foi cadastrada na criação do APP, caso haja alguma divergência o usuário não será redirecionado corretamente.

Com a permissão concedida, você receberá um `code` que lhe permitirá gerar o `accessToken` de autenticação e processar requisições envolvendo outro usuário.

```
$redirect_uri = 'http://seusite.com.br/callback.php';
$client_id = 'APP-18JTHC3LOMT9';
$scope = true;
$connect = new Connect($redirect_uri, $client_id, $scope, Connect::ENDPOINT_SANDBOX);
$connect->setScope(Connect::RECEIVE_FUNDS)
    ->setScope(Connect::REFUND)
    ->setScope(Connect::MANAGE_ACCOUNT_INFO)
    ->setScope(Connect::RETRIEVE_FINANCIAL_INFO);
header('Location: '.$connect->getAuthUrl());
```

### Gerando access token OAuth

[](#gerando-access-token-oauth)

Abaixo usaremos o método authorize para gerar o access token OAuth. Note que é necessário instanciar o objeto Connect e passar os parâmetros como no exemplo abaixo.

Usamos a variável `$code` para enviar o `code` recebido pela permissão do usuário e inserimos no objeto com o método `setCode`.

A URL passada como atributo deve ser exatamente a mesma que foi cadastrada na criação do APP, caso haja alguma divergência não será possível recuperar o accessToken.

```
$redirect_uri = 'http://seusite.com.br/callback.php';
$client_id = 'APP-18JTHC3LOMT9';
$scope = true;
$connect = new Connect($redirect_uri, $client_id, $scope, Connect::ENDPOINT_SANDBOX);
$client_secret = '20f76456f6ec4874a1f38082d3139326';
$connect->setClientSecret($client_secret);
$code = 'f9053ca6e9853dd73f0bc4f332a5ce337b0bb0da';
$connect->setCode($code);
$auth = $connect->authorize();
print_r($auth);
```

Multipedidos
------------

[](#multipedidos)

### Criando um multipedido

[](#criando-um-multipedido)

```
$order = $moip->orders()->setOwnId(uniqid())
    ->addItem("bicicleta 1",1, "sku1", 10000)
    ->addItem("bicicleta 2",1, "sku2", 11000)
    ->addItem("bicicleta 3",1, "sku3", 12000)
    ->addItem("bicicleta 4",1, "sku4", 13000)
    ->setShippingAmount(3000)
    ->setAddition(1000)
    ->setDiscount(5000)
    ->setCustomer($customer)
    ->addReceiver('MPA-VB5OGTVPCI52', 'PRIMARY', NULL);
$order2 = $moip->orders()->setOwnId(uniqid())
    ->addItem("bicicleta 1",1, "sku1", 10000)
    ->addItem("bicicleta 2",1, "sku2", 11000)
    ->addItem("bicicleta 3",1, "sku3", 12000)
    ->setShippingAmount(3000)
    ->setAddition(1000)
    ->setDiscount(5000)
    ->setCustomer($customer)
    ->addReceiver('MPA-IFYRB1HBL73Z', 'PRIMARY', NULL);

$multiorder = $this->moip->multiorders()
    ->setOwnId(uniqid())
    ->addOrder($order)
    ->addOrder($order2)
    ->create();
print_r($multiorder);
```

### Consultando um multipedido

[](#consultando-um-multipedido)

```
$multiorder_id = 'ORD-KZCH1S1ORAH25';
$multiorder = $moip->multiorders()->get($multiorder_id);
print_r($multiorder);
```

Multipagamentos
---------------

[](#multipagamentos)

### Criando um multipagamento

[](#criando-um-multipagamento)

```
$hash = 'i1naupwpTLrCSXDnigLLTlOgtm+xBWo6iX54V/hSyfBeFv3rvqa1VyQ8/pqWB2JRQX2GhzfGppXFPCmd/zcmMyDSpdnf1GxHQHmVemxu4AZeNxs+TUAbFWsqEWBa6s95N+O4CsErzemYZHDhsjEgJDe17EX9MqgbN3RFzRmZpJqRvqKXw9abze8hZfEuUJjC6ysnKOYkzDBEyQibvGJjCv3T/0Lz9zFruSrWBw+NxWXNZjXSY0KF8MKmW2Gx1XX1znt7K9bYNfhA/QO+oD+v42hxIeyzneeRcOJ/EXLEmWUsHDokevOkBeyeN4nfnET/BatcDmv8dpGXrTPEoxmmGQ==';
$payment = $multiorder->multipayments()
    ->setCreditCardHash($hash, $customer)
    ->setInstallmentCount(3)
    ->setStatementDescriptor('teste de pag')
    ->execute();
print_r($payment);
```

### Consulta

[](#consulta-1)

```
$payment = $moip->payments()->get('MULTIPAYMENT-ID');
print_r($payment);
```

Conta Moip
----------

[](#conta-moip)

### Criação

[](#criação-1)

```
$street = 'Rua de teste';
$number = 123;
$district = 'Bairro';
$city = 'Sao Paulo';
$state = 'SP';
$zip = '01234567';
$complement = 'Apt. 23';
$country = 'BRA';
$area_code = 11;
$phone_number = 66778899;
$country_code = 55;
$identity_document = '4737283560';
$issuer = 'SSP';
$issue_date = '2015-06-23';
$account = $moip->accounts()
    ->setName('Fulano')
    ->setLastName('De Tal')
    ->setEmail('fulano@email2.com')
    ->setIdentityDocument($identity_document, $issuer, $issue_date)
    ->setBirthDate('1988-12-30')
    ->setTaxDocument('16262131000')
    ->setType('MERCHANT')
    ->setPhone($area_code, $phone_number, $country_code)
    ->addAlternativePhone(11, 66448899, 55)
    ->addAddress($street, $number, $district, $city, $state, $zip, $complement, $country)
    ->setCompanyName('Empresa Teste', 'Teste Empresa ME')
    ->setCompanyOpeningDate('2011-01-01')
    ->setCompanyPhone(11, 66558899, 55)
    ->setCompanyTaxDocument('69086878000198')
    ->setCompanyAddress('Rua de teste 2', 123, 'Bairro Teste', 'Sao Paulo', 'SP', '01234567', 'Apt. 23', 'BRA')
    ->setCompanyMainActivity('82.91-1/00', 'Atividades de cobranças e informações cadastrais')
    ->create();
print_r($account);
```

### Consulta

[](#consulta-2)

```
$account = $moip->accounts()->get(ACCOUNT_ID);
print_r($account);
```

### Verifica se usuário já possui conta Moip

[](#verifica-se-usuário-já-possui-conta-moip)

```
// retorna verdadeiro se já possui e falso caso não possuir conta Moip
$moip->accounts()->checkAccountExists(CPF);
```

### Obter chave pública de uma Conta Moip

[](#obter-chave-pública-de-uma-conta-moip)

```
$keys = $moip->keys()->get();
print_r($keys);
```

Saldo Moip
----------

[](#saldo-moip)

O Saldo é a composição de valores atuais disponíveis, indisponíveis (bloqueados) e futuros de uma determinada **Conta Moip**.

> Esta API está na versão 2.1, contendo o *header* **Accept**, com o valor `application/json;version=2.1`.

### Consultar saldos

[](#consultar-saldos)

```
$balances = $moip->balances()->get();
```

*Requer autenticação `OAuth`.*

Conta Bancária
--------------

[](#conta-bancária-1)

A Conta bancária é o domicílio bancário de uma determinada Conta Moip. Esta API permite a criação, a consulta e a alteração dos dados de uma Conta Bancária.

### Criar Conta Bancária

[](#criar-conta-bancária)

```
$bank_account = $moip->bankaccount()
    ->setBankNumber('237')
    ->setAgencyNumber('12345')
    ->setAgencyCheckNumber('0')
    ->setAccountNumber('12345678')
    ->setAccountCheckNumber('7')
    ->setType('CHECKING')
    ->setHolder('Demo Moip', '622.134.533-22', 'CPF')
    ->create($moip_account_id);
```

### Consultar Conta Bancária

[](#consultar-conta-bancária)

```
$bank_account = $moip->bankaccount()->get($bank_account_id);
```

### Listar Contas Bancárias

[](#listar-contas-bancárias)

```
$bank_accounts = $moip->bankaccount()->getList($account_id)->getBankAccounts();
```

### Atualizar Conta Bancária

[](#atualizar-conta-bancária)

```
$bank_account = $moip->bankaccount()
    ->setAccountCheckNumber('8')
    ->update($bank_account_id);
```

### Deletar Conta Bancária

[](#deletar-conta-bancária)

```
$moip->bankaccount()->delete($bank_account_id);
```

Preferências de notificação
---------------------------

[](#preferências-de-notificação)

### Criação

[](#criação-2)

```
$notification = $moip->notifications()->addEvent('ORDER.*')
    ->addEvent('PAYMENT.AUTHORIZED')
    ->setTarget('http://requestb.in/1dhjesw1')
    ->create();
print_r($notification);
```

### Consulta

[](#consulta-3)

```
$notification = $this->moip->notifications()->get('NPR-N6QZE3223P98');
print_r($notification);
```

### Exclusão

[](#exclusão)

```
$notification = $moip->notifications()->delete('NOTIFICATION-ID');
print_r($notification);
```

### Listagem

[](#listagem)

```
$notifications = $moip->notifications()->getList();
print_r($notifications);
```

Webhooks
--------

[](#webhooks)

> O PHP, por padrão, está preparado para receber apenas alguns tipos de `content-type` (`application/x-www-form-urlencoded` e `multipart/form-data`). A plataforma do Moip, no entanto, envia dados no formato JSON, o qual a linguagem não está preparada para receber por padrão. Para receber e acessar os dados enviados pelo Moip, você precisa adicionar o seguinte código ao seu arquivo que receberá os webhooks:

```
// Pega o RAW data da requisição
$json = file_get_contents('php://input');
// Converte os dados recebidos
$response = json_decode($json, true);
```

### Consulta

[](#consulta-4)

#### Sem paginação ou filtro por resource/evento

[](#sem-paginação-ou-filtro-por-resourceevento)

```
$moip->webhooks()->get();
```

#### Com paginação e filtros por resource/evento

[](#com-paginação-e-filtros-por-resourceevento)

```
$moip->webhooks()->get(new Pagination(10, 0), 'ORD-ID', 'ORDER.PAID');
```

Transferência
-------------

[](#transferência)

A Transferência é uma movimentação de fundos entre uma Conta Moip e outra conta de pagamento (pode ser uma Conta bancária ou uma determinada Conta Moip).

### Criando/executando uma transferência

[](#criandoexecutando-uma-transferência)

#### Por conta bancária

[](#por-conta-bancária)

```
$amount = 500;
$bank_number = '001';
$agency_number = '1111';
$agency_check_number = '2';
$account_number = '9999';
$account_check_number = '8';
$holder_name = 'Nome do Portador';
$tax_document = '22222222222';

$transfer = $moip->transfers()
    ->setTransfers($amount, $bank_number, $agency_number, $agency_check_number, $account_number, $account_check_number)
    ->setHolder($holder_name, $tax_document)
    ->execute();

print_r($transfer);
```

Para realizar uma transferência utilizando uma conta bancária já cadastrada:

```
$transfer = $moip->transfers()
    ->setTransfersToBankAccount($amount, $bank_account_id)
    ->execute();
```

### Consultar transferência

[](#consultar-transferência)

```
$transfer_id = 'TRA-28HRLYNLMUFH';
$transfer = $moip->transfers()->get($transfer_id);

print_r($transfer);
```

### Listar transferências

[](#listar-transferências)

#### Sem paginação

[](#sem-paginação)

```
$transfers = $moip->transfers()->getList();
```

#### Com paginação

[](#com-paginação-1)

```
$transfers = $moip->transfers()->getList(new Pagination(10,0));
```

### Reverter transferência

[](#reverter-transferência)

```
$transfer_id = 'TRA-28HRLYNLMUFH';

$transfer = $moip->transfers()->revert($transfer_id);
```

Tratamento de Exceções
----------------------

[](#tratamento-de-exceções)

Quando ocorre algum erro na API, é lançada a exceção `UnexpectedException` para erros inesperados, `UnautorizedException` para erros de autenticação e `ValidationException`para erros de validação.

```
try {
    $moip->customers()->setOwnId(uniqid())
        ->setFullname('Fulano de Tal')
        ->setEmail('fulano@email.com')
        //...
        ->create();
} catch (\Moip\Exceptions\UnautorizedException $e) {
    //StatusCode 401
    echo $e->getMessage();
} catch (\Moip\Exceptions\ValidationException $e) {
    //StatusCode entre 400 e 499 (exceto 401)
    printf($e->__toString());
} catch (\Moip\Exceptions\UnexpectedException $e) {
    //StatusCode >= 500
    echo $e->getMessage();
}
```

Documentação
------------

[](#documentação)

[Documentação oficial](https://documentao-moip.readme.io/v2.0/reference)

Testes
------

[](#testes)

Por padrão os testes não fazem nenhuma requisição para a API do Moip. É possível rodar os testes contra o ambiente de [Sandbox](https://conta-sandbox.moip.com.br/) do moip, para isso basta setar a variável de ambiente:

- `MOIP_ACCESS_TOKEN` Token de autenticação do seu aplicativo Moip.

[Como registrar seu aplicativo Moip](https://dev.moip.com.br/docs/moip-connect#section--registrando-seu-aplicativo-)

Para registrar seu aplicativo Moip você precisará de suas chaves de acesso. [Como obter suas chaves de acesso](http://dev.moip.com.br/docs/#obter-chaves-de-acesso).

Exemplo:

```
export MOIP_ACCESS_TOKEN=76926cb0305243c8adc79aad54321ec1_v2
vendor/bin/phpunit -c .
```

Licença
-------

[](#licença)

[The MIT License](https://github.com/moip/php-sdk/blob/master/LICENSE)

Comunidade Slack [![Slack](https://user-images.githubusercontent.com/4432322/37355972-ba0e9f32-26c3-11e8-93d3-39917eb24109.png)](https://slackin-cqtchmfquq.now.sh)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

[](#comunidade-slack-)

Tem dúvidas? Fale com a gente no [Slack](https://slackin-cqtchmfquq.now.sh/)!

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 57.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/09baca95b8120341717fe8ac1c307c977904538e9128bd5a92221d65f19c287c?d=identicon)[Hrodryk](/maintainers/Hrodryk)

---

Top Contributors

[![RVO197](https://avatars.githubusercontent.com/u/39013967?v=4)](https://github.com/RVO197 "RVO197 (8 commits)")[![hrodryk](https://avatars.githubusercontent.com/u/47059689?v=4)](https://github.com/hrodryk "hrodryk (6 commits)")

### Embed Badge

![Health badge](/badges/hrodryk-zoop-php/health.svg)

```
[![Health](https://phpackages.com/badges/hrodryk-zoop-php/health.svg)](https://phpackages.com/packages/hrodryk-zoop-php)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
