Postman-Collection
Payments Schreiben

pixiPaySetInvoiceCapture

Verarbeitet das Ergebnis eines Zahlungseinzugs (Capture) zu einer Rechnung, bucht sie als bezahlt oder setzt sie auf unbezahlt zurück und protokolliert dies in CCPTranLog.

Verarbeitet das Ergebnis eines Zahlungseinzugs (Capture), das ein externer Zahlungsanbieter ("pixi Apps Payment Provider") für die Rechnung InvoiceNr meldet.

Zunächst wird die Rechnung zusammen mit Kunde und Währung gelesen (Shop CustomerOf des Kunden, CustRef, AddrRef, Währungscode). Alle Änderungen laufen in einer Transaktion (bzw. in einem Savepoint, falls bereits eine Transaktion offen ist).

Success = 1 (Einzug erfolgreich)

  1. Aufruf der internen Prozedur pixi_SetInvoicePaid mit paid = 1, EventID und PaidSum = CaptureSum. Diese legt im Kundenkonto ein manuelles Buchungsereignis an und gleicht es mit der Rechnung ab. EventID muss ein manuelles, positives Kundenkonto-Ereignis sein, sonst wird keine Buchung erzeugt.
  2. Bei SetRemainingOrdersToHAL = 1 werden alle Auftragspositionen mit Status ANG, die zu einem Auftrag (gleiche OrderNr) mit mindestens einer Position auf dieser Rechnung gehören, auf Status HAL gesetzt.
  3. Eintrag in CCPTranLog mit Transaktionstyp CA und Fehlercode CAPTURED, Notiz Message, Gesamtbetrag CaptureSum und Rechnungswährung.
  4. Rückgabe Status = Success mit der Meldung Successfully created CA manual booking event for InvoiceNr ….

Success = 0 (Einzug fehlgeschlagen)

  1. Aktualisierung der Rechnung: ccpSetFailTries wird erhöht, CCPNumOfTries und ccpSetFailLastTime gesetzt, PayedSum auf 0 und Payed auf NULL zurückgesetzt, CCPPaymentDone und CCPReCharge auf N gesetzt.
  2. Die verbleibenden ANG-Auftragspositionen der betroffenen Aufträge werden immer auf HAL gesetzt (unabhängig von SetRemainingOrdersToHAL).
  3. Eintrag in CCPTranLog mit Transaktionstyp ER und Fehlercode CAPTURED FAILED.
  4. Rückgabe Status = Success mit der Meldung Reset payment data to unpaid for InvoiceNr ….

Bei einem Fehler wird die Transaktion zurückgerollt und eine Zeile mit Status = Error und der SQL-Fehlermeldung geliefert.

Hinweise

  • Fehler in pixi_SetInvoicePaid (z. B. Rechnung existiert nicht, Rechnung bereits bezahlt, EventID fehlt oder ist kein manuelles positives Ereignis) werden abgefangen und nur ins Fehlerprotokoll (log.InsertError) geschrieben. Der Aufruf liefert trotzdem Status = Success und schreibt den CCPTranLog-Eintrag; eine Success-Zeile garantiert also nicht, dass die Zahlung gebucht wurde.
  • Im beigefügten pixi_SetInvoicePaid wird der offene Betrag der Rechnung im Kundenkonto gebucht; CaptureSum wird dort nicht als Buchungsbetrag verwendet, sondern nur in CCPTranLog gespeichert.
  • PayID und PayCode sind Pflichtparameter, werden aber nicht verwendet.
  • Jeder Wert von Success außer 1 (auch NULL) führt in den Fehlerzweig.
  • CCPNumOfTries wird aus ccpSetFailTries + 1 gesetzt, nicht aus dem eigenen bisherigen Wert.
  • Wird die Rechnung (bzw. der Join auf Kunde/Währung) nicht gefunden, werden weder Rechnung noch Auftragspositionen geändert, aber ein Protokolleintrag mit leeren Referenzen wird versucht.
  • Änderungen an Auftragspositionen erfolgen mit UpdateEmp = API Call PaySetAuth, an Rechnungen mit CCP Process. Lesezugriffe nutzen NOLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
