Sofortbenachrichtigungsservice

ClickBank bietet einen Sofortbenachrichtigungsservice an, der Sie über die Ihr Konto betreffenden Transaktionen innerhalb des ClickBank-Systems informiert. Der Service sendet Ihnen nahezu in Echtzeit Informationen zu den folgenden Ereignissen:

  • Verkauf: der Verkauf eines Standardprodukts oder der erste Verkauf eines Abonnementprodukts
  • Abo-Zahlung: eine wiederholte Zahlung für ein Abonnementprodukt
  • Rückerstattung: eine Rückerstattung für ein Standard- oder Abonnementprodukt
  • Ausgleichsbuchung: eine Ausgleichsbuchung für ein Standard- oder Abonnementprodukt
  • Stornierte Abo-Zahlung: die Stornierung eines Abonnementprodukts
  • Rückgängig gemachte Stornierung einer Abo-Zahlung: die Rückgängigmachung der Stornierung eines Abonnementprodukts durch den ClickBank-Kundenservice
  • Testtransaktion: Testtransaktionen für die oben aufgeführten Transaktionstypen oder ein Test der von Ihnen aktivierten Sofortbenachrichtigungsfunktion

Dieser Service versucht, die Informationen per HTML FORM POST an eine von Ihnen angegebene URL zu senden. Jeder Post enthält eine Gruppe von URL-Parametern bezüglich der Transaktion. Die Benachrichtigung ist verschlüsselt und muss mithilfe Ihres Geheimcodes und des Initialisierungsvektors entschlüsselt werden, bevor sie verarbeitet werden kann.

HINWEIS: Dieser Service sollte nur von erfahrenen Programmierern genutzt werden. Falls Sie nicht über das erforderliche Fachwissen verfügen, sollten Sie sich vor der Aktivierung der Sofortbenachrichtigung an einen Programmierer wenden, der Ihnen dabei helfen kann.

Folgende Themen werden in diesem Artikel behandelt:

Übersicht

Nach der Aktivierung wird der Sofortbenachrichtigungsservice jedes Mal ausgelöst, wenn eine Transaktion erstellt oder nach einer Transaktion eine Aktion in Ihrem ClickBank-Konto ausgeführt wird. Dieser Vorgang läuft grundsätzlich in den folgenden Schritten ab:

  1. Im ClickBank-System erfolgt eine Aktion (beispielsweise ein Verkauf oder eine
    Abo-Zahlung).
  2. ClickBank verschlüsselt unter Verwendung Ihres Geheimcodes und eines Initialisierungsvektors eine entsprechende Benachrichtigung.
  3. ClickBank postet die HTML-FORM-Parameter unter einer von Ihnen angegebenen URL. Diese URL sollte das Verschlüsselungsprotokoll Transport Layer Security (TLS) und Secure Socket Layer (SSL) verwenden.
  4. ClickBank verifiziert durch Überwachung des Antwortcodes, dass die Benachrichtigung empfangen wurde.
  5. Eine von Ihnen entwickelte Anwendung entschlüsselt die Nachricht (wiederum unter Verwendung Ihres Geheimcodes und des Initialisierungsvektors) und verarbeitet die geposteten Parameter.

Die Einrichtung dieses Services in Ihrem ClickBank-Konto ist unkompliziert. Sie müssen jedoch eine Anwendung entwickeln, die die URL-Parameter der Sofortbenachrichtigung verarbeitet, was einiges technisches Wissen voraussetzt. Um diesen Service optimal nutzen zu können, muss Ihre Anwendung zumindest die Nachricht entschlüsseln und die im Abschnitt Parameter dieses Dokuments genannten Parameter verarbeiten können.

Falls Ihnen diese Schritte nicht verständlich sind, sollten Sie dafür die Dienste eines Programmierers in Anspruch nehmen. Bei einer nicht ordnungsgemäßen Implementierung der Sofortbenachrichtigung werden wir diese Funktion möglicherweise in Ihrem Konto deaktivieren oder daraus entfernen.

Aktuelle Version

Die aktuelle Version der Sofortbenachrichtigungsfunktion ist 6.0.

Version 6.0 enthält folgende Neuerungen:

  • Verschlüsselte Benachrichtigungen
  • Paramater für den Typ der Bestellung, deren Bestandteil der Kauf war (beispielsweise ein Upsell oder eine Plus-Bestellung)
  • Parameter für die Stückzahl
  • Parameter für vendorspezifische Variablen

Format der Benachrichtigung

Dieser Abschnitt beschreibt das Format der Ihnen gesendeten Sofortbenachrichtigung.

Grundlegende Struktur

Sofortbenachrichtigungen werden im JSON-Format erstellt. Vor dem Senden werden sie verschlüsselt.

Sofortbenachrichtigungen haben die folgende grundlegende Struktur:

{"notification": „<VERSCHLÜSSELTE_BENACHRICHTIGUNG>", "iv": „<INITIALISIERUNGSVEKTOR>"}

Verschlüsselung

ClickBank schützt die Nutzlastdaten der Benachrichtigung mit dem Verschlüsselungsalgorithmus CBC-AES-256. Dies verhindert, dass Kundeninformationen als Klartext weitergeleitet werden. Der Empfänger der Benachrichtigung erkennt daran zudem, dass diese von ClickBank gesendet und während der Übertragung nicht geändert wurde. Die Benachrichtigung wird mithilfe eines aus bis zu 16 Zeichen bestehenden Geheimcodes und eines Initialisierungsvektors verschlüsselt.

Sie finden mehrere Beispiele dazu, wie die Benachrichtigung entschlüsselt wird, im Abschnitt Codebeispiele. Sie sollten sich aber auch mit dem AES-256-Verschlüsselungsalgorithmus vertraut machen, um die Funktionsweise nachvollziehen zu können.

Die ursprüngliche JSON-Mitteilung enthält eine Repräsentation der verschlüsselten Benachrichtigung als Zeichenkette und den Initialisierungsvektor, den Sie zusammen mit Ihrem ClickBank-Geheimcode für die Entschlüsselung der Benachrichtigung einsetzen.

Parameter

Dieser Abschnitt beschreibt die in einer Benachrichtigung verwendeten Parameter.

Eine gesendete Benachrichtigung enthält sämtliche Parameter. Ist einem Parameter kein Wert zugeordnet, erscheint dieses Parameter-Tag in der Zeichenkette der Sofortbenachrichtigung ohne Wert. Deshalb ist die Zeichenanzahl bei einigen Parametern 0, da diese Parameter keinen Wert enthalten.

Header-Parameter

Parameter

Beschreibung

Zeichen/Format

Empfänger

transactionTime

Zeit der Transaktion im RFC-3339-Format

25

Alle

receipt

ClickBank-Beleg-ID

8–21

Alle

transactionType

Typ der Transaktion

4–15 – siehe Transaktionstypen

Alle

vendor

Vendor-Nickname

5–10

Alle

affiliate

Affiliate-Nickname

5–10

Alle

role

Ihre Rolle in der Transaktion

6–9 – VENDOR, AFFILIATE, or JV_VENDOR

Alle

totalAccountAmount

Die von Ihnen für die Transaktion erhaltene Gesamtsumme in USD

Numerisch mit zweistelliger Dezimalpräzision

Alle

paymentMethod

Die vom Kunden verwendete Zahlungsmethode

3–4 – siehe Zahlungsmethoden

Alle

totalOrderAmount

Die dem Kunden in Rechnung gestellte Gesamtsumme

Numerisch mit zweistelliger Dezimalpräzision

Alle

totalTaxAmount

Die Gesamtsumme der vom Kunden bezahlten Steuern

Numerisch mit zweistelliger Dezimalpräzision

Vendor

totalShippingAmount 

Die Gesamtsumme der vom Kunden bezahlten Versandkosten

Numerisch mit zweistelliger Dezimalpräzision

Vendor

currency

Die Währung der Zahlung durch den Benutzer

3

Vendor

orderLanguage

Auf dem Bestellformular verwendete Sprache

2 – DE, EN, ES, FR, IT, or PT

Vendor

trackingCodes

Etwaige im Bestellformular eingefügte Tracking-Codes

Jeweils 0–24

Vendor, Affiliate

Produktparameter

Parameter

Beschreibung

Zeichen/Format

Empfänger

itemNo

SKU des bestellten Produkts

1–10

Alle

productTitle

Produkttitel

0–255

Alle

shippable

Ob das Produkt eine physische Ware war

4–5 – true oder false

Alle

recurring

Ob das Produkt abonnementbasiert war

4–5 – true oder false

Alle

accountAmount

Der von Ihnen für diesen Posten erhaltene Betrag

