L'estensione Software Licensing per Easy Digital Downloads richiede una configurazione e integrazione – ed è possibile che si verifichino alcuni problemi. Alcuni di questi sono delineati qui con potenziali soluzioni.
Indice dei contenuti
FAQ
Come si contattano i clienti quando un aggiornamento è disponibile?
Si consiglia di utilizzare un servizio di email marketing, come Mailchimp o ConvertKit. WordPress non è raccomandato per l'invio di email di massa, quindi i contatti con gli utenti devono essere effettuati esternamente a EDD/WordPress.
È possibile vendere licenze personalizzate / enterprise?
Sebbene non vi sia un supporto integrato per la vendita di licenze personalizzate o enterprise che possono essere attivate su un numero maggiore di siti, esistono soluzioni alternative per far funzionare questo sistema. L'opzione più semplice è fatturare al cliente tramite una fattura Stripe o PayPal. Una volta pagato, crea manualmente un ordine e aggiorna il limite di attivazione della licenza al numero di attivazioni che desideri il cliente abbia a disposizione.
Software Licensing funziona con Amazon S3?
Sì, è completamente compatibile senza problemi e senza impostazioni speciali.
Gli ambienti locali / di sviluppo influiscono sul conteggio delle attivazioni?
Se scegli di limitare il numero di attivazioni di licenza che un cliente può avere, è comunque possibile consentirgli di attivare una licenza sul proprio ambiente di sviluppo locale senza influire sul conteggio delle attivazioni.
Ciò consente ai tuoi utenti di rimanere facilmente aggiornati nei loro ambienti di test e sviluppo senza ottenere attivazioni di licenza gratuite.
Affinché ciò funzioni, devono accadere due cose:
1) Ignora URL di Local Host
Nella tua bacheca WordPress, sotto
Download → Impostazioni → Estensioni → Software Licensing cerca una casella di controllo che dice Ignora URL di Local Host. Assicurati che sia selezionata.

