Bitcoin-betalingsverwerking toevoegen aan uw website

Bitcoin is absoluut meer mainstream geworden en met zijn wereldwijde bereik en minimale kosten is het een betaalmethode die het overwegen waard is.

In dit artikel zullen we een blik werpen op wat Bitcoin is, en ook hoe we ze in uw toepassingen gaan accepteren.


Wat is Bitcoin?

De eerste dingen eerst, wat is Bitcoin? Voor de niet-vertrouwde, Bitcoin is een peer-to-peer valuta, ontwikkeld om de behoefte aan een derde partij vertrouwde autoriteit te verwijderen, en in plaats daarvan vertrouwen op intrinsieke beveiliging door middel van cryptografische hashes.

Door een centrale autoriteit (een overheid, een bank, enz.) Te verwijderen, verlaagt u de kosten en verlaagt u de vereisten. Het is niet nodig om formulieren in te vullen of de salarissen van mensen te betalen, dus in zekere zin stelt het geld zichzelf veilig.

Ik ga niet in op de details, maar in essentie wordt elke keer dat er een geldoverboeking plaatsvindt, het geld ondertekend met de sleutels van beide partijen en vervolgens gehashed, en deze transacties worden toegevoegd aan het globale logboek. Hierdoor kunnen munten publiekelijk worden getraceerd en wordt gekeken of het geld echt van iemand is of niet.


Voordelen nadelen

Laten we nu eens kijken naar enkele van de voor- en nadelen van het gebruik van Bitcoin:

voordelen:

  • Iedereen kan het wereldwijd gebruiken.
  • Enigszins anoniem.
  • Minimale kosten.
  • Geen installatie vereist.

nadelen:

  • De waarde van de munten fluctueert.
  • Niet zo mainstream als andere opties (CC, Paypal).

De voordelen volgen allemaal een soortgelijk patroon, omdat er geen centrale autoriteit is, iedereen kan het op elk moment gebruiken zonder enige bevestiging of aanvaarding, plus de kosten zijn vrij laag.

Nu zijn de nadelen gevarieerd. Omdat het niet zo mainstream is als andere betaalmogelijkheden, denk ik niet dat het precies daar is waar het moet zijn, om het uw enige betaalmogelijkheid te maken. Maar in ieder geval, als je een groot voorstander bent en dit wilt laten groeien, kun je een Bitcoin-only service zijn, maar ik zou willen voorstellen om het nu te gebruiken naast een andere dienst, die creditcard accepteert.

Het andere nadeel is de stabiliteit van de waarde van Bitcoin; aan het begin van dit jaar was de waarde van één bitcoin ongeveer 12-14 $ elk, in slechts een paar maanden tijd gingen de munten omhoog naar bijna 240 $ in april en zijn ze momenteel ongeveer 110-115 $ per stuk waard. Dit is in groot contrast met de traditionele valuta, want je geld heeft een waardestijging van 2000% en vervolgens een daling van 50%, alles binnen een paar maanden lijkt een rode vlag te zijn.

met dank aan blockchain.info

Het is moeilijk te zeggen, als dit slechts een bi-product is van het hebben van een gedecentraliseerde valuta, of als het te wijten is aan de kinderschoenen van het programma, maar het is zeker een punt van zorg.

Gelukkig kunnen de meeste Bitcoin-processors, zoals degene die ik in dit artikel zal gebruiken, je onmiddellijk de Bitcoins of een deel ervan in gewone valuta, zoals dollars, omzetten. U kunt bijvoorbeeld instellen dat 80% van de Bitcoins die binnenkomen, onmiddellijk moet worden geconverteerd en naar uw bankrekening worden overgebracht, waarbij dit risico-element wordt verwijderd.

Uiteindelijk kun je zowel winnen als verliezen van deze fluctuaties, dus het is aan jou om te beslissen of je wilt gokken en meer van het in Bitcoins wilt achterlaten, of al het risico wilt verwijderen en alles wilt converteren.

Er zijn een paar populaire services rond dat werk zoals Coinbase, BitPay, etc. maar degene die ik in dit artikel ga gebruiken is BIPS.


Het gebouw

In dit artikel zullen we een eenvoudige landingspagina bouwen, waar u uw e-mailadres kunt invoeren en op 'kopen' kunt klikken om naar de betaalpagina te gaan. Op de betaalpagina krijgt u een Bitcoin-portefeuilleadres waar u het geld naartoe kunt sturen, en zodra u betaalt, ontvangt u het artikel dat u via e-mail hebt gekocht.

