pixiPayGetInvoicesToCapture
Liefert unbezahlte, ausgelieferte Rechnungen einer Zahlungsart, die zur Abbuchung anstehen, mit Auftrags-, Betrags-, Adress- und Kartendaten.
Ermittelt die Rechnungen, die eine Zahlungsanbindung (z. B. ein Kreditkartenanbieter) als Nächstes abbuchen soll, und liefert sie mit allen für die Abbuchung nötigen Daten.
Eine Rechnung wird gewählt, wenn alle folgenden Bedingungen gelten:
Paymententspricht@PaymentCode.- Es wurde noch nichts bezahlt (
PayedSum = 0) undTotal > 0. - Die Abbuchung ist nicht als erledigt markiert (
CCPPaymentDoneistNoder NULL). - Die Rechnung wurde ausgescannt (
ScanOutDateist gesetzt). InvoiceKeyist größer als@FromInvoiceId.- Eine der Wiederholungsbedingungen trifft zu:
- noch kein Abbuchungsversuch (
CCPNumOfTries = 0), oder - eine erneute Belastung ist angefordert (
CCPRecharge = 'Y'), oder - 1 bis 3 Fehlversuche (
ccpSetFailTries) und der letzte Fehlversuch (ccpSetFailLastTime) liegt mehr als 10 Minuten zurück, oder @ShowAll = 1, wodurch die Wiederholungsbedingungen vollständig entfallen.
- noch kein Abbuchungsversuch (
Es werden höchstens @RowCount Rechnungen gewählt, aufsteigend sortiert nach InvoiceKey. Je Rechnung werden Rechnungsnummer, die kommagetrennte Liste der externen Auftragsnummern, Gesamtbetrag, bezahlter Betrag, abzubuchender Betrag (Total - PayedSum), die Summe der verknüpften Auftragspositionen im Status ANG, Währungscode, Shop (CustomerOf des Kunden), Karten- und Adressdaten der Rechnungsadresse sowie die Abbuchungsstatusfelder geliefert.
Paging: Die InvoiceId der letzten gelieferten Zeile als @FromInvoiceId übergeben, um den nächsten Block zu erhalten.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK, nicht festgeschriebene Änderungen können sichtbar sein. - Der Aufruf ändert keine Daten; das Markieren von Rechnungen als abgebucht oder fehlgeschlagen muss separat erfolgen.
@ShowAll = 1hebt nur die Wiederholungs-/Wartebedingung auf; alle anderen Filter (Zahlungsart, unbezahlt, ausgescannt, nicht erledigt) gelten weiterhin. Dabei werden auch Rechnungen mit mehr als 3 Fehlversuchen geliefert.- Die Begrenzung
TOP (@RowCount)greift vor dem Join auf Währung, Kunde und Adresse. Rechnungen ohne passenden Datensatz dort entfallen, daher können weniger als@RowCountZeilen geliefert werden, obwohl weitere Rechnungen existieren. - Da nur Rechnungen mit
PayedSum = 0gewählt werden, entsprichtTotalToCaptureimmerTotal. Total_OrderCurrist ein Duplikat vonTotal; ein Code-Kommentar sieht die Entfernung vor, Clients sollten sich nicht darauf verlassen.- Das Ergebnis enthält sensible Kartendaten (Nummer, Ablaufdatum, CVC); entsprechend sorgfältig verarbeiten und protokollieren.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
PaymentCode
Pflicht
|
char(1) string |
– |
Code der Zahlungsart; nur Rechnungen, deren Feld Beispiel: |
ShowAll
|
bit boolean |
0 |
Bei 1 werden die Wiederholungsbedingungen (noch kein Versuch, erneute Belastung angefordert oder 1–3 Fehlversuche mit dem letzten älter als 10 Minuten) ignoriert. Erlaubte Werte
Beispiel: |
RowCount
|
int | 30 |
Maximale Anzahl der gelieferten Rechnungen. Beispiel: |
FromInvoiceId
|
int | 0 |
Nur Rechnungen mit einem Beispiel: |
Antwort
Result-Set 1 · Immer (kann leer sein).
Eine Zeile je abzubuchender Rechnung, aufsteigend sortiert nach InvoiceId.
| Spalte | Typ | Beschreibung |
|---|---|---|
InvoiceNr
Kann leer sein |
string |
Rechnungsnummer. |
OrderNrExternal
Kann leer sein |
varchar(8000) string |
Kommagetrennte, sortierte Liste der eindeutigen externen Auftragsnummern der Rechnungspositionen. |
Total
Kann leer sein |
decimal |
Rechnungsbetrag gesamt. |
OrderLinesTotalANG
|
decimal |
Summe von |
PayedSum
Kann leer sein |
decimal |
Bereits bezahlter Betrag (durch den Filter immer 0). |
TotalToCapture
Kann leer sein |
decimal |
Abzubuchender Betrag, |
Total_OrderCurr
Kann leer sein |
decimal |
Identisch mit |
OrderCurrency
Kann leer sein |
string |
Währungscode ( |
ShopID
Kann leer sein |
string |
Shop, zu dem der Kunde gehört ( |
CardOwner
Kann leer sein |
string |
Name des Karteninhabers aus der Rechnungsadresse. |
CardNumber
Kann leer sein |
string |
Kartennummer aus der Rechnungsadresse. |
CardExpiration
Kann leer sein |
string |
Ablaufdatum der Karte aus der Rechnungsadresse. |
CardCVC
Kann leer sein |
string |
Kartenprüfnummer aus der Rechnungsadresse. |
Anrede
Kann leer sein |
string |
Anrede der Rechnungsadresse. |
CareOf
Kann leer sein |
string |
c/o-Zeile der Rechnungsadresse. |
FirstName
Kann leer sein |
string |
Vorname. |
LastName
Kann leer sein |
string |
Nachname. |
Address
Kann leer sein |
string |
Straße und Hausnummer. |
City
Kann leer sein |
string |
Ort. |
ZIP
Kann leer sein |
string |
Postleitzahl. |
Country
Kann leer sein |
string |
Land. |
Phone
Kann leer sein |
string |
Telefonnummer. |
eMail
Kann leer sein |
string |
E-Mail-Adresse. |
CCPNumOfTries
Kann leer sein |
int |
Bisherige Anzahl der Abbuchungsversuche. |
CCPRecharge
Kann leer sein |
string |
|
ccpPayID
Kann leer sein |
string |
Zahlungs-ID beim Zahlungsanbieter. |
ccpSetFailLastTime
Kann leer sein |
dateTime |
Zeitpunkt des letzten Fehlversuchs. |
ccpSetFailTries
Kann leer sein |
int |
Anzahl der Fehlversuche. |
InvoiceId
|
int |
Interner Rechnungsschlüssel; als |
Beispielantwort
<SqlRowSet1>
<row>
<InvoiceNr>RE2024001234</InvoiceNr>
<OrderNrExternal>100045678,100045679</OrderNrExternal>
<Total>149.90</Total>
<OrderLinesTotalANG>0.00</OrderLinesTotalANG>
<PayedSum>0.00</PayedSum>
<TotalToCapture>149.90</TotalToCapture>
<Total_OrderCurr>149.90</Total_OrderCurr>
<OrderCurrency>EUR</OrderCurrency>
<ShopID>SHOP1</ShopID>
<CardOwner>Max Mustermann</CardOwner>
<CardNumber>411111******1111</CardNumber>
<CardExpiration>12/27</CardExpiration>
<CardCVC/>
<Anrede>Herr</Anrede>
<CareOf/>
<FirstName>Max</FirstName>
<LastName>Mustermann</LastName>
<Address>Musterstr. 1</Address>
<City>Berlin</City>
<ZIP>10115</ZIP>
<Country>DE</Country>
<Phone>030123456</Phone>
<eMail>max@example.com</eMail>
<CCPNumOfTries>0</CCPNumOfTries>
<CCPRecharge>N</CCPRecharge>
<ccpPayID>PAY-88231</ccpPayID>
<ccpSetFailTries>0</ccpSetFailTries>
<InvoiceId>58231</InvoiceId>
</row>
</SqlRowSet1>
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:pixiPayGetInvoicesToCapture>
<PaymentCode>C</PaymentCode>
<!-- <ShowAll>0</ShowAll> -->
<!-- <RowCount>30</RowCount> -->
<!-- <FromInvoiceId>0</FromInvoiceId> -->
</ns1:pixiPayGetInvoicesToCapture>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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:pixiPayGetInvoicesToCapture>
<PaymentCode>C</PaymentCode>
<!-- <ShowAll>0</ShowAll> -->
<!-- <RowCount>30</RowCount> -->
<!-- <FromInvoiceId>0</FromInvoiceId> -->
</ns1:pixiPayGetInvoicesToCapture>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'PaymentCode' => 'C',
// 'ShowAll' => '0',
// 'RowCount' => '30',
// 'FromInvoiceId' => '0',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiPayGetInvoicesToCapture', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiPayGetInvoicesToCapture