Servizio di notifica istantanea

ClickBank offre un Servizio di notifica istantanea per informarti delle transazioni all'interno del sistema ClickBank relative al tuo conto. Il servizio invia informazioni in tempo reale sui seguenti tipi di operazione:

  • Vendita – La vendita di un prodotto standard o la vendita iniziale di un prodotto ricorrente.
  • Fatturazione futura – Una fatturazione futura per un prodotto ricorrente.
  • Rimborso – Un rimborso per un prodotto standard o ricorrente.
  • Chargeback – Un chargeback per un prodotto standard o ricorrente.
  • Cancellazione fatturazione futura – La cancellazione di un prodotto ricorrente.
  • Annullamento cancellazione fatturazione futura – L’annullamento della cancellazione di un prodotto ricorrente da parte di un operatore del servizio clienti ClickBank.
  • Transazioni di prova – Transazioni di prova per le tipologie sopra elencate, o una prova della funzionalità di notifica istantanea introdotta.

Il servizio tenta di inviare informazioni tramite HTML FORM POST a un URL da te specificato. Ciascun post contiene un gruppo di parametri URL relativi alla transazione. La notifica è criptata e devi decodificarla utilizzando la tua chiave segreta e il vettore di inizializzazione prima di elaborarla.

NOTA: Questo servizio è destinato all'uso da parte di programmatori esperti. Se non hai capacità di programmazione, rivolgiti a un programmatore esperto prima di implementare le notifiche istantanee.

L'articolo tocca i seguenti argomenti:

Panoramica

Una volta attivato, il servizio di Notifica istantanea scatta ogni volta che viene creata una transazione o viene effettuata un’operazione nel tuo conto ClickBank. Il flusso primario prevede i seguenti passaggi:

  1. Nel sistema ClickBank ha luogo un’azione (per esempio una vendita o una fatturazione futura).
  2. ClickBank cripta una notifica utilizzando la tua chiave segreta e un vettore di inizializzazione.
  3. ClickBank invia parametri HTML FORM a un URL da te specificato.
    Si consiglia di utilizzare Transport Layer Security (TLS) o Secure Socket Layer (SSL).
  4. ClickBank utilizza il Monitoraggio del codice di risposta per verificare l’avvenuta ricezione della notifica.
  5. Un’applicazione da te costruita decodifica il messaggio (tramite la tua chiave segreta e il vettore di inizializzazione) ed elabora i parametri inviati.

La configurazione del servizio sul tuo conto ClickBank è molto semplice. Tuttavia, è anche necessario costruire un’applicazione che elabori i parametri URL di notifica istantanea, un’operazione più tecnica. Per poter utilizzare il servizio in modo corretto, la tua applicazione deve, come minimo, decodificare il messaggio ed elaborare i parametri descritti nella sezione Parametri di questo documento.

Se non conosci tutti questi argomenti, ti consigliamo di richiedere l’assistenza di un professionista in grado di aiutarti. In caso di implementazione errata delle Notifiche istantanee, la funzionalità potrebbe essere disattivata o rimossa dal tuo conto.

Versione corrente

The versione corrente della funzionalità di Notifica istantanea è la 6.0.

Tra le nuove funzioni della versione 6.0 figurano:

  • Notifiche criptate
  • Parametri che indicano il tipo di ordine in cui era incluso l’acquisto (per esempio una vendita addizionale o un’aggiunta all’ordine)
  • Parametro di quantità
  • Parametri variabili specifici per ogni venditore

Formato di notifica

Questa sezione descrive il formato della notifica istantanea a te inviata.

Struttura di base

Le notifiche istantanee vengono create in formato JSON e criptate prima dell’invio.

La struttura di base di una notifica istantanea è la seguente:

{"notification": "<ENCRYPTED_NOTIFICATION>", "iv": "<INITIALIZATION_VECTOR>"}

Crittografia