Numerisch mit zweistelliger Dezimalpräzision 

Alle

quantity

Stückzahl der gekauften Artikel

Numerisch

Alle

downloadUrl

URL für den Produkt-Download durch den Kunden

0–255

Vendor

lineItemType

Typ der Bestellung, deren Bestandteil der Posten war

4–8 – ORIGINAL, CART, BUMP, TOKEN, or UPSELL

Alle

Versandparameter des Kunden

Parameter

Beschreibung

Zeichen

Empfänger

firstName

Vorname des Kunden

0–255

Vendor

lastName

Nachname des Kunden

0–255

Vendor

fullName

Vor- und Nachname des Kunden

0–255

Vendor

phoneNumber

Telefonnummer des Kunden

0–255

Vendor

email

E-Mail-Adresse des Kunden

0–255

Vendor

address1

Postanschrift des Kunden, Zeile 1

0–255

Vendor

address2

Postanschrift des Kunden, Zeile 2

0–255

Vendor

city

Ort des Kunden

0–255

Vendor

county

Bezirk des Kunden

0–255

Vendor

state

Staat des Kunden

0–255

Vendor

postalCode

Postleitzahl oder ZIP-Code des Kunden

0–255

Vendor

country

Land des Kunden

0–255

Vendor

Rechnungsparameter der Kunden

Parameter

Beschreibung

Zeichen

Empfänger

firstName

Vorname des Kunden

0–255

Vendor

lastName

Nachname des Kunden

0–255

Vendor

fullName

Vor- und Nachname des Kunden

0–255

Vendor

phoneNumber

Telefonnummer des Kunden

0–255

Vendor

email

E-Mail-Adresse des Kunden

0–255

Vendor

state

Staat des Kunden

0–255

Alle

postalCode

Postleitzahl oder ZIP-Code des Kunden

0–255

Alle

country

Land des Kunden

0–255

Alle

Upsell-Parameter

Parameter

Beschreibung

Zeichen

Empfänger

upsellOriginalReceipt

Kaufbelegnummer, die den
Upsell-Flow initiiert hat

8–21

Alle

upsellFlowId

ID des Upsell-Flows

Integer

Vendor

upsellSession

Sitzungs-ID des Upsells

0–16

Vendor

upsellPath

Upsell-Pfad

0–12

Vendor

Pytch-Parameter

HINWEIS: Die Pytch-Funktion ist veraltet, aber die Parameter werden zwecks Rückwärtskompatibilität beibehalten.

Parameter

Beschreibung

Zeichen/Format

Empfänger

hopfeedClickId

Hopfeed-Klick-ID-Name 

Zeichenkette 

Alle

hopfeedApplicationId

Anwendungs-ID

Numerisch 

Alle

hopfeedCreativeId

Werbemittel-ID 

Numerisch 

Alle

hopfeedApplicationPayout

Anwendungsauszahlung 

Numerisch mit zweistelliger Dezimalpräzision 

Alle

hopfeedVendorPayout

Vendor-Auszahlung 

Numerisch mit zweistelliger Dezimalpräzision 

Alle

Technische Parameter

Parameter

Beschreibung

Format

Empfänger

version

Version der Sofortbenachrichtigung

Numerisch, zweistellig

Alle

attemptCount

Anzahl der Versuche, die ClickBank zum Senden dieser Benachrichtigung unternommen hat, bevor der Vorgang erfolgreich durchgeführt oder aufgrund zu vieler Versuche fehlgeschlagen ist

Integer

Alle

Vendor-Parameter

Wenn der Vendor dem Zahlungslink zusätzliche Variablen hinzugefügt hat, werden diese ebenfalls in der Benachrichtigung als Parameter (v1, v2 usw.) aufgeführt.

Transaktionstypen

Der Parameter „transactionType“ kann eine Reihe von Werten enthalten. Diese Werte sind zusammen mit einer Kurzbeschreibung ihres Zwecks unten aufgeführt.

HINWEIS: Benachrichtigungen über Testtransaktionen werden nur an den Vendor gesendet.

Typ

Beschreibung

SALE

Der Kauf eines Standardprodukts oder der erste Kauf eines Abonnementprodukts

BILL

Eine wiederholte Zahlung für ein Abonnementprodukt

RFND

Die Rückerstattung für ein Standard- oder Abonnementprodukt. Die Rückerstattung für ein Abonnementprodukt resultiert ebenfalls in einer „CANCEL-REBILL“-Transaktion.

CGBK

Eine Ausgleichsbuchung für ein Standard- oder Abonnementprodukt

INSF

Eine eCheck-Ausgleichsbuchung für ein Standard- oder Abonnementprodukt

CANCEL-REBILL

Die Kündigung eines Abonnementprodukts. Gekündigte Abonnementprodukte lösen keine weiteren Aktionen aus.

UNCANCEL-REBILL

Aufhebung der Kündigung eines Abonnementprodukts

TEST

Eine während der Konfiguration ausgelöste Testtransaktion

TEST_BILL

Eine Test-Abo-Zahlung für ein Abonnementprodukt

TEST_RFND

Eine Testrückerstattung für ein Standard- oder Abonnementprodukt

TEST_SALE

Ein Testkauf eines Standard- oder Abonnementprodukts

CANCEL-TEST-REBILL

Eine Teststornierung eines Abonnementprodukts

UNCANCEL-TEST-REBILL

Die Aufhebung einer Teststornierung eines Abonnementprodukts

Zahlungsmethoden

Dem Parameter „paymentMethod“ können eine Reihe von Werten zugewiesen werden. Diese Werte sind im Folgenden aufgeführt.

Parameter Zahlungsmethoden

Zahlungsmethode

PYPL

PayPal

VISA

Visa

MSTR

MasterCard

DISC

Discover

AMEX

American Express

SOLO

Solo

JCBC

JCB

DNRS

Diners Club

MAES

Maestro

ELV

Europäisches Lastschriftverfahren

TEST

Testzahlung

Beispiel einer Benachrichtigung

Dies ist ein Beispiel einer unverschlüsselten JSON-Benachrichtigung. Es verdeutlicht die Struktur der in Version 6.0 des Softortbenachrichtigungsservice verwendeten Schlüssel-Wert-Paare.

 {
    "transactionTime": "2016-06-05T13:47:51-06:00",
    "receipt": "CWOGBZLN",
    "transactionType": "SALE",
    "vendor": "testacct",
    "affiliate": "affiliate1",
    "role": "VENDOR",
    "totalAccountAmount": 0.00,
    "paymentMethod": "VISA",
    "totalOrderAmount": 0.00,
    "totalTaxAmount": 0.00,
    "totalShippingAmount": 0.00,
    "currency": "USD",
    "orderLanguage": "EN",
    "trackingCodes": [
        "tracking_code"
    ],
    "lineItems": [
        {
            "itemNo": "1",
           "productTitle": "Product Title",
            "shippable": false,
            "recurring": false,
            "accountAmount": 5.00,
            "quantity": 1,
            "downloadUrl": "<download_url>"
            "lineItemType": "CART"
      }         {
            "itemNo": "2",
           "productTitle": "Second Product",
            "shippable": false,
            "recurring": true,
            "accountAmount": 2.99,
            "quantity": 1,
            "downloadUrl": "<download_url>"
            "lineItemType": "CART"
      }
   ],
    "customer": {
        "shipping": {
            "firstName": "TEST",
            "lastName": "GUY",
            "fullName": "Test Guy",
            "phoneNumber": "",
            "email": "test@example.net",
            "address": {
                "address1": "12 Test Lane",
                "address2": "Suite 100",
                "city": "LAS VEGAS",
                "county": "LAS VEGAS",
                "state": "NV",
                "postalCode": "89101",
                "country": "US"
            }
        },
        "billing": {
            "firstName": "TEST",
            "lastName": "GUY",
            "fullName": "Test Guy",
            "phoneNumber": "",
            "email": "test@example.net",
            "address": {
                "state": "NV",
                "postalCode": "89101",
                "country": "US"
            }
        }
    },
    "upsell": {
        "upsellOriginalReceipt": "XXXXXXXX",
        "upsellFlowId": 55,
        "upsellSession": "VVVVVVVVVV",
        "upsellPath": "upsell_path"
    },
    "hopfeed": {
        "hopfeedClickId": "hopfeed_click",
        "hopfeedApplicationId": 0000,
        "hopfeedCreativeId": 0000,
        "hopfeedApplicationPayout": 0.00,
        "hopfeedVendorPayout": 0.00
    },
    "version": 6.0,
    "attemptCount": 1,
    "vendorVariables": {
       "v1": "variable1", 
       "v2": "variable2" 
    }
}

