pixiWebLogin
Liefert den Kundenschlüssel (`CustKey`) eines Kunden, dessen Rechnungs- oder Lieferadresse zur angegebenen E-Mail/Kundennummer und PLZ passt.
Einfache Web-Login-Prüfung: ermittelt einen Kunden anhand einer E-Mail-Adresse (oder externen Kundennummer) in Kombination mit einer PLZ und liefert dessen CustKey.
Ablauf des Abgleichs:
EmailundZIPmüssen jeweils mindestens 4 Zeichen lang sein (LEN), andernfalls wird kein Kunde gefunden.- Die Rechnungsadresse (
Customers.AddrRef) und die Lieferadresse (Customers.ShipRef) des Kunden werden getrennt geprüft. Ein Kunde passt, wenn eine der beiden Adressen beide Bedingungen erfüllt:Emailpasst zum AdressfeldCustomerNrExternalodereMail.ZIPpasst zum AdressfeldZIP.
- Jeder Vergleich ist ein Teilstring-Abgleich in beide Richtungen: Die Eingabe enthält den gespeicherten Wert oder der gespeicherte Wert enthält die Eingabe (
LIKE '%…%'in beide Richtungen). - Der erste passende Kunde (
TOP 1) wird zurückgegeben. Es gibt keinORDER BY; bei mehreren Treffern ist der gelieferte Kunde daher nicht deterministisch.
Wird kein Kunde gefunden, liefert die Funktion NULL.
Hinweise
- Keine sichere Authentifizierung. Es gibt kein Passwort; die Kenntnis von E-Mail (oder Kundennummer) und PLZ genügt. Nur als einfache Identifikation verwenden.
- Falle bei leeren gespeicherten Werten: Durch den umgekehrten Abgleich (Eingabe
LIKE '%' + gespeicherter Wert + '%') passt eine Adresse, dereneMail,CustomerNrExternaloderZIPein Leerstring ist, auf jede ausreichend lange Eingabe. GespeicherteNULL-Werte passen nicht. - Der Teilstring-Abgleich ist unscharf: z. B. passt
ZIP1234auch auf eine gespeicherte12345. Platzhalterzeichen in der Eingabe (%,_,[) werden vonLIKEausgewertet. LENignoriert nachgestellte Leerzeichen; diese zählen nicht zur Mindestlänge von 4.- Die Tabellen werden mit
NOLOCKgelesen; nicht festgeschriebene Daten können geliefert werden. - Der Abgleich mit führendem Platzhalter kann keine Indizes nutzen und ist bei großen Kundentabellen ggf. langsam.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Email
Pflicht
|
varchar(60) string |
– |
E-Mail-Adresse oder externe Kundennummer ( Beispiel: |
ZIP
Pflicht
|
varchar(10) string |
– |
PLZ der Rechnungs- oder Lieferadresse des Kunden. Muss mindestens 4 Zeichen lang sein. Beispiel: |
Antwort
Result-Set 1 · Immer (einzelner Skalarwert; NULL, wenn kein Kunde passt)
Rückgabewert der Skalarfunktion: der Schlüssel des passenden Kunden.
| Spalte | Typ | Beschreibung |
|---|---|---|
CustKey
Kann leer sein |
int |
|
Beispielantwort
<SqlRowSet1>
<row>
<CustKey>4711</CustKey>
</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:pixiWebLogin>
<Email>max.mustermann@example.com</Email>
<ZIP>80331</ZIP>
</ns1:pixiWebLogin>
</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:pixiWebLogin>
<Email>max.mustermann@example.com</Email>
<ZIP>80331</ZIP>
</ns1:pixiWebLogin>
</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 = [
'Email' => 'max.mustermann@example.com',
'ZIP' => '80331',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiWebLogin', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiWebLogin