> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abacatepay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rust

> Integre a AbacatePay em aplicações Rust em minutos.

<Card title="AbacatePay Rust SDK" icon="github" href="https://github.com/AbacatePay/abacatepay-rust-sdk">
  Repositório oficial — issues, changelog e contribuições.
</Card>

## Pré-requisitos

* Rust (edição 2021+) com Tokio
* Uma chave de API ([criar no dashboard](https://app.abacatepay.com))

## Instalação

```bash theme={null}
cargo add abacatepay-rust-sdk
cargo add tokio --features full
```

Ou adicione ao `Cargo.toml`:

```toml theme={null}
[dependencies]
abacatepay-rust-sdk = "0.1.0"
tokio = { version = "1", features = ["full"] }
```

## Configuração

Armazene sua chave de API em uma variável de ambiente e nunca no código:

```rust theme={null}
use abacatepay_rust_sdk::AbacatePay;

let api_key = std::env::var("ABACATEPAY_API_KEY").expect("ABACATEPAY_API_KEY not set");
let client = AbacatePay::new(api_key);
```

## Primeira cobrança

```rust theme={null}
use abacatepay_rust_sdk::{
    AbacatePay, BillingKind, BillingMethods, CreateBillingData, CreateBillingProduct,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = AbacatePay::new(std::env::var("ABACATEPAY_API_KEY")?);

    let billing = client.create_billing(CreateBillingData {
        frequency:      BillingKind::OneTime,
        methods:        vec![BillingMethods::Pix],
        return_url:     "https://meusite.com/app".to_string(),
        completion_url: "https://meusite.com/pagamento/sucesso".to_string(),
        products: vec![CreateBillingProduct {
            external_id: "PRO-PLAN".to_string(),
            name:        "Pro plan".to_string(),
            quantity:    1,
            price:       1000.0, // em centavos
            description: None,
        }],
        customer_id: None,
    }).await?;

    println!("{}", billing.url); // URL de pagamento para o cliente
    Ok(())
}
```

**Resposta:**

```json theme={null}
{
  "success": true,
  "error": null,
  "data": {
    "id": "bill_12345667",
    "url": "https://app.abacatepay.com/pay/bill_12345667",
    "amount": 1000,
    "status": "PENDING",
    "devMode": true,
    "createdAt": "2024-11-04T18:38:28.573Z"
  }
}
```

## Próximos passos

<CardGroup cols={2}>
  <Card title="Configurar webhooks" icon="bell" href="/pages/webhooks">
    Receba notificações em tempo real sobre pagamentos confirmados.
  </Card>

  <Card title="Checkout Transparente" icon="credit-card" href="/pages/transparents/create">
    Aceite PIX e cartão diretamente na sua interface.
  </Card>

  <Card title="Criar clientes" icon="users" href="/pages/client/create">
    Gerencie clientes vinculados às cobranças.
  </Card>

  <Card title="Referência completa" icon="book-open" href="/pages/reference/introduction">
    Todos os endpoints, status codes e formato de resposta.
  </Card>
</CardGroup>
