Aggiunta di elaborazione dei pagamenti Bitcoin al tuo sito web

Bitcoin ha sicuramente iniziato a diventare più mainstream, e con la sua portata globale e le tariffe minime, è un metodo di pagamento degno di considerazione.

In questo articolo, daremo un'occhiata a cosa sia Bitcoin, oltre a come iniziare ad accettarli nelle tue applicazioni.


Cos'è Bitcoin?

Per prima cosa, cos'è Bitcoin? Per chi non ha familiarità, Bitcoin è una valuta peer-to-peer, sviluppata per rimuovere la necessità di un'autorità attendibile di terze parti, e si basa invece sulla sicurezza intrinseca mediante hash crittografici.

Rimuovendo un'autorità centrale (un governo, una banca, ecc.) Si riducono le tariffe e si riducono i requisiti. Non è necessario compilare moduli o pagare gli stipendi delle persone, quindi in un certo senso, il denaro si assicura da solo.

Non ho intenzione di entrare nello specifico, ma essenzialmente ogni volta che si verifica un trasferimento di valuta, il denaro viene firmato con le chiavi delle due parti e poi con l'hash, e queste transazioni vengono aggiunte al registro globale. Questo permette alle monete di essere rintracciate pubblicamente, e di vedere se il denaro appartiene davvero a qualcuno o no.


Vantaggi e svantaggi

Ora diamo un'occhiata ad alcuni dei vantaggi e degli svantaggi associati all'uso di Bitcoin:

vantaggi:

  • Chiunque può usarlo a livello globale.
  • Un po 'anonimo.
  • Tariffe minime.
  • Nessuna installazione richiesta.

svantaggi:

  • Il valore delle monete fluttua.
  • Non così tradizionale come altre opzioni (CC, Paypal).

I vantaggi seguono tutti un modello simile, in quanto poiché non esiste un'autorità centrale, chiunque può usarlo in qualsiasi momento senza bisogno di conferme o accettazione, inoltre le tariffe sono piuttosto basse.

Ora gli svantaggi sono vari. Dato che non è mainstream come le altre opzioni di pagamento, non penso che sia proprio dove deve essere, al fine di renderlo la tua unica opzione di pagamento. Ma con tutti i mezzi, se sei un grande sostenitore e vuoi che cresca, puoi essere un servizio solo per Bitcoin, ma ti suggerirei, per ora, di usarlo insieme a un altro servizio, che accetta carte di credito.

L'altro svantaggio è la stabilità del valore di Bitcoin; all'inizio di quest'anno, il valore di un bitcoin era di circa 12-14 $ ciascuno, in un paio di mesi le monete sono aumentate a quasi 240 $ in aprile e attualmente valgono circa 110-115 $ ciascuna. Questo è in netto contrasto con le valute tradizionali, perché i tuoi soldi hanno un aumento del valore del 2000% e quindi una diminuzione del 50%, tutto in pochi mesi sembra che dovrebbe essere una bandiera rossa.

per gentile concessione di blockchain.info

È difficile dirlo con certezza, se questo è solo un bi-prodotto di avere una valuta decentralizzata, o se è dovuto all'infanzia del programma, ma è sicuramente una preoccupazione.

Fortunatamente la maggior parte dei processori Bitcoin, come quello che userò in questo articolo, ti permette di convertire istantaneamente i Bitcoin o una parte di essi in valuta normale, come dollari, subito. Ad esempio, puoi impostare che l'80% dei Bitcoin in arrivo debba essere immediatamente convertito e trasferito sul tuo conto bancario, rimuovendo questo elemento di rischio.

In definitiva, puoi guadagnare e perdere da queste fluttuazioni, quindi spetta a te decidere se vuoi giocare d'azzardo e lasciarne di più in Bitcoin, o rimuovere tutti i rischi e convertirli tutti.

Loro sono un paio di servizi popolari che funzionano come Coinbase, BitPay, ecc. Ma quello che userò in questo articolo è BIPS.


La premessa

In questo articolo creeremo una semplice pagina di destinazione, nella quale potrai inserire la tua email e fare clic su "acquisto" che ti porterà alla pagina di pagamento. Nella pagina di pagamento, ti verrà fornito un indirizzo di portafoglio Bitcoin a cui puoi inviare il denaro e, una volta pagato, riceverai l'articolo acquistato via email.

Queste tre fasi sono completamente separate, come in tutte le opzioni di pagamento, ma si distingue maggiormente qui, dal momento che non puoi pagare direttamente dal modulo di acquisto e devi pagare dal tuo portafoglio personale Bitcoin.

Per questa app, userò Slim per fornire una piccola struttura, Mandrill per l'invio del prodotto e, come ho detto, BIPS come processore di pagamento per implementare il lato Bitcoin delle cose.


Il set up

Quindi, per installare Slim, crea a composer.json file con il seguente:

 "nome": "bitcoin app", "require": "slim / slim": "2.2.0"

Quindi corri installazione di compositore (supponendo che tu abbia installato il compositore) per installare le dipendenze.

Quindi, crea un pubblico cartella con un index.php file al suo interno e a visualizzazioni cartella.

La tua struttura dovrebbe assomigliare a questo:

 public / -> index.php vendor / views / composer.json

Ora apri il index.php file e configuriamo l'app Slim:

  "… /visualizzazioni" ));

Richiediamo il caricatore automatico e quindi istanziamo la libreria Slim, per ora solo semplice testo. Successivamente, aggiungiamo il percorso di casa che sarà una pagina HTML standard con il modulo per avviare un acquisto:

 $ app-> get ('/', function () usa ($ app) $ app-> render ('home.php'););

E poi abbiamo bisogno di aggiungere il home.php visualizza il file stesso su visualizzazioni cartella:

    App Bitcoin    

Compra questo

Questa è una grande offerta che dovresti acquistare questa cosa

Niente di troppo, in pratica solo un modulo per inviare l'email dell'utente.

L'ultimo pezzo di setup che dobbiamo completare è quello di registrarsi sia per BIPS che per Mandrill (se lo si sta utilizzando) e generare le chiavi API per entrambi. In BIPS, vai al Mercante scheda e generare una chiave API fattura, e per Mandrill si va al Credenziali SMTP e API pagina per generare una nuova chiave API.


Creazione di una fattura

Finora abbiamo un modulo di base che invierà l'email di un utente tramite una richiesta POST, il passo successivo è quello di prendere quell'email e generare una fattura per esso.

Aggiungiamo un percorso postale al index.php file, che genererà una chiamata API per creare una nuova fattura e reindirizzare l'utente ad essa:

 $ app-> post ('/', function () usa ($ app) $ email = $ req = $ app-> request () -> post ('email'); if ($ email) $ token = "BIPS_API_KEY"; $ ch = curl_init ("https://bips.me/api/v1/invoice"); curl_setopt ($ ch, CURLOPT_POST, true); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch , CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt ($ ch, CURLOPT_USERPWD, $ token. ":"); Curl_setopt ($ ch, CURLOPT_SSLVERSION, 3); curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, 2) ; curl_setopt ($ ch, CURLOPT_POSTFIELDS, array ("price" => 20, "currency" => "USD", "item" => "PDF Book", "custom" => json_encode (array ("users_email" => $ email)))); $ invoiceUrl = curl_exec ($ ch); $ app-> reindirizzamento ($ invoiceUrl););

Ci sono un paio di cose da notare qui, per esempio, il token API che hai generato per la creazione di fatture, è il 'nome utente' nell'autenticazione HTTP. I campi POST che stiamo inviando sono i seguenti:

  • prezzo - il prezzo dell'oggetto (un valore int o float).
  • moneta - un'abbreviazione di valuta come USD, GBP, EUR o BTC per i prezzi in Bitcoin stesso.
  • articolo - il nome dell'oggetto, questo è opzionale ma verrà visualizzato sulla fattura.
  • costume - una stringa codificata JSON contenente i dati personalizzati che si desidera allegare alla fattura. Qualsiasi cosa venga specificata qui verrà passata indietro una volta che l'utente paga, quindi puoi mettere i numeri di riferimento interni o le chiavi in ​​un database, nel nostro esempio inserisco semplicemente l'e-mail dal momento che non stiamo memorizzando altri dati.

La chiamata all'API restituirà solo l'URL della fattura stessa, quindi possiamo semplicemente ottenere la risposta e il reindirizzamento direttamente su di essa.

Ora a differenza di altre opzioni di pagamento, come una carta di credito o PayPal, non ci sono terze parti che gestiscono l'addebito, quindi non puoi inserire il tuo numero o accedere per pagare. Invece, crea un portafoglio personalizzato per transazione e ti dà 15 minuti per trasferire l'importo specificato in quell'account. Questo è quello di cui stavo parlando in precedenza, che con Bitcoin, si notano i diversi passaggi durante il processo di pagamento di più, quindi si farebbe con qualcosa come l'acquisto in un clic su Amazon.

D'altra parte, il vantaggio di un sistema come questo è la sicurezza innata che arriva senza che tu debba fare nulla. Non ti occupi dei numeri delle carte di credito o dei pagamenti, quindi il sito non deve essere altrettanto sicuro, basta creare una nuova 'identità' o portafoglio, e se il denaro viene trasferito lì, il pagamento viene completato con successo.


Completando l'acquisto

L'ultimo passaggio consiste nel gestire l'acquisto effettivo, una volta completato il pagamento. Per fare ciò è necessario aggiungere un URL di richiamata e una chiave segreta nella scheda del commerciante del pannello BIPS. Lo dirò semplicemente al / IPN percorso, con una chiave segreta di CHIAVE SEGRETA.

Il callback è una richiesta POST che contiene tutte le informazioni dell'acquisto insieme ai dati personalizzati che hai passato e un hash per verificare che sia autentico. Si verifica l'acquisto da parte di SHA-512 con l'hashing della chiave di transazione insieme al segreto impostato nel pannello di amministrazione e si verifica che corrisponda all'hash calcolato nella richiesta di callback:

 $ app-> post ('/ ipn', function () use ($ app) // Oggetto Slim Request $ req = $ app-> request (); // Ottieni alcune variabili dalla richiesta $ email = $ req- > post ('personalizzato') ['email']; $ transactionKey = $ req-> post ('transazione') ['hash']; $ invoiceHash = $ req-> post ('hash'); $ status = $ req-> post ('status'); // Hash della chiave di transazione con il segreto $ secret = 'SECRETKEY'; $ hash = hash ("sha512", $ transactionKey. $ secret); // Verificarlo se ($ invoiceHash === $ hash && $ status == 1) // Pagato);

La chiave di transazione e il segreto vengono semplicemente aggiunti l'uno all'altro e poi li abbiamo uniti. L'ultimo bit controlla solo se lo stato è 1 (il che significa che il pagamento è arrivato) e verifica l'autenticità della notifica.

Ora abbiamo l'indirizzo dell'utente e abbiamo una conferma di pagamento, quindi l'ultimo passo è inviare all'utente una sorta di oggetto. Se stai creando un servizio di abbonamento o qualche tipo di oggetto fisico, puoi semplicemente registrare il pagamento dell'utente in un database, ma per concludere questo articolo, diamo una breve occhiata all'invio di un articolo con Mandrill.

 if ($ invoiceHash === $ hash e& $ stato == 1) // Mandrill URL + chiave API $ url = "https://mandrillapp.com/api/1.0/messages/send.json"; $ apiKey = "MANDRILL_API_KEY"; // Ottieni modello di email $ view = $ app-> view (); $ template = $ view-> fetch ("email.php"); // Dati POST del messaggio $ messageData = array ("chiave" => $ apiKey, "message" => array ("html" => $ template, "subject" => "Grazie per l'acquisto :)", "da_email "=>" [email protected] "," from_name "=>" Your Name "," to "=> array (array (" email "=> $ email)))); // Invia richiesta $ ch = curl_init ($ url); curl_setopt ($ ch, CURLOPT_POST, true); curl_setopt ($ ch, CURLOPT_POSTFIELDS, json_encode ($ messageData)); curl_setopt ($ ch, CURLOPT_SSLVERSION, 3); curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_exec ($ ch); 

Nel codice precedente, tutto ciò che stiamo facendo è preparare tutti i dati e creare la richiesta di messaggi JSON da inviare all'API Mandrill; è necessario inviare la chiave API, l'oggetto e il messaggio dell'email, l'indirizzo e-mail / nome e l'indirizzo dell'email.

Per il messaggio, stiamo usando i comandi di template incorporati di Slim, e quindi usiamo la richiesta POST arricciare e json_encode per compilare i dati in JSON.

Quindi, creiamo il file del modello email.php (all'interno della cartella views). Puoi inserire tutto ciò che vuoi qui, visto che è analizzato come un normale modello Slim, e restituiamo semplicemente l'HTML reso:

 

Grazie per il vostro acquisto

Puoi scaricare il file qui.

Ho appena aggiunto un'intestazione con un link al file. Se tutto è andato bene, il tuo sito dovrebbe funzionare pienamente.


Conclusione

In questo articolo abbiamo esaminato il processo di creazione di una fattura e di gestione dei pagamenti. Bitcoin può sembrare un po 'scoraggiante per iniziare, ma come puoi vedere, è molto più semplice di quanto si possa pensare, anche più semplice di altre opzioni di pagamento nella maggior parte dei casi.

So che questa potrebbe essere una delle demo più costose da provare, quindi ho ottenuto una foto esclusiva della talentuosa web designer Melissa Keizer che puoi acquistare nella demo se lo desideri.

Spero che questo articolo ti sia piaciuto e ti ringrazio per la lettura. Come sempre, se hai qualche domanda sentiti libero di lasciarmi un commento qui sotto, su twitter, o nel canale Nettuts + IRC su freenode.