Händler-Zugangsdaten erhalten
Registriere dich, trage deine Website ein und schick sie zur Moderation. Nach der Freigabe stehen Händler-ID und geheimes Passwort im Dashboard.
Entwickler
Signierte HTTP-Anfragen an schlichte Endpunkte. Nimm die gehostete Zahlungsseite oder hol dir die Zahlungsdaten als JSON und bau deinen eigenen Checkout — das Ergebnis erreicht dich in beiden Fällen als ein signierter Webhook.
# Zahlungsdaten anfordern — die Signatur entsteht aus deinem Händler-Passwort # hash = md5(id : summ : password : sistems : order_id) HASH=$(printf '%s' "5:100.00:$PAYOU_PASSWORD:card_RUB:4444" | md5sum | cut -d' ' -f1) curl -G https://payou.pro/api/new/api.php \ --data-urlencode id=5 \ --data-urlencode sistems=card_RUB \ --data-urlencode summ=100.00 \ --data-urlencode order_id=4444 \ --data-urlencode user_code=1 \ --data-urlencode user_email=[email protected] \ --data-urlencode hash="$HASH"
Registriere dich, trage deine Website ein und schick sie zur Moderation. Nach der Freigabe stehen Händler-ID und geheimes Passwort im Dashboard.
Bilde den hash aus Händler-ID, Betrag, geheimem Passwort, Methode und order_id, dann rufe den Endpunkt auf. Der Betrag ist ein Dezimalstring mit Punkt.
Payou sendet das Ergebnis signiert an deine URL. Prüfe die Signatur, antworte mit MERCHANT_ORDER_ID|success und buche die Bestellung genau einmal gut.
AUTH
Anfragen werden signiert, nicht über einen Authorization-Header authentifiziert. Der hash ist ein md5 aus Händler-ID, Betrag, deinem geheimen Passwort, der Methode und deiner order_id — das Passwort selbst wird nie übertragen. Auszahlungen laufen über einen separaten api_key, signiert mit HMAC-SHA256.
BETRÄGE
Den Betrag überträgst du als Dezimalstring mit Punkt — 100.00, nie 100,00. Genau dieser String fließt in die Signatur ein: Eine abweichende Formatierung bricht den hash und nicht erst die Zahlung.
ORDER ID
order_id ist dein eigener Bezeichner. Danach sucht der Status-Endpunkt, ihn liefert dir der Webhook zurück und über ihn gleichst du ab — deshalb muss er auf deiner Seite eindeutig sein.
WEBHOOKS
Payou sendet AMOUNT, status, intid, MERCHANT_ORDER_ID und SIGN per POST als application/x-www-form-urlencoded an deine URL. Prüfe SIGN und antworte mit MERCHANT_ORDER_ID|success — jeder andere Body gilt als nicht zugestellt.
STATUS
Zwei Abfragen: eine über die Transaktions-ID von Payou, eine über deine order_id. Beide antworten mit id, order_id, status, paysys und summ — mehr braucht ein Abgleich nicht.
PRODUKTION
Es gibt keinen separaten Sandbox-Host. Du integrierst gegen die Live-Endpunkte, mit einem Händlerkonto, das nach der Moderation freigeschaltet wird.
Das ist die gesamte Schnittstelle für eine erste Integration. Zahlungsaufrufe signierst du mit deinem Händler-Passwort, Auszahlungen laufen über einen separaten api_key und HMAC-SHA256.
| Methode | Endpunkt | Zweck |
|---|---|---|
| GET | /sci/v1/ | Gehostete Zahlungsseite — hierher schickst du den Zahler |
| GET | /api/new/api.php | Zahlungsdaten als JSON, für deinen eigenen Checkout |
| GET | /api/status | Zahlungsstatus über die Transaktions-ID von Payou |
| GET | /api/status2 | Zahlungsstatus über deine order_id |
| POST | /api/new/confirm_payment.php | Der Zahler bestätigt oder storniert eine Zahlung |
| POST | /api/payout_create.php | Auszahlung auf Karte oder Konto erstellen |
API
Land und Methode sind Parameter desselben Aufrufs, keine separaten Integrationen. Die Route dahinter wählt die Schicht.
Anfrage
# Zahlungsdaten anfordern — die Signatur entsteht aus deinem Händler-Passwort # hash = md5(id : summ : password : sistems : order_id) curl -G https://payou.pro/api/new/api.php \ --data-urlencode id=5 \ --data-urlencode sistems=card_RUB \ --data-urlencode summ=100.00 \ --data-urlencode order_id=4444 \ --data-urlencode user_code=1 \ --data-urlencode hash="$HASH"
Antwort
# HTTP 200 · application/json { "id": "3874512", "card": "0000 0000 0000 0000", "wallet_owner": "CARDHOLDER NAME", "sbp_bank": "BANK NAME", "amount": "100.00" }
Beispielantwort. Es fließt kein echtes Geld.
Die Dokumentation ist offen — zum Lesen oder zum Bauen gegen die Endpunkte braucht es kein Vertriebsgespräch.