pixiPaySetAuthorizationStatus
Speichert das Ergebnis einer Zahlungsautorisierung für einen Auftrag, gibt HAL-Auftragspositionen frei oder belässt sie und schreibt einen Zahlungs-Logeintrag.
Wird von einem externen Zahlungsanbieter (protokolliert als pixi Apps Payment Provider) genutzt, um das Ergebnis einer Autorisierung für einen Auftrag zu melden.
- Der Auftrag wird über
OrderNrinOrderHeadergesucht. Daraus werden Kundenreferenz, Rechnungsadressreferenz, Währungscode (Currency.CodeA) und dasCustomerOf(Shop) des Kunden gelesen. Außerdem wird die Summe vonqty * pricealler Auftragspositionen im StatusHALberechnet. - Abhängig von
Success:1(autorisiert): Auftragspositionen im StatusHALwerden aufANGgesetzt; der Logeintrag erhält TransaktionstypAUund CodeAUTHORIZED.0(abgelehnt, Standard): Auftragspositionen bleiben im StatusHAL; der Logeintrag erhält TypDEund CodeAUTH DECLINED; der FehlversuchszählerccpSetFailTriesdes Auftrags wird um 1 erhöht.
- Der Auftragskopf wird aktualisiert:
ccpNumOfTrieswird um 1 erhöht,CCPLastAuthCode=AuthCode,ccpPayID=AuthID,CCPPaymentInfoOK=Y,CCPReauthorizeYN=N,ccpSetFailLastTimeundUpdateDate= aktuelle Zeit,UpdateEmp=API Call PaySetAuth. - Alle Auftragspositionen des Auftrags im Status
HALerhalten den neuen Status (siehe Schritt 2), inklusiveUpdateEmp/UpdateDate. - In
CCPTranLogwird eine Zeile mit VendorAP, dem Shop (CustomerOf), der Auftragsnummer,Messageals Notiz, dem berechnetenHAL-Betrag als Gesamtbetrag, Kunden- und Rechnungsadressreferenz sowie dem Währungscode eingefügt.
Der Aufruf liefert keine Ergebnismenge.
Hinweise
- Alle Änderungen laufen in einer Transaktion (bzw. einem Savepoint, falls bereits eine Transaktion offen ist). Bei einem Fehler werden die Änderungen zurückgerollt und
log.InsertError(nicht beigefügt) aufgerufen; der Code selbst wirft den Fehler nicht erneut, der Aufrufer erhält daher eventuell keinen Fehlerhinweis. - Existiert
OrderNrnicht, werden weder Auftragskopf noch Positionen geändert, aber trotzdem eineCCPTranLog-Zeile mit leeren (NULL) Werten für Shop, Kunde, Adresse und Währung eingefügt. Es wird kein Fehler gemeldet. CCPPaymentInfoOKwird aufYgesetzt undccpSetFailLastTimeaktualisiert, auch wennSuccess= 0 ist.ccpSetFailTrieswird ohneISNULLerhöht; ist die Spalte NULL, bleibt sie NULL.- Der Betrag wird über
Order_Idberechnet, die zu ändernden Positionen werden überOrderNrermittelt. - Lesezugriffe verwenden
NOLOCK, UpdatesROWLOCK. AuthID,AuthCodeundMessagehaben keinen Standardwert und müssen übergeben werden.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
Pflicht
|
int | – |
Pixi-Auftragsnummer des Auftrags, dessen Autorisierungsergebnis gemeldet wird. Beispiel: |
Success
|
bit boolean |
0 |
Ergebnis der Autorisierung. Erlaubte Werte
Beispiel: |
AuthID
Pflicht
|
varchar(50) string |
– |
Zahlungs-/Autorisierungs-ID des Anbieters; wird in Beispiel: |
AuthCode
Pflicht
|
varchar(50) string |
– |
Autorisierungscode des Anbieters; wird in Beispiel: |
Message
Pflicht
|
varchar(200) string |
– |
Freitext-Meldung des Anbieters; wird als Notiz ( Beispiel: |
Antwort
Dieser Call liefert kein Result-Set.
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:pixiPaySetAuthorizationStatus>
<OrderNr>100245</OrderNr>
<!-- <Success>1</Success> -->
<AuthID>PAY-7F3A9C21</AuthID>
<AuthCode>A12345</AuthCode>
<Message>Authorization approved</Message>
</ns1:pixiPaySetAuthorizationStatus>
</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:pixiPaySetAuthorizationStatus>
<OrderNr>100245</OrderNr>
<!-- <Success>1</Success> -->
<AuthID>PAY-7F3A9C21</AuthID>
<AuthCode>A12345</AuthCode>
<Message>Authorization approved</Message>
</ns1:pixiPaySetAuthorizationStatus>
</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 = [
'OrderNr' => '100245',
// 'Success' => '1',
'AuthID' => 'PAY-7F3A9C21',
'AuthCode' => 'A12345',
'Message' => 'Authorization approved',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiPaySetAuthorizationStatus', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiPaySetAuthorizationStatus