Skip to content

🔄 Wiederkehrende Zahlungsoperationen

📝 Wiederkehrende Zahlung Erstellen

Endpunkt

POST /recurring

Beschreibung

Erstellt eine wiederkehrende Zahlung (Abonnement), die automatisch in regelmäßigen Abständen ausgeführt wird. Zahlungen können in täglichen, monatlichen oder jährlichen Zeiträumen geplant werden.

http
Authorization: Bearer {token}
Content-Type: application/json

Anfrage: RecurringPaymentRequest

json
{
  "reference": "SUB-2026-001",
  "amount": 99.90,
  "currencyCode": "TRY",
  "paymentSystemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "explanation": "Premium-Abonnement - monatlich",
  "ownerDescription": {
    "fullName": "Julia Schmidt",
    "email": "julia.schmidt@example.com",
    "phone": "+905559876543",
    "cardId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  },
  "paymentChannel": "mobile",
  "firstPaymentTime": "2026-03-01T00:00:00Z",
  "lastPaymentTime": "2027-03-01T00:00:00Z",
  "frequency": "monthly",
  "interval": 1,
  "dayOfMonth": 1
}

Parameter

ParameterTypErforderlichBeschreibung
referencestringAbonnementreferenzcode (max. 150 Zeichen)
amountnumberBetrag für jede Zahlung
currencyCodestringWährungscode (z.B. TRY, USD, EUR)
paymentSystemIduuidZu verwendende Zahlungssystem-ID
explanationstringZahlungsbeschreibung (max. 400 Zeichen)
ownerDescriptionobjectKarteninhaberinformationen
paymentChannelstringZahlungskanal (max. 50 Zeichen)
firstPaymentTimedatetimeErstes Zahlungsdatum (ISO 8601)
lastPaymentTimedatetimeLetztes Zahlungsdatum (ISO 8601)
frequencystringZahlungshäufigkeit: daily, monthly, yearly
intervalintegerZeitraumintervall (zwischen 1-30)
monthOfYearinteger⚠️Monat des Jahres (1-12) - erforderlich für yearly
dayOfMonthinteger⚠️Tag des Monats (1-30) - erforderlich für monthly/yearly

Häufigkeitswerte

WertBeschreibungBeispiel
dailyTäglichJeden 1. Tag, jeden 5. Tag, usw.
monthlyMonatlich1. eines jeden Monats, 15. eines jeden Monats, usw.
yearlyJährlich1. Januar jedes Jahr, usw.

Antwort

Erfolgreiche Anfrage (200 OK)

json
{
  "success": true,
  "error": null,
  "shouldBeOwnerConfirmation": false,
  "ownerId": "OWN-123456",
  "orderStatus": "active"
}

Fehler (403 Forbidden)

json
{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.3",
  "title": "Forbidden",
  "status": 403,
  "detail": "Unzureichende Berechtigungen",
  "instance": "/recurring"
}

📋 Wiederkehrende Zahlungen Auflisten

Endpunkt

GET /recurring

Beschreibung

Listet vorhandene wiederkehrende Zahlungen auf. Unterstützt Filterung, Paginierung und Sortierung.

Query-Parameter

ParameterTypErforderlichBeschreibung
SubscriptionstringNach Abonnement-ID filtern
PageintegerSeitennummer (Standard: 1)
PageSizeintegerDatensätze pro Seite
OrderBystringSortierfeld
DirstringSortierrichtung: asc oder desc

Beispielanfrage

http
GET /recurring?Page=1&PageSize=10&OrderBy=createdAtUtc&Dir=desc

Antwort: RecurringPaymentModelPagedList

json
{
  "currentPage": 1,
  "pageCount": 5,
  "totalCount": 47,
  "hasNext": true,
  "hasPrevious": false,
  "stateKey": "abc123",
  "pages": [1, 2, 3, 4, 5],
  "list": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "amount": 99.90,
      "currencyCode": "TRY",
      "status": "active",
      "createdAtUtc": "2026-02-16T10:00:00Z",
      "reference": "SUB-2026-001",
      "explanation": "Premium-Abonnement - monatlich",
      "interval": 1,
      "dayOfMonth": 1,
      "monthOfYear": null,
      "nextPaymentAtUtc": "2026-03-01T00:00:00Z",
      "lastPaymentAtUtc": "2026-02-01T00:00:00Z",
      "phone": "+905559876543",
      "email": "julia.schmidt@example.com"
    }
  ]
}