Implementierung

Nachdem Sie sich eingehend mit dem vorherigen Abschnitt dieses Dokuments vertraut gemacht haben, können Sie Zugriff auf die Sofortbenachrichtigungsfunktion anfordern, Ihre URL testen und die Funktion aktivieren.

Sobald Sie eine URL für die Sofortbenachrichtigungen konfiguriert haben, können Sie unter Anwendung dieser Verfahren im Feld „Sofortbenachrichtigung 2“ eine weitere URL hinzufügen.

Zugriffsanforderung für Sofortbenachrichtigungen

Die Sofortbenachrichtigungsfunktion ist nicht automatisch aktiviert. So fordern Sie Zugriff auf diese Funktion an:

  1. Melden Sie sich in Ihrem Konto an.
  2. Klicken Sie auf die Registerkarte Einstellungen.
  3. Klicken Sie auf Meine Website.
  4. Gehen Sie zum Abschnitt „Erweiterte Tools“ und klicken Sie auf Bearbeiten.
  5. Klicken Sie neben dem URL-Feld für Sofortbenachrichtigungen auf den Link Zugriff anfordern.
  6. Füllen Sie das Formular aus, lesen Sie sich die Nutzungsbedingungen sorgfältig durch und bestätigen Sie, dass Sie die Nutzungsbedingungen gelesen haben und darin einwilligen.
  7. Klicken Sie auf die Schaltfläche Änderungen speichern und API-Zugriff anfordern unten im Formular.
  8. Klicken Sie auf die Schaltfläche Änderungen speichern.

Konfiguration Ihrer URL

Nachdem Sie Zugriff auf die Sofortbenachrichtigungsfunktion erhalten haben, müssen Sie eine Ziel-URL erstellen und ein Programm entwickeln, das die an Ihre URL gesendete Benachrichtigung verarbeiten kann. Sie können Port 80 oder 443 verwenden.

Transport Layer Security (TLS) und Secure Socket Layer (SSL)

Es wird dringend empfohlen, bei Nutzung der Sofortbenachrichtigungsfunktion Transport Layer Security (TLS) oder Secure Socket Layer (SSL) zu aktivieren. Ohne diese Verschlüsselungsprotokolle sind Ihre Verkaufsdaten für Unbefugte zugänglich. Aber da Ihre Kreditkarten- und Bankinformationen nicht über den Sofortbenachrichtigungsservice übermittelt werden, wird die Verwendung von TLS oder SSL zur Verschlüsselung der Sofortbenachrichtigungen während der Übertragung nicht vorausgesetzt.

HINWEIS: Sie können kein selbstsigniertes SSL-Zertifikat verwenden. Es muss sich um ein gültiges Zertifikat handeln.

Test der Konnektivität und Verarbeitung

Vor Aktivierung der Sofortbenachrichtigungen müssen Sie die Konnektivität und die erfolgreiche Verarbeitung der von ClickBank an Ihren Server gesendeten URL-Parameter testen. So führen Sie diesen Test durch:

  1. Melden Sie sich in Ihrem Konto an.
  2. Klicken Sie auf die Registerkarte Einstellungen.
  3. Klicken Sie auf Meine Website.
  4. Gehen Sie zum Abschnitt „Erweiterte Tools“ und klicken Sie auf Bearbeiten.
  5. Geben Sie in das Feld „Sofortbenachrichtigungs-URL“ Ihre URL ein.
    HINWEIS: Klicken Sie nicht auf „Änderungen speichern“.
  6. Klicken Sie rechts neben der URL auf Test.
    Eine Testbenachrichtigung wird gesendet. Als Kaufbeleg wird ******** und als Transaktionstyp TEST verwendet.
  7. Überprüfen Sie im Popup-Fenster, ob der Test erfolgreich war.

Ist der Test fehlgeschlagen, entfernen Sie die URL aus dem Feld „Sofortbenachrichtigung“ und überprüfen Sie Ihre Verbindung und Ihre Anwendung auf mögliche Probleme.

HINWEIS: Sie sollten das Feld „Sofortbenachrichtigung“ nur dann ausfüllen, wenn Sie einen erfolgreichen Test durchgeführt haben. Andernfalls kann Ihr Zugriff auf die Funktion deaktiviert werden.

Aktivierung der Sofortbenachrichtigungen

