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