Deze drie fasen zijn volledig gescheiden, zoals bij alle betalingsopties, maar het valt hier meer op, omdat u niet direct kunt betalen van het aankoopformulier en moet betalen met uw eigen persoonlijke Bitcoin-portemonnee.

Voor deze app zal ik Slim gebruiken om een ​​beetje structuur te bieden, Mandrill voor het verzenden van het product en, zoals ik al zei, BIPS als betalingsverwerker om de Bitcoin-kant van de dingen te implementeren.


De opzet

Dus om Slim te installeren, maakt u een composer.json bestand met het volgende:

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

Ren dan componist installeren (ervan uitgaande dat je componist hebt geïnstalleerd) om de afhankelijkheden te installeren.

Maak vervolgens een openbaar map met een index.php bestand erin en a keer bekeken map.

Uw structuur zou er ongeveer zo uit moeten zien:

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

Open nu de index.php bestand en laten we de Slim-app instellen:

  "… /keer bekeken" ));

We hebben de autoloader nodig, en dan instantiëren we de Slim-bibliotheek, tot nu toe alleen maar boilerplate. Laten we vervolgens de thuisroute toevoegen die een standaard HTML-pagina is met het formulier om een ​​aankoop te starten:

 $ app-> get ('/', functie () gebruik ($ app) $ app-> render ('home.php'););

En dan moeten we het toevoegen home.php bekijk het bestand zelf naar de keer bekeken map:

    Bitcoin-app    

Koop Dit

Dit is een geweldig aanbod dat je dit ding moet kopen

Niets bijzonders, eigenlijk gewoon een formulier om de e-mail van de gebruiker in te dienen.

Het laatste stukje installatie dat we moeten voltooien, is aanmelden voor zowel BIPS als Mandrill (als u het gebruikt) en API-sleutels genereren voor beide. In BIPS gaat u naar de Handelaar tab en genereer een factuur API sleutel, en voor Mandrill ga je naar de SMTP & API-referenties pagina om een ​​nieuwe API-sleutel te genereren.


Een factuur maken

Tot nu toe hebben we een basisformulier dat de e-mail van een gebruiker via een POST-aanvraag zal indienen, de volgende stap is om die e-mail te nemen en er een factuur voor te genereren.