Nachdem Sie Zugriff auf die Funktion erhalten und einen erfolgreichen Test durchgeführt haben, können Sie die Funktion aktivieren, um zukünftig Sofortbenachrichtigungen zu erhalten. So aktivieren Sie die Sofortbenachrichtigungen:

  1. Melden Sie sich in Ihrem Konto an.
  2. Klicken Sie auf die Registerkarte Einstellungen.
  3. Klicken Sie auf Meine Website.
  4. Gehen Sie zum Abschnitt „Erweiterte Tools“ und klicken Sie auf Bearbeiten.
  5. Geben Sie Ihren Geheimcode in das entsprechende Feld ein. Ihr Geheimcode kann bis zu 16 Zeichen lang sein und darf nur aus Großbuchstaben bestehen. Im Abschnitt Verschlüsselung finden Sie weitere Informationen.
  6. Geben Sie in das Feld „Sofortbenachrichtigungs-URL“ Ihre URL ein.
  7. Klicken Sie rechts neben der URL auf Test.
    Eine Testbenachrichtigung wird gesendet. Als Kaufbeleg wird ******** und als Transaktionstyp TEST verwendet.
  8. Überprüfen Sie im Popup-Fenster, ob der Test erfolgreich war.
  9. Klicken Sie auf Änderungen speichern.

Direkt nach Abschluss des Setups werden Sofortbenachrichtigungen gesendet.

Deaktivierung der Sofortbenachrichtigungen

Wenn Sie keine Sofortbenachrichtigungen mehr erhalten möchten, entfernen Sie einfach Ihre URL. Sie können die Funktion zu einem späteren Zeitpunkt wieder aktivieren.

  1. Melden Sie sich in Ihrem Konto an.
  2. Klicken Sie auf die Registerkarte Einstellungen.
  3. Klicken Sie auf Meine Website.
  4. Gehen Sie zum Abschnitt „Erweiterte Tools“ und klicken Sie auf Bearbeiten.
  5. Löschen Sie die URL aus dem Feld „Sofortbenachrichtigungs-URL“.
  6. Klicken Sie auf Änderungen speichern.

Überwachung des Antwortcodes

Nach dem Senden einer Sofortbenachrichtigung überwachen wir den von Ihrer URL gesendeten Antwortcode. Befindet sich dieser Code im 200er-Bereich, gilt die Übertragung der Benachrichtigung als erfolgreich.

Liegt der Antwortcode außerhalb dieses Bereichs, versuchen wir, die Benachrichtigung über einen Zeitraum von 72 Stunden einmal pro Stunde erneut zu senden. Nach 72 fehlgeschlagenen Versuchen deaktivieren wir Ihre URL. Wenn Sie die Fehlerursache behoben haben, können Sie Ihre URL wieder aktivieren und den Erhalt von Sofortbenachrichtigungen fortsetzen.

Codebeispiele

Die vom Sofortbenachrichtigungsservice an Sie gesendeten Daten sind als HTML FORM POST URL-Parameter formatiert. Eigens dafür entwickelte Programme innerhalb Ihrer Anwendungsarchitektur müssen diese Paare verarbeiten können. Programme für Bestellmanagement, Datenbankaktivitäten und andere Services können geschrieben werden, gehen jedoch über den Rahmen dieser Anleitung hinaus.

Die folgenden Codebeispiele illustrieren die Entschlüsselung der Benachrichtigung.

HINWEIS: Die folgenden Codebeispiele müssen in ein Programm eingebettet werden. Diese Beispiele schlagen fehl, wenn Ihr Zeichensatz deutsche, griechische, osteuropäische oder asiatische Zeichen enthält. Sie müssen Ihre eigene Kodierung durchführen, bevor Sie Sofortbenachrichtigungen entschlüsseln können. Falls Sie nicht über das erforderliche Fachwissen verfügen, sollten Sie sich an einen Programmierer wenden, der Ihnen dabei helfen kann.

Java

Im folgenden Codebeispiel wird Java für die Entschlüsselung der Benachrichtigung verwendet.

 public void processNotification(final HttpServletRequest theRequest,
                              final HttpServletResponse theResponse)
   throws IOException {
  try {
     final StringBuilder buffer = new StringBuilder();
    final String secretKey = "YOUR SECRET KEY";

     try {
       String line;
        final BufferedReader reader = theRequest.getReader();
         while(null != (line = reader.readLine())) {
          buffer.append(line);
         }
      } catch(final Exception ex) {
          ex.printStackTrace();
       }

       final JSONParser parser = new JSONParser();
       final JSONObject obj = (JSONObject) parser.parse(buffer.toString()); 

      final String initializationVector = (String) obj.get("iv");
       final String encryptedNotification = (String) obj.get("notification"); 
      final MessageDigest digest = MessageDigest.getInstance("SHA-1");
      digest.reset();
       digest.update(secretKey.getBytes("UTF-8"));
      final String key = new String(Hex.encodeHex(digest.digest())).substring(0, 32);

final IvParameterSpec iv =
          new IvParameterSpec(DatatypeConverter.parseBase64Binary(initializationVector));
       final SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
      final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
       cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);

      final JSONObject notification = (JSONObject) parser.parse(
      new String(cipher.doFinal(DatatypeConverter.parseBase64Binary(encryptedNotification)),
                     "ISO-8859-1"));

       //
       // Make use of the notification here...
      // 

   } catch(final NoSuchPaddingException
      | ParseException
       | NoSuchAlgorithmException
      | InvalidAlgorithmParameterException
       | BadPaddingException
      | IllegalBlockSizeException
       | UnsupportedEncodingException
      | InvalidKeyException ex) {
       ex.printStackTrace();
      theResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED,
                             "Could not decrypt instant notification");
  }
    theResponse.setStatus(HttpServletResponse.SC_NO_CONTENT);
}

PHP

Im folgenden Codebeispiel wird PHP für die Entschlüsselung der Benachrichtigung verwendet.

<?php
// HINWEIS: Bei dieser Entschlüsselungsmethode müssen
// die mcrypt-Bibliotheken installiert und als
// verfügbare Erweiterung in phpinfo() aufgeführt sein.

$secretKey = "YOUR SECRET KEY"; // secret key from your ClickBank account

// get JSON from raw body...
$message = json_decode(file_get_contents('php://input'));

// Pull out the encrypted notification and the initialization vector for
// AES/CBC/PKCS5Padding decryption
$encrypted = $message->{'notification'};
$iv = $message->{'iv'};
error_log("IV: $iv");

// decrypt the body...
$decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,
substr(sha1($secretKey), 0, 32),
base64_decode($encrypted),
MCRYPT_MODE_CBC,
base64_decode($iv)), "\0..\32");
error_log("Decrypted: $decrypted");

////UTF8 Encoding, remove escape back slashes, and convert the decrypted string to a JSON object...
$sanitizedData = utf8_encode(stripslashes($decrypted));
$order = json_decode($decrypted);

// Jetzt sollte alles funktionieren. Falls die Entschlüsselung der JSON-Zeichenkette
// fehlschlägt, können Sie davon ausgehen, dass die Benachrichtigung
// nicht mit Ihrem Geheimcode verschlüsselt war.

?>

Python

Im folgenden Codebeispiel wird Python für die Entschlüsselung der Benachrichtigung verwendet.

import hashlib
import json
from Crypto.Cipher import AES
##
# Parse ClickBank Notification
# @param message: A string representing the raw HTTP POST body
# @return: A JSON object representing the decrypted notification
def process_clickbank_notification(message):
    j = json.loads(message)
    iv = j['iv']
    encrypted_str = j['notification']
    sha1 = hashlib.sha1()
    sha1.update("YOUR SECRET KEY")
    cipher = AES.new(sha1.hexdigest()[:32], AES.MODE_CBC, iv.decode('base64'))
    return cipher.decrypt(encrypted_str.decode('base64')).strip()

Ruby

Im folgenden Codebeispiel wird Rub für die Entschlüsselung der Benachrichtigung verwendet.

require "base64"
require "digest/sha1"
require "json"
require "openssl"
 # Decode the IPN post into a JSON object.
# The message param is the raw HTTP POST
 # body of the notification
def decrypt_clickbank_notification(message)
  parsed = JSON.parse(message);
  aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
  aes.iv = Base64.decode64(parsed["iv"])
  aes.decrypt
  aes.key = Digest::SHA1.hexdigest("YOUR SECRET KEY").slice(0, 32)
  aes.update(Base64.decode64(parsed["notification"])) + aes.final
end
Haben Sie Fragen? Anfrage einreichen

0 Kommentare

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Powered by Zendesk