ClickBank utilizza l'algoritmo di crittografia CBC-AES-256 per garantire il carico utile della notifica. Ciò evita che le informazioni del cliente vengano trasmesse come testo semplice e permette al destinatario della notifica di sapere che la notifica proviene da ClickBank e non è stata alterata durante la spedizione. La notifica viene criptata utilizzando una chiave segreta, contenente un massimo di 16 caratteri, e un vettore di inizializzazione.

Nella sezione Campioni di codice sono elencate diverse modalità di decodifica delle notifiche; tuttavia, ti consigliamo di prendere dimestichezza con l'algoritmo di crittografia AES-256 per capire meglio come funziona.

Il messaggio iniziale JSON contiene una rappresentazione di stringa della notifica criptata e il vettore di inizializzazione che puoi utilizzare congiuntamente alla tua chiave segreta di ClickBank per decodificare la notifica.

Parametri

Questa sezione descrive i parametri utilizzati in una notifica.

Al momento dell’invio, una notifica include tutti i parametri. Se un parametro non contiene alcun valore, la stringa della notifica istantanea contiene il tag del parametro privo di valore. Questo spiega perché per alcuni parametri il numero di caratteri include lo zero: questi parametri potrebbero non contenere alcun valore.

Parametri di intestazione

Parametro

Descrizione

Caratteri / Formato

Destinatario

transactionTime

Tempo della transazione in formato RFC-3339

25

Tutti

receipt

ID ricezione ClickBank

8-21

Tutti

transactionType

Tipo di transazione.

4-15 – Vedi Tipi di transazione

Tutti

vendor

Nome utente del venditore

5-10

Tutti

affiliate

Nome utente dell’affiliato

5-10

Tutti

role

Il tuo ruolo nella transazione

6-9 – VENDOR, AFFILIATE, or JV_VENDOR

Tutti

totalAccountAmount

Totale ricevuto per la transazione in USD

Valore numerico con precisione di 2 decimali

Tutti

paymentMethod

Metodo di pagamento utilizzato dal cliente.

3-4 – Vedi Metodi di pagamento

Tutti

totalOrderAmount

Totale addebitato al cliente

Valore numerico con precisione di 2 decimali

Tutti

totalTaxAmount

Totale imposte pagate dal cliente

Valore numerico con precisione di 2 decimali

Venditore

totalShippingAmount 

Totale costi di spedizione pagati dal cliente

Valore numerico con precisione di 2 decimali

Venditore

currency

Valuta utilizzata dall’utente per il pagamento

3

Venditore

orderLanguage

Lingua utilizzata nel modulo d'ordine

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

Venditore

trackingCodes

Eventuali codici di tracciatura inseriti nel modulo d’ordine.

0-24 ciascuno

Venditore, Affiliato

Parametri prodotto

Parametro

Descrizione

Caratteri / Formato

Destinatario

itemNo

SKU del prodotto ordinato

1-10

Tutti

productTitle

Titolo del prodotto

0-255

Tutti

shippable

Se il prodotto era un bene fisico

4-5 – true o false

Tutti

recurring

Se il prodotto era basato su abbonamento

4-5 – true o false

Tutti

accountAmount

Importo da te ricevuto su questo articolo

Valore numerico con precisione di 2 decimali 

Tutti

quantity

Quantità di articoli acquistati

Valore numerico

Tutti

downloadUrl

URL di download del prodotto per il cliente

0-255

Venditore

lineItemType

Tipo di ordine di appartenenza dell’articolo

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

Tutti

Parametri di spedizione cliente

Parametro

Descrizione

Caratteri

Destinatario

firstName

Nome del cliente

0-255

Venditore

lastName

Cognome del cliente

0-255

Venditore

fullName

Nome e cognome del cliente

0-255

Venditore

phoneNumber

Numero di telefono del cliente

0-255

Venditore

email

Indirizzo e-mail del cliente

0-255

Venditore

address1

Indirizzo fisico del cliente, linea 1

0-255

Venditore

address2

Indirizzo fisico del cliente, linea 2

0-255

Venditore

city

Città del cliente

0-255

Venditore

county

Provincia del cliente

0-255

Venditore

state

Stato del cliente

0-255

Venditore

postalCode

CAP del cliente

0-255

Venditore

country

Paese del cliente

0-255

Venditore

Parametri di fatturazione cliente

Parametro

Descrizione

Caratteri

Destinatario

firstName

Nome del cliente

0-255

Venditore

lastName

Cognome del cliente

0-255

Venditore

fullName

Nome e cognome del cliente

0-255

Venditore

phoneNumber

Numero di telefono del cliente

0-255

Venditore

email

Indirizzo e-mail del cliente

0-255

Venditore

state

Stato del cliente

0-255

Tutti

postalCode

CAP del cliente

0-255

Tutti

country

Paese del cliente

0-255

Tutti

Parametri di vendita addizionale

Parametro

Descrizione

Caratteri

Destinatario

upsellOriginalReceipt

Numero di ricevuta originario del flusso di vendite addizionali

8-21

Tutti

upsellFlowId

ID del flusso di vendite addizionali

Numero intero

Venditore

upsellSession

ID sessione per la vendita addizionale

0-16

Venditore

upsellPath

Percorso di vendita addizionale

0-12

Venditore

Parametri Pytch

NOTA: La funzionalità Pytch è stata deprecata, ma i parametri vengono memorizzati per scopi di retrocompatibilità.

Parametro

Descrizione

Caratteri / Formato

Destinatario

hopfeedClickId

Nome ID Hopfeed click 

Stringa 

Tutti

hopfeedApplicationId

ID applicazione

Valore numerico 

Tutti

hopfeedCreativeId

ID creativo 

Valore numerico 

Tutti

hopfeedApplicationPayout

Pagamento applicazione 

Valore numerico con precisione di 2 decimali 

Tutti

hopfeedVendorPayout

Pagamento venditore 

Valore numerico con precisione di 2 decimali 

Tutti

Parametri tecnici

Parametro

Descrizione

Formato

Destinatario

version

Versione della notifica istantanea.

Valore numerico doppio

Tutti

attemptCount

Numero di tentativi di invio della notifica da parte di ClickBank prima di ricevere un messaggio di conferma o errore con troppi tentativi

Numero intero

Tutti

Parametri venditore

Se il venditore ha fornito eventuali variabili aggiuntive nel link di pagamento, queste sono incluse nella notifica sotto forma di parametri denominati v1, v2, e così via.

Tipi di transazione

Esiste una serie di valori che puoi ricevere nel parametro transactionType. Questi valori sono elencati di seguito con una breve descrizione della loro funzione.

NOTA: Le notifiche per le transazioni di prova vengono inviate solo al venditore.

Tipo

Descrizione

SALE

L’acquisto di un prodotto standard o l’acquisto iniziale di un prodotto a fatturazione ricorrente.

BILL

Una fatturazione futura per un prodotto ricorrente.

RFND

Il rimborso di un prodotto standard o a fatturazione ricorrente. I prodotti a fatturazione ricorrente rimborsati generano una transazione "CANCEL-REBILL".

CGBK

Un chargeback per un prodotto standard o ricorrente.

INSF

Un chargheback con eCheck per un prodotto standard o ricorrente.

CANCEL-REBILL

La cancellazione di un prodotto a fatturazione ricorrente. I prodotti a fatturazione ricorrente cancellati non comportano ulteriori operazioni.

UNCANCEL-REBILL

L’annullamento della cancellazione di un prodotto a fatturazione ricorrente.

TEST

Una transazione di prova avviata durante la configurazione.

TEST_BILL

Una fatturazione futura di prova per un prodotto ricorrente.

TEST_RFND

Un rimborso di prova di un prodotto standard o a fatturazione ricorrente.

TEST_SALE

Un acquisto di prova di un prodotto standard o a fatturazione ricorrente.

CANCEL-TEST-REBILL

Una cancellazione di prova di un prodotto ricorrente.

UNCANCEL-TEST-REBILL

L’annullamento di una cancellazione di prova per un prodotto ricorrente.

Metodi di pagamento

