---
title: Clients: Node, PHP, Python, Go
description: Fertige Coinetic-API-Clients als eine Datei ohne externe Abhängigkeiten für Node.js, PHP, Python und Go: Anfragesignatur, Rechnungen und Webhook-Prüfung.
url: https://coinetic.money/de/docs/sdks/
lang: de
---

# Clients und Beispiele

Jeder Client ist eine einzige Datei ohne externe Abhängigkeiten. Kopieren Sie sie ins Projekt – schon haben Sie Anfragesignatur, Erstellen und Lesen von Rechnungen sowie Webhook-Prüfung.

### Node.js

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

    cryptopay.js herunterladen ↓

### PHP

PHP 8.1+, Erweiterungen curl und json. `\Cryptopay\Client`, `\Cryptopay\verify_webhook`.

    Cryptopay.php herunterladen ↓

### Python

Python 3.9+, nur Standardbibliothek. `CoineticClient`, `verify_webhook`.

    cryptopay.py herunterladen ↓

### Go

Go 1.22+, nur Standardbibliothek. Paket `cryptopayclient`.

    cryptopay.go herunterladen ↓

## Was enthalten ist

| Funktion | Node.js | PHP | Python | Go |
| --- | --- | --- | --- | --- |
| Anfrage signieren | `signRequest` | `sign_request` | `sign_request` | `SignRequest` |
| Rechnung erstellen | `createInvoice` | `createInvoice` | `create_invoice` | `CreateInvoice` |
| Rechnung abrufen | `getInvoice` | `getInvoice` | `get_invoice` | `GetInvoice` |
| Webhook prüfen | `verifyWebhook` | `verify_webhook` | `verify_webhook` | `VerifyWebhook` |
| Status „auslieferbar“ | `PAID_STATUSES` | `PAID_STATUSES` | `PAID_STATUSES` | `PaidStatuses` |

Die technischen Datei- und Klassennamen (`cryptopay.*`, `CryptopayClient`) sind historisch bedingt und bleiben unverändert; in Node.js und Python gibt es die Aliase `CoineticClient` und `CoineticError`.

## Alle vier gegen dieselben Referenzwerte getestet

Die Anfrage- und Webhook-Signaturen aller Clients stimmen mit den [Referenzwerten](https://coinetic.money/de/docs/authentication/#test-vectors) überein. Schreiben Sie einen Client in einer anderen Sprache, bringen Sie ihn zuerst mit diesen Werten in Übereinstimmung: So finden Sie Signaturfehler am schnellsten.

## Minimaler Ablauf

`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)   # sonst 400/401
    if seen(event.id): return 200                             # erneute Zustellung
    inv = client.getInvoice(event.data.invoice_id)            # Gegenprüfung
    if inv.status in PAID_STATUSES: grantOnce(inv.order_id)
    return 200
```

## Was die Clients nicht tun

- Sie speichern keine Secrets – Schlüssel und Secret werden von außen übergeben, aus Umgebungsvariablen oder dem Secret-Manager.
- Sie speichern keine verarbeiteten `X-Webhook-Id` – das ist Aufgabe Ihrer Datenbank.
- Sie wandeln Beträge nicht in Zahlen um: Alle Beträge sind Strings.
- Sie wiederholen Anfragen nicht selbst – wiederholen Sie mit demselben `Idempotency-Key` bei `429`, `5xx` und Netzwerkfehlern.
- Sie laufen nicht im Browser oder in mobilen Apps – nur auf dem Server: Dort liegt das Secret.
