Überblick

ClickBank bietet einen Sofortmitteilungdienst an, welcher Sie über innerhalb Ihres ClickBank-Kontos getätigte Transaktionen benachrichtigt. Hierbei werden in nahezu Echtzeit Informationen für die folgenden Aktionen gesendet:

  • Verkauf
  • Abo-Zahlung
  • Rückerstattung
  • Ausgleichsbuchung
  • Abo-Kündigung
  • Tests

Diese Funktion sendet Informationen über HTML FORM POST an eine von Ihnen festgelegte URL. Jeder Post enthält eine Gruppe von URL-Parametern, die für die Transaktion relevant sind. Um Missbrauch zu verhindern, wird das Feld cverify zur Verifizierung der Gültigkeit der übrigen Felder verwendet.

Hinweis: Dieser Dienst ist nur für die Verwendung durch erfahrene Programmierer bestimmt. Kunden ohne umfassende Programmierkenntnisse sollten von der Implementierung des Sofortmitteilungsdienstes nur dann Gebrauch machen, wenn sie zuvor einen erfahrenen Programmierer konsultiert haben.

So funktioniert’s

Der Sofortmitteilungsdienst wird durch eine Transaktion oder eine Aktion zu einer Transaktion in Ihrem ClickBank-Konto ausgelöst. Der Ablauf umfasst im Wesentlichen die folgenden Schritte:

  1. Im ClickBank-System wird eine Aktion durchgeführt (z. B. Verkauf, Abo-Zahlung, Rückerstattung usw.).
  2. ClickBank sendet FORM-Parameter an eine von Ihnen festgelegte URL.
  3. ClickBank beobachtet die Serverantwort.
  4. Ein von Ihnen erstelltes Programm verarbeitet die Variablen.

Die Einrichtung dieser Funktion in Ihrem ClickBank-Konto ist einfach, allerdings ist zu beachten, dass ein Programm erstellt werden muss, welches die technische Aufgabe der Verarbeitung des Sofortmitteilungsdienst-URL-Parameters übernimmt. Für die optimale Nutzung dieser Funktion muss das Programm mindestens die im Abschnitt URL-Parameter aufgeführten Parameter verarbeiten.

Wissenswertes

Damit der Sofortmitteilungsdienst richtig funktioniert, beachten Sie bitte die im Folgenden genannten Punkte. Werden diese Punkte nicht verstanden bzw. nicht korrekt umgesetzt,  führt dies zur Entfernung des Sorfortmitteilungsdienstes von Ihrem Konto.

  1. Was ist ein HTML FORM POST für eine URL?
  2. Was sind URL-Parameter?
  3. Was ist ein Geheimcode?
  4. Wie wird eine Verschlüsselung implementiert?
  5. Welche Rolle spielt die Verwendung von Secure Sockets Layer (SSL)?
  6. Was sind die Auswirkungen des Response Code Monitoring?

Wenn Sie mindestens einen der genannten Punkte nicht verstehen, empfehlen wir Ihnen, die Dienste eines Experten in Anspruch zu nehmen, der sich mit der Umsetzung dieser Punkte auskennt, da ansonsten die Funktion möglicherweise von Ihrem Konto entfernt wird.

Erste Schritte

Sofortmitteilungen

Vor der Implementierung dieser Funktion sollten Sie sich mit den folgenden Hinweisen vertraut machen.

URL-Parameter

Die folgenden URL-Parameter werden vom ClickBank-Sofortmitteilungsdienst weitergegeben.