InvoiceNr
Pflicht
varchar(20)
string
–

Nummer der Rechnung, deren Capture-Ergebnis gemeldet wird.

Beispiel: RE1000123

Success
Pflicht
bit
boolean
–

Ergebnis des Einzugs beim Zahlungsanbieter.

Erlaubte Werte

  • 1 – Einzug erfolgreich: Rechnung wird als bezahlt gebucht, Protokolleintrag `CA`/`CAPTURED`.
  • 0 – Einzug fehlgeschlagen: Zahlungsdaten der Rechnung werden zurückgesetzt, offene Positionen auf `HAL` gesetzt, Protokolleintrag `ER`/`CAPTURED FAILED`.

Beispiel: 1

PayID
Pflicht
varchar(50)
string
–

Zahlungs-ID des Anbieters. Pflichtparameter, wird aber nicht verwendet.

Beispiel: pay_8f3a21c9

PayCode
Pflicht
varchar(50)
string
–

Zahlungscode des Anbieters. Pflichtparameter, wird aber nicht verwendet.

Beispiel: CAPTURE_OK

Message
Pflicht
varchar(200)
string
–

Freitext, der als Notiz (CCPNote) im CCP-Transaktionsprotokoll gespeichert wird.

Beispiel: Capture confirmed by provider

CaptureSum
Pflicht
money
decimal
–

Eingezogener Betrag; wird als Gesamtbetrag im CCP-Protokoll gespeichert und als PaidSum an pixi_SetInvoicePaid übergeben.

Beispiel: 119.90

EventID
varchar(3)
string
NULL

Kundenkonto-Ereignis für die manuelle Zahlungsbuchung bei Success = 1. Muss ein manuelles, positives Ereignis sein; ohne Angabe wird keine Buchung erzeugt.

Beispiel: ZE

SetRemainingOrdersToHAL
Pflicht
bit
boolean
–

Nur bei Success = 1: ob verbleibende ANG-Positionen der fakturierten Aufträge auf HAL gesetzt werden. Im Fehlerzweig geschieht dies immer.

Erlaubte Werte

  • 1 – Verbleibende `ANG`-Positionen auf `HAL` setzen.
  • 0 – Auftragspositionen unverändert lassen.

Beispiel: 0

Antwort

Result-Set 1 · Immer, eine Zeile (Erfolgsmeldung des jeweiligen Zweigs oder Fehlerzeile bei einer Ausnahme).

Statuszeile des Aufrufs.

Spalte Typ Beschreibung
Status varchar(7)
string

Success oder Error.

Message
Kann leer sein
nvarchar(4000)
string

Erfolgstext mit Rechnungsnummer oder SQL-Fehlermeldung. NULL, wenn InvoiceNr NULL ist.

Fehlermeldungen

Status Meldung Ursache
Error {ERROR_MESSAGE()} Beliebiger SQL-Fehler bei der Aktualisierung von Rechnung/Auftragspositionen oder beim Eintrag in `CCPTranLog` (z. B. Constraint-Verletzung). Die Transaktion wird zurückgerollt. Fehler in `pixi_SetInvoicePaid` werden hier nicht zurückgegeben, sondern nur protokolliert.

Beispiele

POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
  <SOAP-ENV:Body>
    <ns1:pixiPaySetInvoiceCapture>
      <InvoiceNr>RE1000123</InvoiceNr>
      <Success>1</Success>
      <PayID>pay_8f3a21c9</PayID>
      <PayCode>CAPTURE_OK</PayCode>
      <Message>Capture confirmed by provider</Message>
      <CaptureSum>119.90</CaptureSum>
      <!-- <EventID>ZE</EventID> -->
      <SetRemainingOrdersToHAL>0</SetRemainingOrdersToHAL>
    </ns1:pixiPaySetInvoiceCapture>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Invoices · Schreiben Customers · Lesen Currency · Lesen Orderlines · Schreiben Invlines · Lesen CCPTranLog · Schreiben
SQL-Objekt:
dbo.pipiPaySetInvoiceCapture
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben