PHPackages                             nxgate/sdk - 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. [API Development](/categories/api)
4. /
5. nxgate/sdk

ActiveLibrary[API Development](/categories/api)

nxgate/sdk
==========

SDK oficial da NXGATE para integração com a API PIX

00PHP

Since Mar 11Pushed 3mo agoCompare

[ Source](https://github.com/nxgate/nxgate-sdk-php)[ Packagist](https://packagist.org/packages/nxgate/sdk)[ RSS](/packages/nxgate-sdk/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

NXGATE SDK PHP
==============

[](#nxgate-sdk-php)

SDK oficial da NXGATE para integração com a API PIX em PHP.

Requisitos
----------

[](#requisitos)

- PHP 8.1 ou superior
- Extensões: `curl`, `json`, `hash`

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

[](#instalação)

```
composer require nxgate/sdk
```

Configuração
------------

[](#configuração)

```
use NXGate\NXGate;

// Sem HMAC
$nx = new NXGate(
    clientId: 'nxgate_xxx',
    clientSecret: 'seu_secret',
);

// Com HMAC (recomendado para produção)
$nx = new NXGate(
    clientId: 'nxgate_xxx',
    clientSecret: 'seu_secret',
    hmacSecret: 'seu_hmac_secret',
);
```

O SDK gerencia automaticamente a autenticação OAuth2. O token é obtido na primeira chamada e renovado automaticamente antes de expirar.

Quando o `hmacSecret` é fornecido, todas as requisições são assinadas automaticamente com HMAC-SHA256.

Uso
---

[](#uso)

### Gerar cobrança PIX (Cash-in)

[](#gerar-cobrança-pix-cash-in)

```
use NXGate\Dto\PixGenerateRequest;
use NXGate\Dto\SplitUser;

$charge = $nx->pixGenerate(new PixGenerateRequest(
    valor: 100.00,
    nomePagador: 'João da Silva',
    documentoPagador: '12345678901',
    webhook: 'https://meusite.com/webhook',
    descricao: 'Pagamento do pedido #123',
));

echo $charge->status;           // "success"
echo $charge->paymentCode;      // código PIX copia e cola
echo $charge->idTransaction;    // ID da transação
echo $charge->paymentCodeBase64; // QR Code em base64
```

#### Com split de pagamento

[](#com-split-de-pagamento)

```
$charge = $nx->pixGenerate(new PixGenerateRequest(
    valor: 100.00,
    nomePagador: 'João da Silva',
    documentoPagador: '12345678901',
    splitUsers: [
        new SplitUser(username: 'parceiro1', percentage: 70.0),
        new SplitUser(username: 'parceiro2', percentage: 30.0),
    ],
));
```

### Saque PIX (Cash-out)

[](#saque-pix-cash-out)

```
use NXGate\Dto\PixWithdrawRequest;
use NXGate\PixKeyType;

$withdrawal = $nx->pixWithdraw(new PixWithdrawRequest(
    valor: 50.00,
    chavePix: 'joao@email.com',
    tipoChave: PixKeyType::EMAIL,
    webhook: 'https://meusite.com/webhook',
));

echo $withdrawal->status;            // "success"
echo $withdrawal->message;           // mensagem da API
echo $withdrawal->internalReference; // referência interna
```

#### Tipos de chave PIX

[](#tipos-de-chave-pix)

```
use NXGate\PixKeyType;

PixKeyType::CPF;    // CPF
PixKeyType::CNPJ;   // CNPJ
PixKeyType::PHONE;  // Telefone
PixKeyType::EMAIL;  // E-mail
PixKeyType::RANDOM; // Chave aleatória
```

### Consultar saldo

[](#consultar-saldo)

```
$balance = $nx->getBalance();

echo $balance->balance;   // saldo total
echo $balance->blocked;   // saldo bloqueado
echo $balance->available; // saldo disponível
```

### Consultar transação

[](#consultar-transação)

```
$transaction = $nx->getTransaction(type: 'cash-in', txId: 'TX_ABC123');

echo $transaction->idTransaction; // ID da transação
echo $transaction->status;        // status
echo $transaction->amount;        // valor
echo $transaction->paidAt;        // data do pagamento
echo $transaction->endToEnd;      // identificador end-to-end
```

### Receber webhooks

[](#receber-webhooks)

```
use NXGate\NXGateWebhook;

// Receber o payload do webhook (string JSON ou array)
$payload = file_get_contents('php://input');
$event = NXGateWebhook::parse($payload);

// Verificar o tipo do evento
if ($event->isCashIn()) {
    $cashIn = $event->asCashIn();
    echo "Pagamento recebido: R$ {$cashIn->amount}";
    echo "Pagador: {$cashIn->debtorName}";
    echo "Documento: {$cashIn->debtorDocument}";
    echo "TX ID: {$cashIn->txId}";

    if ($cashIn->isPaid()) {
        // Pagamento confirmado
    } elseif ($cashIn->isRefunded()) {
        // Pagamento estornado
    }
}

if ($event->isCashOut()) {
    $cashOut = $event->asCashOut();
    echo "Saque: R$ {$cashOut->amount}";

    if ($cashOut->isSuccess()) {
        // Saque realizado com sucesso
    } elseif ($cashOut->isError()) {
        echo "Erro: {$cashOut->error}";
    } elseif ($cashOut->isRefunded()) {
        // Saque estornado
    }
}
```

#### Tipos de eventos

[](#tipos-de-eventos)

**Cash-in:**

- `QR_CODE_COPY_AND_PASTE_PAID` - Pagamento via QR Code confirmado
- `QR_CODE_COPY_AND_PASTE_REFUNDED` - Pagamento via QR Code estornado

**Cash-out:**

- `PIX_CASHOUT_SUCCESS` - Saque realizado com sucesso
- `PIX_CASHOUT_ERROR` - Erro no saque
- `PIX_CASHOUT_REFUNDED` - Saque estornado

Tratamento de erros
-------------------

[](#tratamento-de-erros)

```
use NXGate\NXGateException;

try {
    $charge = $nx->pixGenerate(new PixGenerateRequest(
        valor: 100.00,
        nomePagador: 'João',
        documentoPagador: '12345678901',
    ));
} catch (NXGateException $e) {
    echo $e->title;       // título do erro
    echo $e->description; // descrição detalhada
    echo $e->httpStatus;  // código HTTP (0 para erros de rede)
    echo $e->getCode();   // código do erro da API
    echo $e->getMessage(); // mensagem formatada completa
}
```

O SDK trata automaticamente os seguintes cenários:

- **Autenticação:** Token renovado automaticamente antes de expirar
- **Retry:** Requisições que retornam HTTP 503 são reenviadas automaticamente com backoff exponencial (máximo 2 tentativas)
- **HMAC:** Assinatura automática quando `hmacSecret` é configurado
- **Erros de rede:** Encapsulados em `NXGateException` com detalhes do cURL

Testes
------

[](#testes)

```
composer install
vendor/bin/phpunit
```

Licença
-------

[](#licença)

MIT - consulte o arquivo [LICENSE](LICENSE) para detalhes.

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance54

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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/11b5e29886f544372ff769111035322ded910ac56f82f34510ca64a42ae07ede?d=identicon)[guga044](/maintainers/guga044)

---

Top Contributors

[![PatrickSchwerz](https://avatars.githubusercontent.com/u/148825861?v=4)](https://github.com/PatrickSchwerz "PatrickSchwerz (1 commits)")

### Embed Badge

![Health badge](/badges/nxgate-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/nxgate-sdk/health.svg)](https://phpackages.com/packages/nxgate-sdk)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35816.3M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24015.5M18](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172437.8k11](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93452.6k6](/packages/botman-driver-telegram)

PHPackages © 2026

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