---
title: Clients: Node, PHP, Python, Go
description: Kant-en-klare API-clients van Coinetic — één bestand zonder externe dependencies voor Node.js, PHP, Python en Go: requests ondertekenen, facturen, webhooks.
url: https://coinetic.money/nl/docs/sdks/
lang: nl
---

# Clients en voorbeelden

Elke client is één bestand zonder externe dependencies. Kopieer het naar uw project en u kunt requests ondertekenen, facturen aanmaken en opvragen en webhooks verifiëren.

### Node.js

Node 22+. Klassen `CoineticClient`, `CoineticError`, functie `verifyWebhook`.

    cryptopay.js downloaden ↓

### PHP

PHP 8.1+, extensies curl en json. `\Cryptopay\Client`, `\Cryptopay\verify_webhook`.

    Cryptopay.php downloaden ↓

### Python

Python 3.9+, alleen de standaardbibliotheek. `CoineticClient`, `verify_webhook`.

    cryptopay.py downloaden ↓

### Go

Go 1.22+, alleen de standaardbibliotheek. Package `cryptopayclient`.

    cryptopay.go downloaden ↓

## Wat erin zit

| Functie | Node.js | PHP | Python | Go |
| --- | --- | --- | --- | --- |
| Request ondertekenen | `signRequest` | `sign_request` | `sign_request` | `SignRequest` |
| Factuur aanmaken | `createInvoice` | `createInvoice` | `create_invoice` | `CreateInvoice` |
| Factuur opvragen | `getInvoice` | `getInvoice` | `get_invoice` | `GetInvoice` |
| Webhook verifiëren | `verifyWebhook` | `verify_webhook` | `verify_webhook` | `VerifyWebhook` |
| Statussen ‘klaar om te leveren’ | `PAID_STATUSES` | `PAID_STATUSES` | `PAID_STATUSES` | `PaidStatuses` |

De technische namen van bestanden en klassen (`cryptopay.*`, `CryptopayClient`) zijn historisch en veranderen niet; in Node.js en Python zijn er de aliassen `CoineticClient` en `CoineticError`.

## Alle vier getest op dezelfde referentiewaarden

De handtekeningen van requests en webhooks komen bij alle clients overeen met de [referentiewaarden](https://coinetic.money/nl/docs/authentication/#test-vectors). Schrijft u een client in een andere taal, zorg dan eerst dat u daarop uitkomt: zo vindt u een fout in de handtekening het snelst.

## Minimale flow

`pseudocode`

```
invoice = client.createInvoice({order_id, price_amount: "3.00", price_currency: "USD",
                                return_url: "https://shop.example/orders/42"},
                               idempotencyKey = "order-42")
redirect(invoice.checkout_url)

on POST /webhooks/coinetic (raw body!):
    event = verifyWebhook(WEBHOOK_SECRET, headers, rawBody)   # anders 400/401
    if seen(event.id): return 200                             # herhaalde levering
    inv = client.getInvoice(event.data.invoice_id)            # extra controle
    if inv.status in PAID_STATUSES: grantOnce(inv.order_id)
    return 200
```

## Wat de clients niet doen

- Ze bewaren geen secrets — sleutel en secret komen van buitenaf, uit omgevingsvariabelen of een secret manager.
- Ze bewaren geen verwerkte `X-Webhook-Id`'s — dat doet uw database.
- Ze zetten bedragen niet om in getallen: alle bedragen zijn strings.
- Ze herhalen requests niet zelf — herhaal met dezelfde `Idempotency-Key` bij `429`, `5xx` en netwerkfouten.
- Ze werken niet in de browser of in een mobiele app — alleen op de server: daar staat het secret.
