Zahlungs-API
Die Zahlungs-API ist ein Tool zur Zahlungsabwicklung, mit dem Unternehmen Online-Zahlungen sicher und effizient annehmen und verarbeiten können. Mit dieser API können Unternehmen Zahlungsabwicklungsfunktionen in ihre Websites, Anwendungen und andere Softwarelösungen integrieren.
Es werden alle gängigen Zahlungsmethoden unterstützt, einschließlich Kreditkarten, Debitkarten und digitale Geldbörsen. Darüber hinaus bietet sie Funktionen wie Echtzeit-Zahlungsabwicklung, automatische Währungsumrechnung und Betrugsprävention.
Alle Belastungsanfragen erfordern standardmäßig 3DS bei der Bank des Karteninhabers.
Eine Zahlungsanfrage erstellen¶
Endpunkt
POST /v1/payments/
Dieser Endpunkt erstellt eine einzelne sichere Abrechnungsseite basierend auf den folgenden Parametern. Bitte beachten Sie, dass Sie den Karteninhaber auf eine generierte Seite leiten müssen, auf der er die Daten zur Zahlungsmethode eingibt. Wir senden die Transaktionsantwort an die return_url.
Felder:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
amount | Gesamtbetrag der Belastung (Dezimalformat, z. B. 99.99) | string | ja |
description | Eine Beschreibung der Zahlung oder des Dienstes | string | ja |
currency | Ein gültiger Währungscode nach ISO-4217, zum Beispiel USD, CAD, CRC, EUR. | string | ja |
items | Name(n) der Produkte oder Dienstleistungen. Dies ist nur ein informatives Label. | array | ja |
return_url | Wir leiten nach Abschluss der Zahlung zu dieser URL weiter, wobei die id_payment als Query-Parameter angehängt wird, damit Sie den Transaktionsstatus abrufen können. | string | ja |
Anfrage-Beispiel:
curl -X POST 'https://api.4geeks.io/v1/payments/' \
-u "sk_test_51O62xYzAbcDef123:" \
-H 'Content-Type: application/json' \
-d '{
"amount": "500.00",
"description": "Premium subscription payment",
"currency": "USD",
"items": ["Premium Plan - Monthly"],
"return_url": "https://example.com/payment-result"
}'
import requests
from requests.auth import HTTPBasicAuth
api_key = "sk_test_51O62xYzAbcDef123"
response = requests.post(
'https://api.4geeks.io/v1/payments/',
auth=HTTPBasicAuth(api_key, ""),
json={
"amount": "500.00",
"description": "Premium subscription payment",
"currency": "USD",
"items": ["Premium Plan - Monthly"],
"return_url": "https://example.com/payment-result"
}
)
print(response.json())
const apiKey = "sk_test_51O62xYzAbcDef123";
const credentials = Buffer.from(`${apiKey}:`).toString("base64");
fetch("https://api.4geeks.io/v1/payments/", {
method: "POST",
headers: {
Authorization: `Basic ${credentials}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: "500.00",
description: "Premium subscription payment",
currency: "USD",
items: ["Premium Plan - Monthly"],
return_url: "https://example.com/payment-result",
}),
})
.then((res) => res.json())
.then((data) => console.log(data));
import { HttpClient, HttpHeaders } from "@angular/common/http";
const apiKey = "sk_test_51O62xYzAbcDef123";
const credentials = btoa(`${apiKey}:`);
const headers = new HttpHeaders({
Authorization: `Basic ${credentials}`,
"Content-Type": "application/json",
});
const payload = {
amount: "500.00",
description: "Premium subscription payment",
currency: "USD",
items: ["Premium Plan - Monthly"],
return_url: "https://example.com/payment-result",
};
this.http
.post("https://api.4geeks.io/v1/payments/", payload, { headers })
.subscribe((data) => console.log(data));
Antwort (202 Accepted):
{
"code": 202,
"title": "Aktion erforderlich",
"content": "Zeigen Sie die Checkout-Seite an, um die Zahlung abzuschließen.",
"data": {
"id_payment": "pay_1ABC123XYZ456",
"redirect": "https://console.4geeks.io/checkout/?data=eyJyZXR1cm5fdXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS9wYXltZW50LXJlc3VsdCIsICJ0ZXN0IjogdHJ1ZSwgImhhc19jdXN0b21lciI6IGZhbHNlLCAiY29tcGFueV9lbWFpbCI6ICJzdXBwb3J0QDRnZWVrcy5pbyIsICJwcm9kdWN0IjogeyJ0b3RhbF9wcmljZSI6IDUwMC4wMCwgInByaWNlIjogNTAwLjAwLCAiY3VycmVuY3kiOiAiVVNEIiwgIm5hbWUiOiAiUHJlbWl1bSBzcWJzY3JpcHRpb24gcGF5bWVudCIsICJkZXNjcmlwdGlvbiI6IFsiUHJlbWl1bSBQbGFuIC0gTW9udGhseSJdfSwgInN0YXRlbWVudF9kZXNjcmlwdG9yIjogWyI0R0VFS1MiXSwgImNvbXBhbnlfbmFtZSI6ICI0R2Vla3MgUGF5bWVudHMifQ=="
}
}
Eine Zahlung abrufen¶
Endpunkt
GET /v1/payments/{id}
Rufen Sie Details einer spezifischen Zahlungstransaktion anhand ihrer ID ab. Dieser Endpunkt gibt die vollständigen Transaktionsinformationen zurück, einschließlich Status, Betrag, Währung, Kundendetails und Informationen zur Zahlungsmethode.
Pfad-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
id | Die eindeutige Zahlungs-ID (z. B. pay_1ABC123XYZ456) | string | ja |
Query-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
test | Nach Testmodus filtern (true/false) | boolean | nein |
Anfrage-Beispiel:
curl -X GET 'https://api.4geeks.io/v1/payments/pay_1ABC123XYZ456' \
-u "sk_test_51O62xYzAbcDef123:" \
-H 'Accept: application/json'
Antwort (200 OK):
{
"id": "pay_1ABC123XYZ456",
"amount": "500.00",
"currency": "USD",
"description": "Premium subscription payment",
"status": "completed",
"items": ["Premium Plan - Monthly"],
"customer_email": "customer@example.com",
"return_url": "https://example.com/payment-result",
"payment_method": "card",
"card_last4": "4242",
"card_brand": "visa",
"created_at": "2025-12-04T10:30:00Z",
"updated_at": "2025-12-04T10:35:00Z",
"test": true
}
Fehlerantwort (404 Not Found):
{
"code": 404,
"title": "Zahlungen nicht gefunden",
"content": "Bei der Suche sind Fehler aufgetreten, bitte überprüfen Sie die Daten.",
"type": "danger"
}
Alle Zahlungen abrufen¶
Endpunkt
GET /v1/payments/internal
Rufen Sie eine paginierte Liste aller Zahlungen ab. Unterstützt Filter- und Sortieroptionen.
Query-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
status | Nach Zahlungsstatus filtern (succeeded etc.) | string | nein |
test | Nach Testmodus filtern (true/false) | boolean | nein |
Anfrage-Beispiel:
curl -X GET 'https://api.4geeks.io/v1/payments/?status=succeeded&test=false' \
-u "sk_test_51O62xYzAbcDef123:" \
-H 'Accept: application/json'
Antwort (200 OK):
[
{
"id": "7f277445-d4d0-47e2-bd6f-4664e4480778",
"product": "981a34d7-729a-4240-a30a-c5819b0e4969",
"customer": "5c35a9f5-cd2a-4bf5-a0e2-d946eedeefeb",
"amount": 100.0,
"fee": 5.5,
"currency": "USD",
"description": null,
"statement_description": "JUANPESA",
"status": "succeeded",
"capture": true,
"created_on": "2025-11-04T14:33:25.690012Z",
"refund": null,
"captured": null,
"test": true,
"card_last4": "",
"card_exp_month": "",
"card_exp_year": "",
"card_country": "",
"card_brand": "",
"exchange_usd_to_payout": 0.0,
"exchange_original_payout_to_usd": 0.0,
"exchange_usd_to_local": 533.48,
"exchange_original_local_to_usd": 1.0,
"currency_local": "CRC",
"net": 94.5,
"net_currency": "USD"
},
{
"id": "e7d9a0ea-58fb-45a0-8005-e2c314bcf3d1",
"product": "981a34d7-729a-4240-a30a-c5819b0e4969",
"customer": "9928c043-e480-4b77-aa31-88de9ae52e7c",
"amount": 100.0,
"fee": 5.5,
"currency": "USD",
"description": null,
"statement_description": "JUANPESA",
"status": "succeeded",
"capture": true,
"created_on": "2025-09-17T20:58:39.797400Z",
"refund": null,
"captured": null,
"test": true,
"card_last4": "",
"card_exp_month": "",
"card_exp_year": "",
"card_country": "",
"card_brand": "",
"exchange_usd_to_payout": 0.0,
"exchange_original_payout_to_usd": 0.0,
"exchange_usd_to_local": 533.48,
"exchange_original_local_to_usd": 1.0,
"currency_local": "CRC",
"net": 94.5,
"net_currency": "USD"
}
]
Fehlerbehandlung¶
Die API gibt Standard-HTTP-Statuscodes zurück, um den Erfolg oder Misserfolg einer Anfrage anzuzeigen. Nachfolgend sind häufige Fehler aufgeführt, die spezifisch für die Zahlungs-API sind:
| Statuscode | Fehlertyp | Beschreibung |
|---|---|---|
| 400 | Bad Request | Erforderliche Felder fehlen oder ungültiges Format für Betrag/Währung. |
| 401 | Unauthorized | Fehlende oder ungültige API-Key-Authentifizierung. |
| 402 | Payment Required | Zahlungsmethode abgelehnt oder unzureichende Deckung. |
| 404 | Not Found | Zahlungs-ID existiert nicht. |
| 409 | Conflict | Doppelte Zahlungsanfrage (Idempotenzprüfung). |
| 500 | Server Error | Unerwarteter Serverfehler während der Zahlungsabwicklung. |
Beispiel: Unauthorized (401)
Beispiel: Zahlung fehlgeschlagen (402)
{
"error": {
"code": 402,
"type": "payment_failed",
"message": "Karte abgelehnt. Bitte versuchen Sie eine andere Zahlungsmethode.",
"decline_reason": "unzureichende_deckung"
}
}
Häufige Probleme & Fehlerbehebung¶
Problem: 401 Unauthorized
- Überprüfen Sie, ob Ihr API-Key ist korrekt und nicht vor kurzem rotiert wurde
- Stellen Sie sicher, dass der Basic Auth Header den abschließenden Doppelpunkt (
:) enthält - Überprüfen Sie, ob der Schlüsseltyp (Test/Live) zu Ihrer Umgebung passt
- Noch Fragen? Get support.
- Check out the changelog.