2) Educa i clienti
Vedi questa guida su come ignorare le attivazioni per i siti di sviluppo.
Come si creano formati di chiave di licenza personalizzati?
Le chiavi di licenza EDD sono di default una somma md5 come questa:
e0c7ccc47b2613c82d1073a4214deecc
Se desideri avere qualcos'altro, con Software Licensing è facile come creare una funzione per creare chiavi uniche e coerenti e agganciarsi a un filtro chiamato edd_sl_generate_license_key.
I formati delle chiavi di licenza possono essere qualsiasi cosa desideri, purché siano unici e coerenti. Se desideri chiavi in questo formato:
username_timestamp_licensekey sdavis2702_20151015120022_e0c7ccc47b2613c82d1073a4214deecc
Puoi usare questa funzione:
// Example shown how to base the MD5 off of the user's email and purchase date
function pw_edd_license_md5_user_and_date( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$date = get_post_field( 'post_date', $payment_id );
$timestamp = strtotime($date);
$nice_date = date( 'Yndhis', $timestamp );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $nice_date . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'pw_edd_license_md5_user_and_date', 10, 5 );
Una funzione più semplice utilizza solo nome utente e chiave di licenza:
// prepend user's username to license key
function sd_edd_license_username_md5( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'sd_edd_license_username_md5', 10, 5 );
La cosa più importante da trarre da questo documento è che puoi usare qualsiasi codice che produca stringhe uniche e coerenti e usare quelle stringhe come chiavi di licenza.
Mostrare un elenco delle chiavi di licenza dei clienti
Il codice seguente ti permetterà di recuperare e visualizzare un elenco di chiavi di licenza per un cliente specifico.
Nota: "$customer->id" dovrebbe essere sostituito con l'ID effettivo del cliente.
$licenses = edd_software_licensing()->licenses_db->get_licenses( array( 'number' => -1, 'customer_id' => $customer->id, 'orderby' => 'id', 'order' => 'ASC', ) );
Cosa succede se il dominio del mio negozio va offline?
Incoraggiamo l'uso dell' EDD Software Licensing SDK per gestire le licenze nel tuo plugin o tema WordPress. L'SDK non invierà richieste API ripetute al tuo sito se non riceve una risposta valida.
Se intendi cambiare dominio o chiudere un nome di dominio, sarebbe meglio rilasciare un aggiornamento che utilizzi il nuovo dominio o rimuova del tutto le chiamate all'API.
Problemi comuni
Personalizza codice di esempio
Il codice di esempio fornito con Software Licensing potrebbe utilizzare prefissi di funzione come edd_ e edd_sl_. Questi dovrebbero essere modificati per corrispondere al tuo plugin e la funzione di ricerca e sostituzione è un ottimo modo per farlo, ma devi fare attenzione alla stringa di ricerca.
Ci sono funzioni con prefissi come edd_action_ che non dovrebbero essere modificate. Assicurati di modificare solo i prefissi dei nomi delle tue funzioni e non i prefissi del core di EDD.
Risoluzione dei problemi di aggiornamento
Se riscontri errori durante il tentativo di aggiornare plugin e temi dal tuo store Software Licensing, ecco alcune cose che puoi controllare, a seconda dell'errore segnalato.
Personalizza il tuo Updater
Se stai utilizzando la classe legacy dell'updater del plugin fornita nelle versioni precedenti di Software Licensing, probabilmente stai usando la classe EDD_SL_Plugin_Updater per gestire le licenze e i controlli degli aggiornamenti. Esiste il rischio di un "conflitto" se un altro plugin include una versione diversa della classe EDD_SL_Plugin_Updater rispetto a quella che stai pacchettizzando con il tuo plugin. Puoi rinominare questa classe con qualcosa di unico per il tuo plugin, in modo da evitare conflitti. Ad esempio, se il nome del mio plugin è "My Custom Ads", potrei rinominare EDD_SL_Plugin_Updater in MCA_Plugin_Updater e modificare tutti i riferimenti ad essa. In alternativa, l'utilizzo dell'EDD Software Licensing SDK semplificherà notevolmente la gestione degli aggiornamenti di plugin/temi.
Errori SSL
Ci sono molti errori che possono essere causati da problemi di connettività SSL; i seguenti sono comunemente riscontrati con Software Licensing.
SSL: il nome del soggetto del certificato non corrisponde
Questo errore significa che il certificato SSL installato sul tuo sito non corrisponde al tuo nome di dominio principale. Questo può accadere tipicamente in ambienti di hosting condiviso e la soluzione più comune è richiedere un indirizzo IP dedicato al tuo provider di hosting. Se il tuo provider di hosting non supporta indirizzi IP dedicati, dovrai collaborare con il tuo provider di hosting per configurare una catena SSL appropriata che corrisponda al tuo dominio principale, invece di un certificato SSL wildcard condiviso.
SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Questo errore di Handshake SSL si verifica quando la versione OpenSSL sul server del sito che richiede l'aggiornamento è obsoleta e non supporta i protocolli SSL richiesti dal negozio che fornisce l'aggiornamento. Ci sono due modi per risolvere questo problema. La soluzione *ideale* è far verificare al sito che richiede l'aggiornamento che il suo software OpenSSL sia aggiornato per la sua piattaforma. OpenSSL è un software server che facilita la comunicazione tramite il protocollo HTTPS. Se questa non è una soluzione possibile, puoi collaborare con il tuo provider di hosting o amministratore di server per configurare il tuo web-server in modo che accetti queste versioni SSL obsolete, ma non è l'ideale in quanto consente connessioni meno sicure al tuo server.
Errore cURL 35: Errore di connessione SSL
Questo errore specifico con Software Licensing che fornisce aggiornamenti si verifica solitamente quando si utilizza l'opzione SSL Flessibile di Cloudflare. Questa opzione causa un problema a catena con alcune versioni di cURL presenti sul server del client che richiede l'aggiornamento. Ci sono un paio di modi per risolvere questo problema dal lato server (senza dover chiedere al client di aggiornare la sua versione di cURL). Il primo è l'aggiornamento a un SSL Cloudflare a pagamento. I certificati SSL di livello a pagamento di Cloudflare solitamente non presentano questo problema. L'altra soluzione è acquistare un certificato SSL da terze parti e installarlo direttamente sul tuo server.
Download fallito. SSL: nessun nome alternativo del soggetto del certificato corrisponde al nome host di destinazione
An error occurred while updating Resurrect: Download failed. SSL: certificate subject name '*.example.com' does not match target host name 'anotherexample.com'
Ciò si verifica quando il sito del cliente ha una vecchia versione di OpenSSL o cURL. I due siti quindi non possono comunicare in modo sicuro e l'aggiornamento fallisce.
L'unica soluzione è che il sito con la versione software più vecchia sul suo server si aggiorni alle ultime versioni.
Download fallito. Certificato del peer SSL o chiave remota SSH non valido
Se i tuoi clienti riscontrano questo errore durante l'aggiornamento dei loro prodotti, dovrai contattare il tuo web host per informarlo che il tuo certificato SSL è configurato in modo errato:
Download fallito. Servizio non disponibile
Vedrai questo errore quando tenti di aggiornare un plugin o un tema su un sito che ospita anche quel plugin o tema. A causa del modo in cui Software Licensing si integra con l'API di aggiornamento di WordPress, non è attualmente possibile aggiornare i propri temi o plugin dal sito che li vende. Quando WordPress installa un aggiornamento, mette temporaneamente il tuo sito in modalità manutenzione e durante quel processo il tuo sito non può installare il proprio aggiornamento. Per aggiornare un plugin o un tema da un sito che lo vende anche, dovrai installare manualmente l'aggiornamento.
Download fallito. Non autorizzato / Troppi reindirizzamenti
Questo errore si verifica durante l'aggiornamento del tuo plugin o tema a una nuova versione. Durante il caricamento della nuova versione, se aggiungi un nuovo file con la tua nuova versione e poi elimini la riga del file precedente, invece di sostituire la versione corrente, è possibile che si verifichi questo errore. Attualmente siamo a conoscenza di questo bug e stiamo lavorando per risolverlo, tuttavia la soluzione semplice nel frattempo è fare clic sul pulsante 'Aggiorna' una seconda volta, per riscrivere le chiavi del file, o sostituire sempre il file corrente invece di aggiungere i tuoi nuovi file su una seconda riga di file.
Pacchetto di aggiornamento non disponibile
Quando si presenta questo errore, di solito significa:
- C'è un problema con l'attivazione della licenza sul sito del cliente. Ci sono alcune cose da controllare se un cliente segnala questo errore. La prima è che il dominio che sta cercando di aggiornare è stato attivato per la licenza. Puoi determinarlo andando su Download → Licenze. Puoi quindi cercare la chiave di licenza che l'utente sta cercando di aggiornare e fare clic su 'Gestisci siti' per assicurarti che il dominio su cui si trovano sia nell'elenco. In caso contrario, puoi aggiungerlo tu stesso dall'amministratore, oppure far visitare al cliente la sua pagina di gestione licenze e attivarla da solo.
- L'altro risultato è che una licenza è scaduta o disabilitata. Se questo è il caso, il cliente deve rinnovare la sua licenza, o un amministratore del sito l'ha disabilitata manualmente.
Strano nome di cartella lungo dopo l'aggiornamento
Ciò accade quando il file .zip viene creato in modo errato. Quando si crea l'archivio .zip finale, è importante comprimere la cartella *e* il suo contenuto piuttosto che solo il contenuto della cartella.
La struttura del file zip dovrebbe assomigliare a questa:
nomefile.zip
– nomeprodotto/
— file qui
— altro file qui
In altre parole, i file devono trovarsi in una cartella e non nella parte superiore del file zip. Ripacchetta il tuo file per includere il nome della cartella all'interno e questo lo risolverà.
Integrazione CloudFlare
Se stai usando CloudFlare come CDN, livello di cache o provider SSL, ti consigliamo di configurare CloudFlare per ignorare la cache per tutti gli URL che contengono la seguente stringa:
/edd-sl
Questo è l'endpoint API per controllare lo stato della licenza e fornire pacchetti di aggiornamento. Se questi URL degli endpoint vengono memorizzati nella cache, ciò può causare problemi nella corretta consegna degli aggiornamenti ai tuoi clienti.
PCLZIP_ERR_BAD_FORMAT
Questo errore non è esclusivo della piattaforma EDD Software Licensing, ma ha un paio di soluzioni che potresti controllare. La prima è che c'è spazio su disco sufficiente per scaricare e decomprimere il file (supponi che avrai bisogno del doppio delle dimensioni del file .zip per elaborare l'aggiornamento). Se il tuo file .zip è di 1 MB, avrai bisogno di poco più di 2 MB disponibili per elaborare correttamente un aggiornamento. Questi numeri non sono esattamente 2x, ma è una buona misura per iniziare.
L'altra cosa da verificare è che il file .zip non sia corrotto. Puoi testarlo trasferendo il file .zip su un altro computer (allegato in un'email o tramite USB) e provando a decomprimerlo anche lì. Se non si decomprime su un computer diverso, è probabile che ci sia un problema con la creazione del file .zip sul computer originale.
Questo errore può essere causato anche da un plugin o uno script che genera un errore. Quando l'API di Software Licensing tenta di creare il pacchetto zip, l'errore viene aggiunto al file zip, compromettendone la struttura. Normalmente, ciò significa che il tuo sito web ha WP_DEBUG impostato su TRUE nel file wp-config.php. Sebbene sia un buon modo per verificare eventuali errori, è meglio impostarlo su FALSE su un sito web live. In alternativa, puoi mantenerlo abilitato ma registrare gli errori in un file sul tuo server, nel file wp-contents/debug.log. Fallo aggiungendo le seguenti righe al file wp-config.php:
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_display', false );