Laten we een postroute toevoegen aan de index.php bestand, dat een API-aanroep genereert om een ​​nieuwe factuur te maken en de gebruiker ernaar verwijst:

 $ app-> post ('/', functie () gebruik ($ 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-> redirect ($ invoiceUrl););

Er zijn een aantal dingen die hier opgemerkt moeten worden. Het API-token dat u genereerde voor het maken van facturen, is bijvoorbeeld de 'gebruikersnaam' in de HTTP-verificatie. De POST-velden die we verzenden zijn als volgt:

  • prijs - de prijs van het object (een int of float-waarde).
  • valuta - een valuta-afkorting zoals USD, GBP, EUR of BTC voor prijzen in Bitcoin zelf.
  • item - de naam van het item, dit is optioneel, maar het zal op de factuur verschijnen.
  • gewoonte - een JSON-gecodeerde reeks met aangepaste gegevens die u aan de factuur wilt toevoegen. Wat hier wordt gespecificeerd, wordt teruggegeven zodra de gebruiker betaalt, dus u kunt interne referentienummers of sleutels aan een database toevoegen, in ons voorbeeld heb ik de e-mail gewoon geplaatst omdat we geen andere gegevens opslaan.

De API-aanroep retourneert alleen de URL naar de factuur zelf, dus we kunnen alleen het antwoord krijgen en er rechtstreeks naar verwijzen.

In tegenstelling tot andere betalingsopties, zoals een creditcard of PayPal, is er geen derde partij die de betaling verwerkt, dus u kunt niet alleen uw nummer invoeren of inloggen om te betalen. In plaats daarvan wordt een aangepaste portefeuille per transactie gemaakt en krijgt u 15 minuten om het bedrag dat in dat account is opgegeven, over te maken. Dit is waar ik het eerder over had, dat je met Bitcoin de verschillende stappen tijdens het betalingsproces meer opmerkt, dan zou je met zoiets als de one-click-aankoop op Amazon.

Aan de andere kant is het voordeel van een dergelijk systeem de aangeboren veiligheid die ontstaat zonder dat je iets hoeft te doen. U hoeft niet met creditcardnummers om te gaan of betalingen te verwerken, dus hoeft de site niet zo veilig te zijn, u maakt gewoon een nieuwe 'identiteit' of portemonnee aan en als het geld daar wordt overgemaakt, is de betaling met succes voltooid.


De aankoop voltooien

De laatste stap is om de daadwerkelijke aankoop af te handelen, zodra de betaling is voltooid. Hiervoor moet u een callback-URL en een geheime sleutel toevoegen op het verkoperstabblad van het BIPS-venster. Ik ga het gewoon naar de / IPN route, met een geheime sleutel van GEHEIME SLEUTEL.

De callback is een POST-aanvraag die alle informatie uit de aankoop bevat, samen met de aangepaste gegevens die u hebt doorgegeven en een hash om te verifiëren dat deze authentiek is. U verifieert de aankoop door SHA-512 hashing de transactiecode samen met het geheim dat u instelt in het admin paneel, en verifieert dat het overeenkomt met de berekende 'hash' in de callback's aanvraag:

 $ app-> post ('/ ipn', functie () gebruik ($ app) // Slim verzoek-object $ req = $ app-> request (); // Haal enkele variabelen uit de aanvraag $ email = $ req- > post ('aangepast') ['email']; $ transactionKey = $ req-> post ('transactie') ['hash']; $ invoiceHash = $ req-> post ('hash'); $ status = $ req-> post ('status'); // hash de transactie sleutel met het geheim $ secret = 'SECRETKEY'; $ hash = hash ("sha512", $ transactionKey. $ secret); // Verifieer het als ($ invoiceHash === $ hash && $ status == 1) // Betaald);

De transactiesleutel en het geheim worden gewoon aan elkaar toegevoegd en dan hashen we ze samen. Het laatste bit controleert gewoon of de status is 1 (wat betekent dat de betaling binnenkwam) en het controleren van de authenticiteit van de melding.

We hebben nu het adres van de gebruiker en we hebben een betalingsbevestiging, dus de laatste stap is om de gebruiker een soort item te sturen. Als u een abonnementsservice of een fysiek item opbouwt, kunt u de betaling van de gebruiker gewoon in een database vastleggen, maar als u dit artikel wilt afronden, gaan we kort kijken naar het verzenden van een artikel met Mandril.

 if ($ invoiceHash === $ hash && $ status == 1) // Mandrill URL + API key $ url = "https://mandrillapp.com/api/1.0/messages/send.json"; $ apiKey = "MANDRILL_API_KEY"; // Krijg e-mailsjabloon $ view = $ app-> view (); $ template = $ view-> fetch ("email.php"); // Bericht POST-gegevens $ messageData = array ("key" => $ apiKey, "message" => array ("html" => $ template, "subject" => "Bedankt voor uw aankoop :)", "from_email "=>" [email protected] "," from_name "=>" Uw naam "," naar "=> array (array (" email "=> $ email)))); // Verzendverzoek $ 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); 

In de bovenstaande code is alles wat we doen bezig alle gegevens gereed te maken en het JSON-berichtverzoek op te bouwen dat naar de Mandrill-API wordt verzonden; u moet de API-sleutel, het onderwerp en het bericht van de e-mail verzenden, de van e-mail / naam en voor wie de e-mail bestemd is.

Voor het bericht gebruiken we de ingebouwde sjabloonopdrachten van Slim en daarna POSTEN we het verzoek met Krul en json_encode om de gegevens in JSON te compileren.

Laten we vervolgens het sjabloonbestand maken email.php (in de map met weergaven). Je kunt hier zo ongeveer alles plaatsen dat je wilt, omdat het wordt geparseerd als een normale Slim-sjabloon en we de HTML-code retourneren:

 

Dank voor uw aankoop

Je kunt het bestand hier downloaden.

Ik heb zojuist een kop toegevoegd met een link naar het bestand. Als alles goed is gegaan, zou uw site volledig moeten werken.


Conclusie

In dit artikel hebben we het proces doorlopen van zowel het maken van een factuur als het afhandelen van betalingen. Bitcoin kan een beetje intimiderend lijken om mee te beginnen, maar zoals je ziet, is het veel eenvoudiger dan je zou denken, nog eenvoudiger dan andere betalingsopties in de meeste gevallen.

Ik weet dat dit een van de duurste demo's is om uit te proberen, dus ik heb een exclusieve foto gekregen van de getalenteerde webontwerper Melissa Keizer die je in de demo kunt kopen als je dat wilt.

Ik hoop dat je dit artikel leuk vond en bedankt voor het lezen. Zoals altijd, als je vragen hebt, kun je hieronder een reactie achterlaten, op Twitter of in het Nettuts + IRC-kanaal op freenode.