✏️ Wiederkehrende Zahlung Aktualisieren

Endpunkt 1: Aktualisierung nach Abonnement-ID

PUT /recurring/subscription/{subscription}

Endpunkt 2: Aktualisierung nach UUID

PUT /recurring/{id}

Beschreibung

Aktualisiert Parameter einer bestehenden wiederkehrenden Zahlung. Betrag, Währung, Häufigkeit und andere Einstellungen können geändert werden.

Pfadparameter

ParameterTypBeschreibung
subscriptionstringAbonnement-ID (String)
iduuidWiederkehrende Zahlungs-UUID

Anfrage: UpdateRecurringPaymentRequest

json
{
  "amount": 119.90,
  "currencyCode": "TRY",
  "explanation": "Premium Plus-Abonnement - monatlich",
  "lastPaymentTime": "2028-03-01T00:00:00Z",
  "paymentSystemGroupId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "paymentSystemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "paymentChannel": "mobile",
  "frequency": "monthly",
  "status": "active",
  "interval": 1,
  "dayOfMonth": 1
}

Parameter

ParameterTypErforderlichBeschreibung
amountnumberAktualisierter Zahlungsbetrag
currencyCodestringWährungscode
explanationstringBeschreibung (max. 400 Zeichen)
lastPaymentTimedatetimeLetztes Zahlungsdatum
paymentSystemGroupIduuidZahlungssystemgruppen-ID
paymentSystemIduuidZahlungssystem-ID
paymentChannelstringZahlungskanal (max. 50 Zeichen)
frequencystringZahlungshäufigkeit
statusstringStatusänderung
intervalintegerZeitraumintervall (1-30)
monthOfYearinteger⚠️Monat des Jahres (1-12)
dayOfMonthinteger⚠️Tag des Monats (1-30)

Antwort

Erfolgreiche Anfrage (200 OK)

json
{
  "success": true
}

Beispielverwendung

cURL - Erstellen

bash
curl -X POST https://pgw.klogs.io/recurring \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "SUB-2026-001",
    "amount": 99.90,
    "currencyCode": "TRY",
    "ownerDescription": {
      "fullName": "Julia Schmidt",
      "email": "julia.schmidt@example.com",
      "phone": "+905559876543",
      "cardId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    },
    "firstPaymentTime": "2026-03-01T00:00:00Z",
    "frequency": "monthly",
    "interval": 1,
    "dayOfMonth": 1
  }'

JavaScript - Auflisten

javascript
const response = await fetch('https://pgw.klogs.io/recurring?Page=1&PageSize=10', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data.list);

C# - Aktualisieren

csharp
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");

var updateRequest = new {
    amount = 119.90,
    currencyCode = "TRY",
    status = "active"
};

var content = new StringContent(
    JsonSerializer.Serialize(updateRequest),
    Encoding.UTF8,
    "application/json"
);

var subscriptionId = "SUB-2026-001";
var response = await client.PutAsync(
    $"https://pgw.klogs.io/recurring/subscription/{subscriptionId}",
    content
);

Hinweise

  • firstPaymentTime muss bei der Erstellung wiederkehrender Zahlungen in der Zukunft liegen
  • interval-Wert muss zwischen 1-30 liegen
  • dayOfMonth-Parameter ist für monatliche Zahlungen erforderlich
  • dayOfMonth- und monthOfYear-Parameter sind für jährliche Zahlungen erforderlich
  • Zahlungen werden automatisch verarbeitet, wenn der Abonnementstatus active ist
  • Um ein Abonnement zu stoppen, aktualisieren Sie den status auf disabled
  • Es gibt einen automatischen Wiederholungsmechanismus für fehlgeschlagene Zahlungen

Verwandte Endpunkte