Parameter Beschreibung Detail
ccustfullname Vollständiger Kundenname 1 bis 510 Zeichen
ccustfirstnamep Vorname des Kunden 0 bis 255 Zeichen
ccustlastname Nachname des Kunden 0 bis 255 Zeichen
ccuststate Bundesland des Kunden 0 bis 2 Zeichen
ccustzip Postleitzahl des Kunden 0 bis 16 Zeichen
ccustcc Ländercode des Kunden 0 bis 2 Zeichen
ccustaddr1 ** Lieferanschrift des Kunden: Feld 1 0 bis 255 Zeichen
ccustaddr2 ** Lieferanschrift des Kunden: Feld 2 0 bis 255 Zeichen
ccustcity Lieferanschrift des Kunden: Stadt 0 bis 255 Zeichen
ccustcounty Lieferanschrift des Kunden: Bezirk 0 bis 255 Zeichen
ccustshippingstate ** Lieferanschrift des Kunken: Bundesland 0 bis 2 Zeichen
ccustshippingzip ** Lieferanschrift des Kunden: Postleitzahl 0 bis 255 Zeichen
ccustshippingcountry ** Lieferanschrift des Kunden: Land 0 bis 255 Zeichen
ccustemail E-Mail-Adresse des Kunden 1 bis 255 Zeichen
cproditem ClickBank-Produktnummer 1 bis 5 Zeichen
cprodtitle Produkttitel zum Zeitpunkt des Kaufs 0 bis 255 Zeichen
cprodtype Art des Produkts der Transaktion (STANDARD oder WIEDERKEHREND) 8 bis 11 Zeichen
ctransaction* Durchgeführte Aktion 4 bis 15 Zeichen
ctransaffiliate Vermittelnder Affiliate 0 bis 10 Zeichen
ctransamount An benachrichtigte Partei gezahlter Betrag (in US-Cent [1000 = 10,00 USD]) 3 bis 10 Zeichen
ctranspaymentmethod Zahlungsmethode des Kunden 0 bis 4 Zeichen
ccurrency Kundenwährung 3 Zeichen
ctranspublisher An Transaktion beteiligter Vendor 5 bis 10 Zeichen
ctransreceipt ClickBank-Bestellnummer 8 bis 13 Zeichen
crebillamnt*** Abo-Zahlungsbetrag in US-Cent (1000 = 10,00 USD) 0 bis 10 Zeichen
cprocessedpayments *** Anzahl der geleisteten Abo- Zahlungen 0 bis 2 Zeichen
cnextpaymentdate *** Tag der nächst fälligen Abo-Zahlung 0 bis 10 Zeichen
crebillstatus *** Abo-Status (leer, aktiv,vollendet oder gekündigt) 0 bis 10 Zeichen
ctid Tracking-ID 0 bis 10 Zeichen
cvendthru Zusätzliche an das Bestellformular weitergegebene Informationen nach Entfernung von doppelten Informationen 0 bis 1024 Zeichen
cverify** Wird zur Verifizierung der Gültigkeit der vorherigen Felder verwendet 8 Zeichen
ctranstime** Der Zeitraum, in dem die Transaktion stattfand (nicht in cverify enthalten) 10 Zeichen
* Siehe “Transaktionsarten”.
** Siehe “Verschlüsselung”.

Falls ein Parameter keinen Wert aufweist, enthält der Sofortmitteilungs-String den Parameter-Tag ohne Wert. Der Sofortmitteilungsdienst kann ebenso mehr als einen POST pro Empfang liefern. Weitere Informationen finden Sie im Abschnitt Häufig gestellte Fragen.

Transaktionsarten

Der Parameter ctransaction kann eine Reihe von Werten enthalten. Im Folgenden finden Sie eine Auflistung dieser Werte, jeweils zusammen mit einer kurzen Beschreibung ihres Zwecks.

Art Beschreibung
SALE Der Kauf eines Standardprodukts oder der erste Kauf eines Abonnements
BILL Eine wiederkehrende Abbuchung für ein Abonnement
RFND Die Rückerstattung eines Standardprodukts oder eines Abonnements. Abonnements, die zurückerstattet werden, führen außerdem zu einer “ABO-ZAHLUNG KÜNDIGEN”-Aktion.
CGBK Eine Ausgleichsbuchung für ein Standardprodukt oder ein Abonnement
INSF Eine eCheck-Ausgleichsbuchung für ein Standardprodukt oder ein Abonnement
CANCEL-REBILL Die Kündigung eines Abonnements. Gekündigte Abonnements haben keine weiteren Aktionen zur Folge.
UNCANCEL-REBILL Die Aufhebung der Kündigung eines Abonnements
TEST Wird ausgelöst, wenn auf den Testlink auf “Meine Seite” geklickt wird

Zahlungsmethoden

Der Parameter ctranspaymentmethod kann eine Reihe von Werten enthalten. Diese Werte werden im Folgenden aufgeführt.

  • PYPL
  • VISA
  • MSTR
  • DISC
  • AMEX
  • SWIT
  • SOLO
  • JCBC
  • DNRS
  • ENRT
  • AUST
  • BLME
  • STVA

Secure Sockets Layer (SSL)

Es wird dringend empfohlen, bei der Verwendung dieser Funktion Secure Sockets Layer (SSL) zu aktivieren. Wenn Sie diese Funktion ohne aktiviertes Secure Sockets Layer (SSL) verwenden, sind Ihre Daten anfällig für Internetdiebstahl. Da über den Sofortmitteilungsdienst jedoch keine Kreditkarten- und Bankangaben übermittelt werden, benötigt ClickBank für die Verschlüsselung von Sofortmitteilungsübertragungen kein Secure Sockets Layer (SSL).

Response Code Monitoring (Wiederholungslogik)

Der Sofortmitteilungsdienst versucht, Informationen an die in dem Kontobereich Meine Website angegebene URL über HTML zu senden. Wenn aufgrund des Sendeversuchs ein Antwortcode Ihres Systems eingeht, der anders lautet als “200″, versucht ClickBank die Datenübermittlung eine Stunde später erneut. Der Versuch wird bis zu 72 Stunden lang jede Stunde wiederholt. Anschließend werden keine weiteren Anfragen durchgeführt.

Verschlüsselung (Betrugsverhinderung)

Unter “Verschlüsselung” versteht man eine Methode zur Ver- und Entschlüsselung. Hierdurch wird sichergestellt, dass keine URL auf die Abfragestringparameter zugreift.

Wird innerhalb Ihres ClickBank-Kontos eine Aktion durchgeführt, werden verschiedene Werte an den Sofortmitteilungs-Abfragestring weitergegeben (siehe unter URL-Parameter). Während der Erstellung des Strings werden ein sha1 bzw. ein Hash der weitergegebenen Werte sowie Ihr Geheimcode erstellt. Daraus ergibt sich der Parameter cverify. Nach Erhalt der Abfragestringparameter muss Ihr System ebenfalls einen sha1 bzw. einen Hash der weitergegebenen Werte sowie Ihren Geheimcode erstellen.

Die Gültigkeit der empfangenen Daten wird mithilfe des von uns gesendeten Parameters cverify und des in Ihrem System erstellten Wertes beurteilt. Nur bei einer exakten Übereinstimmung der beiden Werte können Sie sicher sein, dass auf die Informationen nicht zugegriffen wurde.

Beispiele hierzu sind unter Code-Beispiele zu finden.

Implementierung

Nachdem Sie sich einen guten Überblick über den Inhalt des vorherigen Abschnitts verschafft haben, empfehlen wir Ihnen, diese Funktion zunächst zu testen, bevor Sie diese implementieren. Nach der erfolgreichen Durchführung dieses Tests können Sie Ihr Konto für den Sofortmitteilungsdienst aktivieren.

Zugriff anfordern

Führen Sie die folgenden Schritte durch, um Zugriff auf den Sofortmitteilungsdienst anzufordern:

  1. Loggen Sie sich in Ihr Konto ein.
  2. Klicken Sie auf  Kontoeinstellungen.
  3. Klicken Sie auf Eigene Website.
  4. Unter Sofortmitteilungen klicken Sie auf den Hyperlink “Hier klicken, um Zugriff zu erhalten”.
  5. Füllen Sie das Formular aus und lesen Sie sich bitte die Nutzungsbedingungen sorgfältig durch.
  6. Klicken Sie am Ende des Formulars auf Senden.

Verbindung und Verarbeitung prüfen

Führen Sie die folgenden Schritte aus, um die Verbindung und erfolgreiche Verarbeitung der URL-Parameter zwischen ClickBank und Ihrem Server zu testen:

  1. Loggen Sie sich in Ihr Konto ein.
  2. Klicken Sie auf  Kontoeinstellungen.
  3. Klicken Sie auf Eigene Website.
  4. Geben Sie in das Feld Sofortmitteilungen 1 die URL ein, an die ClickBank die Mitteilungen senden soll.
  5. Hinweis: Klicken Sie nicht auf “Änderungen speichern”.

  6. Klicken Sie rechts neben der URL auf Testen.
  7. Überprüfen Sie anhand der im Pop-up-Fenster angezeigten Antwort, ob der Test erfolgreich war.

Wenn der Test nicht erfolgreich war, entfernen Sie die URL aus dem Feld Sofortmitteilungen und beheben Sie mögliche Verbindungs- oder Programmierprobleme.

Wichtiger Hinweis: Sie sollten das Feld Sofortmitteilungen erst nach erfolgreichem Test befüllen. Andernfalls besteht die Möglichkeit, dass Ihr Zugriff auf die Funktion deaktiviert wird.

Eine Beispielsmitteilung wird zu ***** mit dem Aktionstyp TEST versendet

Kontoeinrichtung

Nachdem Ihnen Zugriff auf die Funktion gewährt wurde und Sie den Test erfolgreich durchgeführt haben, müssen Sie jetzt die Kontoeinrichtung für den Sofortmitteilungsdienst vornehmen. Zur Einrichtung folgen Sie bitte diesen Schritten:

  1. Loggen Sie sich in Ihr Konto ein.
  2. Klicken Sie auf  Kontoeinstellungen.
  3. Klicken Sie  auf Meine Website.
  4. Geben Sie auf der Seite Meine Website einen Geheimcode ein.
  5. Geben Sie in das Feld Sofortmitteilung 1 eine Sofortmitteilungs-URL ein (Ports 80 oder 443 – SSL empfohlen)
  6. Klicken Sie vor der Speicherung der Änderungen rechts neben der URL auf Testen.
  7. Überprüfen Sie anhand der im Pop-Up-Fenster angezeigten Antwort, ob der Test erfolgreich war.
  8. Klicken Sie auf Änderungen speichern.

Unmittelbar nach dem Abschluss der Einrichtung werden die Sofortmitteilungsübertragungen gestartet.

Deaktivierung

Die Entfernung der URL aus dem Feld Sofortmitteilungen auf der Seite Meine Website bewirkt, dass das System keine Mitteilungen mehr versendet.

Häufig gestellte Fragen

F: Ich bin kein erfahrener Programmierer. Sollte ich versuchen, Sofortmitteilungen von ClickBank zu installieren?

A: Nein. Für verschiedene Punkte des Sofortmitteilungsdienstes ist Programmiererfahrung erforderlich.

F: Kann der Sofortmitteilungsdienst pro Empfang mehr als ein POST senden?

A: Ja. Dies ist in vielen Szenarien möglich. Beispielsweise erhalten Sie verschiedene POSTs für eine einzige Transaktion, wenn eine Rückerstattung erfolgt ist, die anschließend storniert wurde. Hieraus würde sich ein POST für eine “RFND”-Aktion und anschließend ein POST für eine “SALE”-Aktion ergeben. Die erste Aktion ergibt sich daraus, dass für den ursprünglichen Verkauf eine Rückerstattung erfolgt ist. Die zweite Aktion ergibt sich daraus, dass der Verkauf wieder in Kraft gesetzt wurde.

F: Wodurch kann ich das Senden von POSTs durch den ClickBank-Sofortmitteilungsdienst beenden?

A: Die Entfernung der URL aus dem Feld Sofortmitteilungen auf der Seite Meine Website bewirkt, dass das System keine Mitteilungen mehr versendet.

F: Erhalte ich immer alle Parameter oder nur solche, die Werte enthalten?

A: Sie erhalten immer alle Parameter. Wenn ein Parameter keinen Wert enthält, enthält der Sofortmitteilungs-String den Parameter-Tag ohne Wert.

F: Warum wird für manche Parameter für die Zahl der zu erwartenden Zeichen “0″ angezeigt?

A: Diese Parameter enthalten während des Sendens keine Werte. Aus diesem Grund wird für diese die Möglichkeit “0 Zeichen” angezeigt.

F: Muss ich bei der Nutzung des Sofortmitteilungsdienstes von ClickBank SSL verwenden?

A: Dies ist nicht erforderlich, wird jedoch dringend empfohlen, da Sie sich auf diese Weise vor Internetdiebstahl schützen können.

F: Muss ich bei der Nutzung des Sofortmitteilungsdienstes von ClickBank eine Verschlüsselung durch Cipher verwenden?

A: Ja, dies ist erforderlich. Um den Sofortmitteilungsdienst zu aktivieren, müssen Sie Ihrem Konto einen Geheimcode hinzufügen.

F: Sind die von ClickBank zur Verfügung gestellten Code-Beispiele voll funktionstüchtig und sofort einsatzbar?

A: Nein. In den meisten Fällen müssen die Code-Beispiele in ein Programm eingebunden sein. Wenn Sie nicht über Erfahrungen in diesem Bereich verfügen, empfehlen wir Ihnen, die Dienste eines professionellen Programmierers in Anspruch zu nehmen.

F: Verwendet der Sofortmitteilungsdienst von ClickBank ein selbstunterschriebenes SSL-Zertifikat?

A: Nein. Es ist ein gültiges Zertifikat erforderlich.

F: Ist es möglich, den Sofortmitteilungsdienst vor der Implementierung zu testen?

A: Ja. Führen Sie die folgenden Schritte aus, um die Verbindung und Verarbeitung zwischen ClickBank und Ihrem Server zu testen:

  1. Geben Sie die URL ein, an die ClickBank die Mitteilungen senden soll.
  2. Klicken Sie vor der Speicherung der Änderungen rechts neben der URL auf Testen.
  3. Überprüfen Sie anhand der im Pop-Up-Fenster angezeigten Antwort, ob der Test erfolgreich war.

F: Kann ich an mehr als eine URL Mitteilungen senden?

A: Ja. Nach der Speicherung der ersten URL für die Mitteilung kann eine zweite URL eingegeben werden. Hinweis: Für die zweite URL gelten die gleichen Regeln wie für die erste URL.

Code-Beispiele

Die Daten, die Sie vom Sofortmitteilungsdienst erhalten, liegen in Form von HTML FORM POST URL-Parametern vor. Innerhalb Ihrer Anwendungsarchitektur geschriebene Programme müssen diese Paare verarbeiten. Es können auch Programme für das Bestellmanagement, die Datenbankaktivität und sonstige Dienste geschrieben werden. Diese werden in dieser Anleitung jedoch nicht behandelt.

JAVA

Verschlüsselung mit Cipher (Code für die Validierungsverarbeitung)

Der folgende Java-Code erstellt den Wert für cverify und verifiziert, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode korrekt ist.

Hinweis: Hierfür ist die Jakarta Commons Codec-Bibliothek erforderlich.

Code-Beispiel

public static boolean ipnValid(HttpServletRequest request) {
        String secretKey = "YOUR SECRET KEY";
        List ipnFields = new ArrayList();
        @SuppressWarnings("rawtypes")
        Enumeration params = request.getParameterNames();
        while (params.hasMoreElements()) {
            String param = (String) params.nextElement();
            // cverify is computed by all POST parameters so any get parameters
            // on the notification url should be skipped as well.
            if (param.equals("cverify")) {
                continue;
            }
            ipnFields.add(param);
        }
        Collections.sort(ipnFields);
        StringBuilder pop = new StringBuilder();
        for (String field : ipnFields) {
            pop.append(request.getParameter(field));
            pop.append("|");
        }
        pop.append(secretKey);
        String expectedCVerify = DigestUtils.shaHex(pop.toString().getBytes("UTF-8")).substring(0, 8);
        return expectedCVerify.toLowerCase(), request.getParameter("cverify").toLowerCase();
    }

PHP

Verschlüsselung mit Cipher (Code für die Validierungsverarbeitung)

Der folgende PHP erstellt den Wert für cverify und prüft, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode (anstelle einer URL-Verschlüsselung) korrekt ist.

Antworttypen:
1 = Erfolgreich
0 = Fehlgeschlagen

Code-Beispiel

<!--?php  $value) { 		if ($key == "cverify") { 			continue; 		} 		$ipnFields[] = $key; 	} 	sort($ipnFields); 	foreach ($ipnFields as $field) { 		$pop = $pop . $_POST[$field] . "|"; 	} 	$pop = $pop . $secretKey; 	$calcedVerify = sha1($pop); 	$calcedVerify = strtoupper(substr($calcedVerify,0,8)); 	return $calcedVerify == $_POST["cverify"]; } ?-->

?>

C#

Cipher (Validation Processing Code)

Das folgende C# erstellt den Wert für cverify und prüft, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode (anstelle einer URL-Verschlüsselung) korrekt ist.

///
/// This method takes the same named post parameters that are sent in the ClickBank Instant Notification Service.
///
///
/// True if the ClickBank passed paramter cverify matches the calculated sha1 of the provided data, False otherwise
///
	public static bool ipnValid(HttpRequest request)
	{
		string secretKey = "YOUR SECRET KEY";
		List ipnFields = new List();
		foreach(string param in request.Form.Keys) {
           	if (param.Equals("cverify")) {
               	continue;
           	}
           	ipnFields.Add(param);
		}
		ipnFields.Sort();
		string pop = "";
		foreach(String field in ipnFields) {
			pop += request.Form.Get(field) + "|";
		}
		pop += secretKey;
		string cverify = request.Form.Get("cverify");
		byte[] hashedData = new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(pop));
    	string calced_verification = BitConverter.ToString(hashedData).Replace("-", "").ToUpper().Substring(0, 8);
    	return calced_verification.Equals(cverify);
	}

Python

Cipher (Validation Processing Code)

Der folgende Python erstellt den Wert für cverify und prüft, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode (anstelle einer URL-Verschlüsselung) korrekt ist.

#!/usr/bin/env python -tt

import hashlib

##
# Verify cverify from an ipn.
# @param post_params: A dictionary of all POST parameters from the notification
# @return: True if the cverify parameter is valid, false otherwise
def ipnVerification(post_params):
    secret_key = "YOUR SECRET KEY"
    pop = ""
    ipn_fields = []
    for key in post_params.keys():
        if key == "cverify":
            continue
        ipn_fields.append(key)
    ipn_fields.sort()
    for field in ipnFields:
        pop += post_params[field] + "|"
    pop += secret_key
    return post_params["cverify"] == hashlib.sha1(pop).hexdigest()[:8].upper()

Ruby

Cipher (Validation Processing Code)

Der folgende Ruby erstellt den Wert für cverify und prüft, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode (anstelle einer URL-Verschlüsselung) korrekt ist.

#!/usr/bin/env ruby

require 'digest/sha1'

# Verify cverify from an ipn.  post_params is a Hash of all
# POST parameters from the ipn.
def ipnVerification(post_params)
  secret_key = "YOUR SECRET KEY"
  pop = ""
  ipn_fields = []
  post_params.each_key do |key|
	if key == "cverify"
		next
	end
	ipn_fields << key
  end
  ipn_fields.sort
  ipn_fields.each do |field|
	pop += post_params[field] + "|"
  end
  pop += secret_key
  calced_verification = Digest::SHA1.hexdigest(pop).upcase[0,8]
  return calced_verification == post_params["cverify"]
end

VB.net

Cipher (Validation Processing Code)

Der folgende VB.net erstellt den Wert für cverify und prüft, ob die Verwendung der Klartextwerte im HTTP POST und in Ihrem Geheimcode (anstelle einer URL-Verschlüsselung) korrekt ist.

public Function ipnVerification(request as HttpRequest)
                Dim secretKey as String = "YOUR SECRET KEY"
                Dim ipnFields as New List()
                Dim sha As New SHA1CryptoServiceProvider()
                For Each param In request.Form.Keys()
                if param.Equals("cverify") then Continue For
                ipnFields.Add(param)
                Next
                ipnFields.Sort()
                Dim pop as String = ""
                For Each field in ipnFields
                        pop += request.Form.Get(field) + "|"
                Next
                pop += secretKey
                Dim result() As Byte = sha.ComputeHash(New System.Text.ASCIIEncoding().GetBytes(pop))
        Dim calced_verification As String = BitConverter.ToString(result).Replace("-", "").ToUpper().Substring(0, 8)
        Return calced_verification.Equals(cverify)
        End Function

No related posts.