Hallo daar! Vandaag gaan we Paypal combineren met PHP om de betalingen op uw website eenvoudig te verwerken.
Voor deze tutorial heeft u een Premier PayPal-account en een online website. Begin met naar paypal.com te gaan en klik op "aanmelden" bovenaan de pagina.
Klik Begin onder de Premier titel; u wordt doorgestuurd naar een aanmeldingsformulier. Vul alstublieft alle nodige informatie in. Wanneer uw account is aangemaakt, logt u in en gaat u verder met stap 2.
In deze stap gaan we inschakelen Directe betalingskennisgeving (IPN), dus als je ingelogd bent, klik dan Profiel en kies dan Directe betalingskennisgeving
Nu op het volgende scherm ziet u dat IPN is ingesteld op "uit"; Klik "Bewerk" om dat te veranderen.
Aan het begin van deze tutorial meldde ik dat u een online website nodig zou hebben. Waarom? Welnu, we gaan PayPal vragen ons gegevens te sturen wanneer een betaling is voltooid. PayPal kan geen lokale gehoste websites bereiken tenzij u alle instellingen correct hebt geconfigureerd. (Dit houdt in het openen van poorten op uw router). Dus ik zal de url van mijn validatiescript invoeren, bijvoorbeeld http://www.uwdomein.com/PayPal/ipn.php. PayPal plaatst dan een melding op mijn server op de URL die ik heb opgegeven.
Oké, nu hebben we een eenvoudige en eenvoudige html-pagina nodig waar uw bezoeker toegang tot uw downloadgebied kan kopen.
Ik ga niet alle HTML uitleggen, omdat ik denk dat je de basisprincipes van HTML moet kennen voordat je met PHP begint.
index.php - Een eenvoudige HTML-pagina met een stylesheet.
Nettuts.com | Koop toegang tot het downloadgebied Koop toegang
Klik op de onderstaande knop om inloggegevens voor het downloadgebied te ontvangen.
Heb je al een account? Hier inloggen.
css / style.css - Een eenvoudige stylesheet voor onze HTML-pagina.
body background: # 2D2D2D; / * Set Website Achtergrondkleur * / font: 11px 'Verdana'; / * Websitedekengrootte en lettertype instellen * / #wrap margin: 0 auto; / * Centreer onze inhoud * / width: 500px; / * Stel de breedte in voor onze inhoud * / achtergrond: #FFF; / * Inhoud achtergrondkleur instellen * / opvulling: 10px; / * Padding instellen voor inhoud * / border: 1px solid # 000; / * Een rand rond de inhoud toevoegen * /
We moeten een aankoopknop maken, dus klik alstublieft Merchant Services, en kies danWebsitebetalingen standaard
U kunt drie soorten knoppen kiezen, Verkoop losse items, Verkoop meerdere items en, Abonnement. In deze tutorial gaan we nu een enkel item maken. Wanneer iemand dit ene item koopt, in dit geval toegang tot een downloadgebied. Zodra de betaling is gevalideerd, ontvangt u een e-mail met daarin de gegevens.
Laten we wat informatie invoeren voor onze aankoopknop; je mag de rest laten zoals hij is.
Als u klaar bent met het invullen van elke sectie, genereert u de code. Kopieer deze code naar uw klembord en plak deze dan in de klembordindex.php - waar ik de opmerking op de html-pagina heb toegevoegd. Lees stap 3, indien nodig, door.
Dit zou perfect moeten werken. Gebruikers kunnen op de knop klikken en hun aankoop voltooien.
Maak eerst ipn.php, zodat we kunnen beginnen met schrijven. We gebruiken een klein fragment dat ik heb gemaakt met een groter fragment dat u kunt vinden op de website van Paypal.
Let op: er is geen reden om deze code uit je hoofd te leren! Fragmenten zijn handig en besparen tijd. Ik zal het hieronder opsplitsen.
$ waarde) $ value = urlencode (stripslashes ($ value)); $ req. = "& $ key = $ value"; // post terug naar PayPal-systeem om $ header = "POST / cgi-bin / webscr HTTP / 1.0 \ r \ n" te valideren; $ header. = "Inhoudstype: application / x-www-form-urlencoded \ r \ n"; $ header. = "Content-Length:". strlen ($ req). "\ R \ n \ r \ n"; $ fp = fsockopen ('ssl: //www.paypal.com', 443, $ errno, $ errstr, 30); if (! $ fp) // HTTP ERROR else fputs ($ fp, $ header. $ req); while (! feof ($ fp)) $ res = fgets ($ fp, 1024); if (strcmp ($ res, "VERIFIED") == 0) // BETALING GEVALIDEERD & GEVERIFIEERD! else if (strcmp ($ res, "INVALID") == 0) // BETALING INVALID & ONDERZOEK MANUALY! fclose ($ fp); ?>
Vul de juiste inloggegevens voor uw database in zodat we de gegevens in de volgende stap kunnen invoegen.
PayPal POSTS-gegevens naar de url die we hebben opgegeven. In dit voorbeeld hebben we alleen het e-mailadres van de koper nodig, zodat we hem zijn inloggegevens kunnen toesturen. Deze code hierboven zal de gegevens lezen die PayPal verzendt en de informatie terugsturen naar PayPal. Ik heb twee opmerkingen toegevoegd waarin de code moet verschijnen als deze is gevalideerd. Daarnaast heb ik ook een opmerking toegevoegd die aangeeft wat moet worden gedaan als het niet gevalideerd is.
Nu gaan we ons concentreren op wat er moet gebeuren als de betaling wordt geverifieerd. Eerst moeten we een MySQL-tabel maken waarin we de gebruikersinformatie opslaan. Gewoon een simpele met een id, email en wachtwoordveld.
Vervolgens moeten we onze tabeldetails invoeren; we hebben een ID kaart met een primaire sleutelkeuze en deze zou automatisch moeten worden verhoogd; volgende een e-mail en wachtwoord veld-.
Voor degenen onder u heeft u niet de tijd om al deze informatie in te voeren, hieronder vindt u een kleine MySQL Dump-code om de tabel opnieuw te maken.
MAAK TAFEL 'users' ('id' int (10) NOT NULL auto_increment, 'email' varchar (50) NOT NULL, 'password' varchar (32) NOT NULL, PRIMARY KEY ('id')) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
Open ipn.php nog een keer. We gaan de volgende code schrijven onder de regel "// PAYMET VALIDATED".
Onze eerste stap is om het e-mailadres van de koper op te halen; PayPal stuurt al deze informatie naar ipn.php.
// BETALING GEVALIDEERD & GEVERIFIEERD! $ email = $ _POST ['betaler_email'];
We moeten één laatste variabele maken - dat is het wachtwoord dat we met php genereren.
// BETALING GEVALIDEERD & GEVERIFIEERD! $ email = $ _POST ['betaler_email']; $ wachtwoord = mt_rand (1000, 9999);
Zoals je kunt zien, hebben we mt_rand gebruikt om een willekeurig wachtwoord te genereren - in dit geval een numerieke waarde tussen 1000 en 9999. Vervolgens moeten we deze gegevens in onze database invoegen. Om dit te doen gebruiken we de MySQL-invoegvraag.
// BETALING GEVALIDEERD & GEVERIFIEERD! $ email = $ _POST ['betaler_email']; $ wachtwoord = mt_rand (1000, 9999); mysql_query ("VOEG IN IN gebruikers (email, wachtwoord) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ wachtwoord).' ') ") of sterf (mysql_error ());
Hier vertellen we ons script om de e-mail en het wachtwoord in onze database in te voegen. Ik heb een mysql_escape_string toegevoegd om ervoor te zorgen dat mysql-injectie niet mogelijk is. Ik heb ook de md5-functie aan ons wachtwoord toegevoegd, zodat het als een hash-bestand met 32 tekens wordt opgeslagen. Nu is het account gemaakt; laten we verdergaan naar de volgende stap.
We moeten een code schrijven die de login-informatie naar de koper e-mailt. Om dit te bereiken, zullen we de php-mailfunctie gebruiken.
// BETALING GEVALIDEERD & GEVERIFIEERD! $ email = $ _POST ['betaler_email']; $ wachtwoord = mt_rand (1000, 9999); mysql_query ("VOEG IN IN gebruikers (email, wachtwoord) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ wachtwoord).' ') ") of sterf (mysql_error ()); $ to = $ email; $ subject = 'Downloadgebied | Inloggegevens'; $ message = 'Bedankt voor uw aankoop Uw accountgegevens ------------------------- E-mail:'. $ email. ' Wachtwoord: '. $ Wachtwoord.' ------------------------- Je kunt nu inloggen op http://yourdomain.com/PayPal/ '; $ headers = 'Van: [email protected]'. "\ R \ n"; mail ($ to, $ subject, $ message, $ headers);
Laten we deze e-mailfunctie onderbreken. We gebruiken de variabele $ email om het e-mailadres van de gebruiker te krijgen en toe te wijzen aan de variabele $ to.
Het variabele $ -onderwerp is de titel / het onderwerp dat u in uw e-mailprogramma ziet. Hierna hebben we onze boodschap, die een bedankbriefje en de accountinformatie zal bevatten. De variabelen $ email en $ password in het bericht veranderen in de juiste informatie zodra de e-mail is verzonden. We hebben ook een aangepaste header ingesteld. Wanneer de gebruiker de e-mail ontvangt, wordt het "van" -adres weergegeven als "[email protected]".
Een ongeldige betaling kan plaatsvinden vanwege fraude, maar ook vanwege een probleem met PayPal; dus we willen ervoor zorgen dat onze klant krijgt waar hij voor betaald heeft.
Dus we gaan een e-mail sturen naar onze sitebeheerder en hem vertellen om contact op te nemen met de koper voor meer informatie. Kopieer eenvoudig de e-mailcode die we eerder hebben gebruikt en breng vervolgens de onderstaande wijzigingen aan.
// BETALING INVALID & HANDLEIDING VOOR ONDERZOEK! $ to = '[email protected]'; $ subject = 'Downloadgebied | Ongeldige betaling '; $ message = 'Beste beheerder, er is een betaling gedaan, maar deze is gemarkeerd als ONGELDIG. Controleer de betaling handmatig en neem contact op met de koper. E-mailadres van de koper: '. $ Email. "; $ Headers =' From: [email protected] '." \ R \ n "; mail ($ to, $ subject, $ message, $ headers);
Deze code is bijna hetzelfde als hierboven, alleen hebben we een aantal wijzigingen aangebracht in de ontvanger, het onderwerp en het bericht.
Dit is onze laatste stap, waar we een eenvoudig inlogformulier voor onze kopers bouwen. Maak een nieuw php-bestand en geef het een naam login.php. We gebruiken dezelfde HTML-pagina als gebruikt voor de index.php, alleen zullen we wat aanpassingen aanbrengen aan de inhoud van de pagina, en natuurlijk een beetje styling toevoegen aan ons inlogformulier.
login.php - Dit is de pagina waarop onze kopers kunnen inloggen.
Nettuts.com | Log in Log in
Voer uw inloggegevens in om toegang te krijgen tot het downloadgebied
Toevoegen aan style.css
label display: block; / * Zorg dat het label op één regel staat * / marge: 3px; / * Maak een afstand van de invoervelden * / invoer opvulling: 3px; / * Geef de tekst wat meer ruimte * / rand: 1px effen grijs; / * Voeg een rand toe rondom de invoervelden * / marge: 3px; / * Maak een beetje afstand van de labels * /
Nu we ons formulier hebben gemaakt, moeten we controleren of de aanmeldingsgegevens correct zijn. Ik heb een paar wijzigingen aangebracht in login.php, zodat we aan de slag kunnen:
Nettuts.com | Log in Log in
Voer uw inloggegevens in om toegang te krijgen tot het downloadgebied
De bovenstaande code controleert of e-mail en wachtwoord beide zijn gepost. Als dit waar is, kunnen we de inloggegevens verifiëren. Zo niet, dan geven we een foutmelding. De volgende code die we gaan schrijven, wordt onder "// Verifiëren" geplaatst. Eerst moeten we de postvariabelen omzetten in lokale variabelen.
$ email = mysql_escape_string ($ _ POST ['email']); $ wachtwoord = md5 ($ _ POST ['wachtwoord']);
Ik heb een escape-functie toegevoegd om mysql-injectie te voorkomen en heb het geposte wachtwoord omgezet in een md5-hash. Omdat we dit in onze database hebben gedaan, moeten we ook het wachtwoord van de gebruiker hashen om de twee waarden correct te kunnen vergelijken. Nu is het tijd om de gegevens te verifiëren.
$ email = mysql_escape_string ($ _ POST ['email']); $ wachtwoord = md5 ($ _ POST ['wachtwoord']); $ gUser = mysql_query ("SELECT * FROM users WHERE. $ email." "AND. $ password." "LIMIT 1") of sterven (mysql_error ()); $ verify = mysql_num_rows ($ gUser); if ($ verify> 0) echo 'Inloggen voltooid
Klik hier om ons programma te downloaden
'; else echo 'Aanmelden mislukt
Sorry, uw inloggegevens zijn onjuist. ';
Zoals u ziet, gebruiken we een mysql-query en selecteren we alle gegevens uit onze gebruikerstabel - maar alleen de rij waar het e-mailadres van de gebruiker overeenkomt met die uit de database.
mysql_num_rows controleert of een overeenkomst is gevonden: 1 = waar; 0 = false.
En dat is het einde van deze tutorial. Ik hoop dat je het leuk vond, en voel je vrij om een reactie achter te laten met je gedachten. Heb tips die kunnen helpen?