DCC via DirectLink
1. Einleitung
Auf Wunsch kann der Händler DCC (electronic Dynamic Currency Conversion, elektronische dynamische Währungsumrechnung) nutzen. Ist diese Option aktiviert, haben die Kunden des Händlers die Möglichkeit, zwischen ihrer bevorzugten Währung und der des Händlers zu wählen.
Mit DirectLink wird der DCC-Ablauf in zwei Stufen unterteilt:
- Der Händler ruft die DCC-Daten ab, was auf Grundlage der BIN-Nummer auf der Karte des Kunden geschieht.
- Der Händler fordert die Zahlung an. Dies geschieht mit einem allgemeinen DirectLink-Aufruf, der einige zusätzliche Parameter erhält (um die zuvor abgefragten DCC-Daten bereitzustellen).
2. Abruf der DCC-Daten via Worldline DCC-API
Wenn der Händler das DCC-Angebot für die vom Kunden verwendete Kartennummer abrufen möchte, muss er dazu die DCC-API verwenden. Diese API liefert ein XML-Dokument zurück, das die DCC-Werte enthält, wie Worldline sie vom DCC-Provider erhalten hat.
Für die Nutzung der DCC-API durch den Händler gibt es einige wenige Bedingungen:- Die DirectLink-Option muss in seinem Konto aktiviert sein
- Die DCC-Option muss in seinem Konto aktiviert sein
- Der Händler sollte in der Lage sein, die Kartenmarke zu unterstützen, für die er die DCC-Kurse abruft. Er kann beispielsweise nicht die DCC-Kurse für eine VISA-Kreditkarte anfordern, wenn er keine VISA-Zahlungen oder keine DCC-Zahlungen für diesen Kartentyp unterstützt.
2.1 API-URL und Parameter
Die folgenden URLs dienen zum Aufruf der Worldline DCC-API:
- TEST: https://ogone.test.v-psp.com/ncol/test/getDCCRates.asp
- PROD: https://secure.ogone.com/ncol/prod/getDCCRates.asp
Um eine gültige DCC-Kursrückmeldung zu erhalten, müssen die folgenden Parameter an die DCC-API gesendet werden:
Feld / Format | Verwendung |
---|---|
AMOUNT Numeric |
Der umzurechnende Originalbetrag (Betrag x 100) |
BIN 6 numbers |
Die ersten Ziffern (BIN-Nummer) der Karte des Kunden |
CONVCCY 3 alphanumeric characters |
Die Währung, in die der Betrag umgerechnet werden soll |
CURRENCY 3 alphanumeric characters |
Die Originalwährung des Betrags |
ORDERID Alphanumeric |
Eindeutige Bestellnummer (Händlerreferenz) |
PSPID - |
Die PSPID des Händlers |
PSWD - |
Passwort des API-Anwenders (USERID). |
SHASIGN - |
Digest (hashed string) to authenticate the data |
USERID - |
Applikationsgebundenen (API-) Anwenders des Händlers |
Wird einer dieser Parameter nicht korrekt bereitgestellt, enthält die Rückmeldung einen Fehlerhinweis.
Hinweis: Einer der beiden Parameter BIN oder CONVCCY muss angegeben werden, weil er zur Bestimmung der Währung verwendet wird, in die der Betrag umgerechnet werden soll. Wird keine CONVCCY angegeben, ist die Angabe der BIN Pflicht. Die CONVCCY ist Pflicht, wenn keine BIN angegeben wurde, und wird andernfalls ignoriert. Das bedeutet: Wenn beide Parameter angegeben werden, hat BIN Vorrang vor CONVCCY und die Zielwährung wird aus der BIN abgeleitet. In jedem Fall empfehlen wir dringend, dass der Händler den Parameter BIN und nicht den Parameter CONVCCY verwendet.
2.2 SHA-Berechnung
Unten ist die SHA-Berechnung für die DCC dargestellt. Auch wenn das Prinzip gleich ist, darf die SHA-Berechnung nicht mit der SHA vor der Bezahlung verwechselt werden. Hierbei handelt es sich um zwei verschiedene Vorgänge.
Parameter: AMOUNT: 1.50 --> 150 BIN: 411111 CURRENCY: EUR ORDERID: order00001 PSPID: MyPSPID PSWD: MySecretPswd51 USERID: MyAPIUser SHA-Passphrase (in der Technischen Information): MySecretSig1875!? Zeichenfolge für Hashing: AMOUNT=150MySecretSig1875!?BIN=411111MySecretSig1875!?CURRENCY=EURMySecretSig1875!? ORDERID=order00001MySecretSig1875!?PSPID=MyPSPIDMySecretSig1875!?PSWD=MySecretPswd51 MySecretSig1875!?USERID=MyAPIUserMySecretSig1875!? Hashing-Ergebnis (SHA-1): EFA8DD0C297CBA45DD7ADBEAF7CA4699C8F3C19B |
Hinweis: Wenn der Händler sowohl den Parameter BIN als auch den Parameter CONVCCY bereitstellen will, sollten beide in das Hashing einfließen, auch wenn im weiteren Ablauf nur BIN verwendet wird.
Parameter: AMOUNT: 1.50 --> 150 BIN: 411111 CONVCCY: JPY CURRENCY: EUR ORDERID: order00001 PSPID: MyPSPID PSWD: MySecretPswd51 USERID: MyAPIUser SHA-Passphrase (in der Technischen Information): MySecretSig1875!? Zeichenfolge für Hashing: AMOUNT=150MySecretSig1875!?BIN=411111MySecretSig1875!?CONVCCY=JPYMySecretSig1875!? CURRENCY=EURMySecretSig1875!?ORDERID=order00001MySecretSig1875!?PSPID=MyPSPID MySecretSig1875!?PSWD=MySecretPswd51MySecretSig1875!?USERID=MyAPIUserMySecretSig1875!? Hashing-Ergebnis (SHA-1): 3AA6212395739EA34C0853DB060B4B290EAB3422 |
2.3 API-Rückmeldung
Die Rückmeldung der API ist immer ein Dokument mit XML-Struktur, das alle nötigen Informationen für die zweite Stufe des Transaktionsprozesses enthält.
2.3.1 Rückmeldung bei erfolgreichem Abruf
Wenn die DCC-Kurse erfolgreich abgerufen wurden, hat die XML-Datei folgendes Format:
<dccResponse> |
|
<orderid></orderid> | -> Eindeutige Bestellnummer (Händlerreferenz) (alphanumerisch) |
<commPerc></commPerc> | -> Provision in Prozent (numerisch) |
<convAmt></convAmt> |
-> Betrag nach Umrechnung (x 100) |
<convCcy></convCcy> |
-> Umrechnungswährung (3 Zeichen) |
<reference></reference> | -> DCC-Referenz (kann leer sein) |
<exchRate></exchRate> | -> Wechselkurs (numerisch) |
<exchRateSource></exchRateSource> | -> Bezugsquelle der DCC-Kurse |
<exchRateTS></exchRateTS> | -> Zeitstempel der DCC-Kurse (datetime) |
<marginPerc></marginPerc> | -> Marge in Prozent (numerisch) |
<valid></valid> | -> Gültigkeit des Angebots (in Stunden) (numerisch) |
</dccResponse> |
Die Zeitangabe für den Abruf der DCC-Kurse erfolgt im XML-Standardformat „YYYY-MM-DDThh:mm:ss“, wobei:
- YYYY = Jahr
- MM = Monat
- DD = Tag
- T = Markierung für Beginn der Tageszeitangabe
- hh = Stunden
- mm = Minuten
- ss = Sekunden
2.3.2 Rückmeldung bei fehlerhaftem Abruf
Wenn während der Verarbeitung des DCC-API-Aufrufs oder aus technischen Gründen ein Problem auftritt (z. B. weil der DCC-Provider nicht erreichbar ist, die bereitgestellten Daten nicht korrekt sind usw.), enthält die XML-Rückmeldung einen Fehlerhinweis. Bei einem fehlerhaften Aufruf der DCC-API hat die XML-Rückmeldung folgendes Format:
<dccResponse> |
|
<error> | |
<code></code> | -> Fehlercode (numerisch) |
<desc></desc> |
-> Fehlerbeschreibung (Zeichenfolge) |
</error> |
|
</dccResponse> |
3. DCC Zahlungsanforderung
Nachdem der Händler die verfügbaren DCC-Daten erhalten und diese dem Kunden angezeigt hat, sollte der Kunde die Wahl haben, diese Option zu nutzen oder nicht, d. h. in seiner eigenen Währung zu bezahlen (wobei eine Umrechnung zwischen der Währung seiner Karte und der Währung des Händlers erfolgt), oder in der Währung des Händlers zu bezahlen (dann erfolgt keine Umrechnung).
Nachfolgend beschreiben wir den Fall, dass der Kunde sich für die Bezahlung in der eigenen Währung entscheidet, also die angebotene Währungsumrechnung akzeptiert. Hierbei handelt es sich um den anspruchsvollsten Fall, da der Händler zusätzliche Parameter in die DirectLink Anfrage aufnehmen muss, um die gewählten DCC-Werte zu übermitteln.
In beiden Fällen (DCC akzeptiert oder nicht) muss der Händler einen gemeinsamen zusätzlichen Parameter bereitstellen, den DCC indicator. Dieser DCC indicator zeigt an, ob der Kunde das eDCC-Angebot angenommen hat.
3.1 Parameter
Der Händler muss folgende Parameter bereitstellen:
Feld / Format / * Obligatorisch | Verwendung |
---|---|
DCC_COMMPERC Numerisch |
Provision in Prozent |
DCC_CONVAMOUNT* Numerisch |
Umgerechneter Betrag |
DCC_CONVCCY* Alphanumerisch, max. 3 |
Zielwährung der Umrechnung |
DCC_EXCHRATE* Numerisch |
Wechselkurs |
DCC_EXCHRATETS* [yyyy-mm-dd hh:mm:ss] |
Wechselkursdatum |
DCC_INDICATOR* Entweder 0 oder 1 |
DCC indicator (zeigt an, ob der Kunde das DCC-Angebot angenommen hat). Mögliche Werte sind
|
DCC_MARGINPERC* Numerisch |
Marge in Prozent |
DCC_REF Alphanumerisch, max. 80 |
DCC-Referenz |
DCC_SOURCE* Alphanumerisch, max. 32 |
Quelle des Wechselkurses |
DCC_VALID* Numerisch |
Gültigkeit der Wechselkursangabe (in Stunden) |
ORDERID* (**) Alphanumerisch |
Eindeutige Bestellnummer (Händlerreferenz) |
( ** Die ORDERID sollte den selben Wert haben als den von dem DCC API Aufruf gesendeten Wert. Indem die OrderID nicht mitgesendet wird oder nicht übereinstimmt mit der OrderID ,gesendet in dem API Aufruf, wird die Transaktion blockiert.)
Alle diese Werte werden durch die Worldline DCC-API während der Ausführung der DCC-Anfrage (Stufe 1) bereitgestellt.
3.2 DCC-Angebot abgelaufen
Jedes DCC-Angebot hat eine eigene Gültigkeitsdauer. Sie lässt sich errechnen durch Addieren des Parameters DCC_VALID (Gültigkeitsdauer in Stunden) mit dem in DCC-EXCHRATETS enthaltenen Tageszeitwert. Wenn wir feststellen, dass ein mit der Transaktion eingereichtes DCC-Angebot bereits abgelaufen ist, gibt es je nach Händlerkonfiguration zwei mögliche Resultate. Bitte beachten Sie, dass dies nur von Bedeutung ist, wenn der Kunde das DCC-Angebot angenommen hat (DCC_INDICATOR = 1). Wenn der Kunde das DCC-Angebot nicht angenommen hat, ist es für Worldline auch nicht zweckdienlich, die Gültigkeit des abgelehnten Angebots zu prüfen.
Erstgenannter Fall tritt ein, wenn in der Händlerkonfiguration festgelegt ist, die Transaktion zu sperren, wenn das DCC-Angebot abgelaufen ist. Worldline tut genau das und meldet die allgemeine Fehlernummer „50001111“ zurück.
Im zweiten Fall sperren wir die Transaktion nicht. Stattdessen holen wir selbst ein neues DCC-Angebot ein. Hierzu verwenden wir die in der Originaltransaktion an uns übermittelte Währung und den Betrag und dieses Angebot wird automatisch akzeptiert (beachten Sie bitte, dass sich hierbei der Wechselkurs von dem unterscheiden kann, den der Händler gesendet hat).
3.3 Mögliche Fehler
Fehler-ID | Erklärung |
---|---|
50001111 | Allgemeiner Fehlercode |
50001118 | PSPID unbekannt oder inaktiv |
50001122 | Währung unbekannt oder inaktiv |
50001120 | Währungscode unbekannt |
50001144 | Acquirer anhand des Inputs nicht gefunden |
50001146 | DCC-Konfiguration für PSPID + Marke nicht gefunden |
50001184 | SHA stimmt nicht überein |
30131001 | Betrag ungültig |
In machen Fällen können bei der Nutzung von DCC über DirectLink Fehler auftreten.
Diese sind generell selbsterklärend, aber da wir diese unter dem allgemeinen Fehlercode aufführen (50001111), möchten wir diese näher erläutern:
- Die angebotene Umtauschrate ist abgelaufen. Die Angebotsfrist ergibt sich aus DCC_EXCHRATETS + DCC_VALID (angegeben in Stunden)
- In einem der Felder steht ein ungültiger Wert, z. B. sollte DCC_INDICATOR 0 oder 1 lauten, DCC_EXCHRATETS sollte eine Datumsangabe in korrektem Format enthalten, DCC_CONVAMOUNT sollte ein numerischer Wert sein usw.
- Die DCC Parameter die durch den Händler gesendet werden, stimmen nicht überein mit den empfangenen DCC API Werten.
- Die Marke der angefragten Karte stimmt nicht mit der im Parameter BRAND übermittelten überein
- Im Händlerkonto ist die Option DCC nicht aktiviert
- Die betreffende Karte ist nicht zu DCC-Transaktionen berechtigt
- Die mit DCC_CONVCCY übermittelte Währung ist ungültig