In diesem Artikel erklären wir Schritt für Schritt, wie Sie mit der PayTR Direkt-API Zahlungen direkt über das Zahlungsformular entgegennehmen können. Wir behandeln die serverseitige Validierung, die Token-Generierung, das korrekte Senden der Formulardaten und die Zahlungsstatus.
Verwandte Anleitungen:
- 
PayTR Link API SMS- und E-Mail-Service: Anleitung zum Senden von Zahlungslinks 
- 
Erstellen eines Zahlungslinks mit der PayTR Link API: Schritt-für-Schritt-Anleitung 
- 
PayTR Link API Callback Service: Benachrichtigung über Zahlungsergebnisse und Integrationsanleitung 
Funktionsweise der Direkt-API-Integration
- 
Der Kunde möchte ein Produkt/eine Dienstleistung erwerben. 
- 
Er gibt seine Daten in das Zahlungsformular ein. 
- 
Ein Token wird generiert und die Daten werden direkt an PayTR per POST gesendet. 
- 
PayTR überprüft die Daten und leitet den Kunden auf die Erfolgs-/Fehlerseite weiter. 
1) Wie wird ein Token generiert?
Erforderliche Felder:
- 
merchant_id 
- 
user_ip 
- 
merchant_oid 
- 
email 
- 
payment_amount 
- 
payment_type ('card') 
- 
installment_count 
- 
currency (Standardmäßig TL) 
- 
test_mode 
- 
non_3d 
PHP-Beispiel zur Token-Berechnung:
$hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d;
$paytr_token = base64_encode(hash_hmac('sha256', $hash_str.$merchant_salt, $merchant_key, true));
Hinweis: Die HMAC SHA256-Hash-Verschlüsselung mit Base64 ist obligatorisch.
2) Was muss in der POST-Anfrage gesendet werden?
| Feldname | Beschreibung | 
|---|---|
| merchant_id | Händler-ID | 
| paytr_token | Der von Ihnen generierte Token | 
| user_ip | IP-Adresse des Kunden | 
| merchant_oid | Bestellnummer | 
| E-Mail-Adresse des Kunden | |
| payment_type | 'card' | 
| payment_amount | Zahlungsbetrag | 
| installment_count | Anzahl der Raten | 
| cc_owner | Karteninhaber | 
| card_number | Kartennummer | 
| expiry_month | Monat | 
| expiry_year | Jahr | 
| cvv | CVV | 
| merchant_ok_url | Erfolgreiche Weiterleitungs-URL | 
| merchant_fail_url | Fehlerhafte Weiterleitungs-URL | 
| user_name | Name des Kunden | 
| user_address | Adresse | 
| user_phone | Telefonnummer | 
| user_basket | JSON-Warenkorbdaten | 
3) Erstellen eines Zahlungsformulars (PHP-HTML-Beispiel)
<form action="https://www.paytr.com/odeme" method="post">
    <input type="text" name="cc_owner" value="TEST KARTI">
    <input type="text" name="card_number" value="9792030394440796">
    <input type="text" name="expiry_month" value="12">
    <input type="text" name="expiry_year" value="99">
    <input type="text" name="cvv" value="000">
    <!-- Andere obligatorische versteckte Eingabefelder -->
    <input type="hidden" name="merchant_id" value="..."><!-- usw. -->
    <input type="submit" value="Zahlen">
</form>
4) Sync-Modus (falls verwendet)
- 
Wenn sync_mode=1 gesendet wird, wird das Zahlungsergebnis sofort im JSON-Format zurückgegeben. 
- 
Sie können die Werte "status": "success" oder "failed" oder "wait_callback" erhalten. 
- 
Bietet eine schnellere Integration und ein modernes Zahlungserlebnis. 
Beispiel für eine JSON-Antwort im Sync-Modus:
{
  "status": "success",
  "msg": "Zahlung erfolgreich",
  "utoken": "...", // Wenn die Kartenspeicherung erfolgt ist
  "ctoken": "..."
}
5) Benachrichtigungs-URL und Zahlungsergebnisse
- 
Auch wenn der Kunde zu merchant_ok_url geht, wird die Bestellung nicht bestätigt! 
- 
Die eigentliche Validierung erfolgt über die Benachrichtigungs-URL mit serverseitigen POST-Daten. 
- 
Sie können die Bestellung bestätigen, wenn status=successin den per POST gesendeten Werten enthalten ist.
6) Zu beachtende Punkte
- 
Karteninformationen dürfen nur an PayTR gesendet werden. Speichern Sie sie auf keinen Fall auf Ihrem eigenen Server. 
- 
Wenn Sie Probleme haben, die IP-Adresse zu erhalten, überprüfen Sie den Wert "REMOTE_ADDR". 
- 
Auch in der Testumgebung muss "SSL/TLS" aktiviert sein. 
- 
Senden Sie debug_on=1, um Fehler zu beheben.
Häufige Fehler und Lösungen
| Problem | Ursache | Lösung | 
|---|---|---|
| "bad hash"-Fehler | Falsche Hash-Berechnung | Überprüfen Sie die HMAC SHA256- und Base64-Codierung | 
| Das Zahlungsformular gibt einen Fehler aus | Fehlendes Feld | Stellen Sie sicher, dass Sie alle obligatorischen Felder senden | 
| Die Bestellung wird nicht bestätigt, wenn der Kunde zu merchant_ok_url geht | Bestätigung über die Benachrichtigungs-URL wird erwartet | Codieren Sie die Benachrichtigungs-URL korrekt | 
Fazit: Kontrolle mit der Direkt-API!
Die PayTR Direkt-API-Integration ermöglicht es Ihnen, den Zahlungsprozess vollständig auf Ihrer eigenen Seite zu steuern. Insbesondere mit Ratenzahlungen und Non-3D Secure-Transaktionsoptionen bietet sie ein flexibleres Integrationserlebnis.
Verwandte Artikel:
- 
PayTR Link API SMS- und E-Mail-Service: Anleitung zum Senden von Zahlungslinks 
- 
Erstellen eines Zahlungslinks mit der PayTR Link API: Schritt-für-Schritt-Anleitung 
- 
PayTR Link API Callback Service: Benachrichtigung über Zahlungsergebnisse und Integrationsanleitung 