Esiste una serie di valori che puoi ricevere nel parametro paymentMethod. Questi valori sono elencati di seguito.

Parametro del metodo di pagamento

Metodo di pagamento

PYPL

PayPal

VISA

Visa

MSTR

Mastercard

DISC

Discover

AMEX

American Express

SOLO

Solo

JCBC

JCB

DNRS

Diners Club

MAES

Maestro

ELV

Addebito diretto europeo

TEST

Pagamento di prova

Esempio di notifica

Ecco un campione di una notifica in formato JSON non criptata che mostra la struttura delle coppie chiave-valore per la Versione 6.0 della funzionalità Notifica istantanea. 

 {
    "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" 
    }
}

Implementazione

Una volta acquisito un adeguato livello di comprensione della precedente sezione del presente documento, puoi richiedere l’accesso alla funzionalità Notifica istantanea, testare il tuo URL e attivare le Notifiche istantanee.

Dopo aver configurato un URL per le Notifiche istantanee, puoi aggiungerne un altro utilizzando le seguenti procedure con il campo di Instant Notification 2.

Richiesta dell’accesso alle Notifiche istantanee

La funzionalità di Notifica istantanea non viene attivata in automatico. Per richiedere l’accesso:

  1. Accedi al tuo conto.
  2. Fai clic sulla scheda Impostazioni.
  3. Fai clic su Il mio sito.
  4. Individua la sezione Strumenti avanzati e fai clic su Modifica.
  5. Fai clic sul link Richiedi accesso accanto al campo dell’URL della Notifica istantanea.
  6. Compila il modulo, leggi con attenzione i termini di utilizzo e dichiara di aver letto e di accettare i termini di utilizzo.
  7. Fai clic sul pulsante di accesso Salva modifiche e richiedi API nella parte inferiore del modulo.
  8. Fai clic sul pulsante Salva modifiche.

Configurazione del tuo URL

Una volta ottenuto l’accesso alla funzionalità Notifica istantanea, devi creare un URL di destinazione e un programma di elaborazione delle Notifiche in arrivo all’URL fornito. Puoi utilizzare le porte 80 o 443.

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

Si consiglia vivamente di utilizzare questa funzionalità abilitando Transport Layer Security (TLS) o Secure Socket Layer (SSL). Se utilizzi questa funzione senza attivare TLS o SSL, i tuoi dati di vendita sono esposti al rischio di furto informatico. Tuttavia, poiché le informazioni sulle carte di credito e le coordinate bancarie non vengono trasmesse tramite il servizio di Notifica istantanea, non ti viene richiesto di utilizzare TLS o SSL per criptare le trasmissioni di Notifica istantanea.

NOTA: Non puoi utilizzare un certificato SSL autofirmato. Devi utilizzare un certificato valido.

Prova della connettività e dell’elaborazione

Prima di poter attivere le Notifiche istantanee, devi verificare la connettività e l’avvenuta elaborazione dei parametri dell'URL tra ClickBank e il tuo server. Per effettuare il test:

  1. Accedi al tuo conto.
  2. Fai clic sulla scheda Impostazioni.
  3. Fai clic su Il mio sito.
  4. Individua la sezione Strumenti avanzati e fai clic su Modifica.
  5. Inserire il tuo URL nel campo dell’URL della Notifica istantanea.
    NOTA: Non fare clic su Salva modifiche.
  6. Fai clic su Prova a destra dell’URL.
    Ti verrà inviata una notifica di prova con una ricezione di ******** e un tipo di transazione di TEST.
  7. Verifica la risposta nella finestra a comparsa per identificare se l'esito del test è stato positivo.

Se il risultato del test non è positivo, cancella l'URL dal campo Notifica istantanea e risolvi gli eventuali problemi di connettività o della tua applicazione.

NOTA: Non devi riempire il campo Notifica istantanea se non sei in grado di svolgere un test con esito positivo. In caso contrario, il tuo accesso a questa caratteristica potrebbe essere disattivato.

Attivazione delle Notifiche istantanee

Una volta ottenuto l'accesso alla funzionalità e svolta una prova con esito positivo, puoi attivare le Notifiche istantanee per iniziare a riceverle. Per attivare le Notifiche istantanee:

  1. Accedi al tuo conto.
  2. Fai clic sulla scheda Impostazioni.
  3. Fai clic su Il mio sito.
  4. Individua la sezione Strumenti avanzati e fai clic su Modifica.
  5. Digita la tua chiave segreta nel campo Chiave segreta. La chiave segreta può contenere un massimo di 16 caratteri e deve essere inserita utilizzando lettere maiuscole. Per maggiori informazioni, consulta la sezione Crittografia.
  6. Inserire il tuo URL nel campo dell’URL della Notifica istantanea.
  7. Fai clic su Prova a destra dell’URL.
    Ti verrà inviata una notifica di prova con una ricezione di ******** e un tipo di transazione di TEST.
  8. Verifica la risposta nella finestra a comparsa per identificare se l'esito del test è stato positivo.
  9. Fai clic su Salva modifiche.

Dopo aver completato la configurazione, le trasmissioni di Notifica istantanea inizieranno immediatamente.

Disattivazione delle Notifiche istantanee

Puoi disattivare la funzionalità per impedire l’invio delle notifiche eliminando il tuo URL. È possibile attivare nuovamente la funzione in un secondo momento.

  1. Accedi al tuo conto.
  2. Fai clic sulla scheda Impostazioni.
  3. Fai clic su Il mio sito.
  4. Individua la sezione Strumenti avanzati e fai clic su Modifica.
  5. Rimuovi l’URL dal campo dell’URL della Notifica istantanea.
  6. Fai clic su Salva modifiche.

Monitoraggio del codice di risposta

Quando inviamo una notifica istantanea, monitoriamo il codice di risposta del tuo URL. Se il codice di risposta è nell’intervallo di 200, la consegna della notifica viene considerata positiva.

Se il codice di risposta non è nell’intervallo di 200, proveremo a inviare nuovamente la notifica una volta ogni ora per 72 ore. Dopo 72 tentativi non riusciti, disattiveremo il tuo URL. Dopo aver diagnosticato la causa dei problemi, puoi attivare nuovamente il tuo URL per continuare a ricevere le notifiche istantanee.

Campioni di codice

I dati vengono ricevuti dal servizio di Notifica istantanea sotto forma di parametri HTML FORM POST URL. I programmi scritti all'interno dell'architettura della tua applicazione devono essere in grado di elaborare queste coppie. È possibile scrivere programmi per la gestione degli ordini, l'attività del database e altri servizi; tuttavia, questi non rientrano negli scopi della presente guida.

I seguenti campioni di codice servono a decodificare la notifica.

NOTA: I seguenti campioni di codice devono essere annidati in un programma. Inoltre, questi campioni non funzioneranno correttamente se la tua serie di caratteri include caratteri tedeschi, greci, dell’Europa orientale o asiatici. Prima di decodificare le notifiche istantanee, devi effettuare la tua codifica personalizzata. Se non sei in grado, richiedi l’aiuto di un programmatore esperto.

Java

I seguenti campioni di codice utilizzano Java per decodificare la notifica.

 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

I seguenti campioni di codice utilizzano PHP per decodificare la notifica.

<?php
// NOTA: è necessario installare le librerie mcrypt ed elencarle come
// estensioni disponibili nel tuo phpinfo() per poter utilizzare questo
// metodo di decodifica.
 
$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);
 
// Pronto per iniziare - Se la decodifica della stringa JSON non
// è avvenuta correttamente, si può presumere che la notifica non sia stata criptata
// con la tua chiave segreta.
 
?>

Python

I seguenti campioni di codice utilizzano Phyton per decodificare la notifica.

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

I seguenti campioni di codice utilizzano Ruby per decodificare la notifica.

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
Altre domande? Invia una richiesta

0 Commenti

Accedi per aggiungere un commento.
Powered by Zendesk