Bruk PayPal's Instant Payment Notification med PHP

Hei der! I dag skal vi kombinere Paypal med PHP for å muliggjøre enkel behandling av betalinger på nettstedet ditt.


Ferdig produkt: Forhåndsvisning

Trinn 1 - Opprette en PayPal-konto

For denne opplæringen trenger du a Premier PayPal-konto og en online nettsted. Begynn med å gå til paypal.com og klikk på "registrering" øverst på siden.

Klikk Kom i gang under Premier Tittel; Du blir omdirigert til et registreringsskjema. Vennligst fyll ut all nødvendig informasjon. Når kontoen din er opprettet, logg inn og gå videre til trinn 2.

Trinn 2 - Aktiver IPN

I dette trinnet skal vi aktivere Instant Payment Notification (IPN), så mens du er logget inn, vennligst klikk Profil og velg deretter Instant Payment Notification

Nå på neste skjerm ser du at IPN er satt til "av"; klikk "Redigere" å endre det.

I begynnelsen av denne opplæringen nevnte jeg at du trenger en nettside på Internett. Hvorfor? Vel, vi skal spørre PayPal for å sende oss data når en betaling er fullført. PayPal kan ikke nå lokale vertsbaserte nettsteder, med mindre du har alle innstillinger konfigurert riktig. (Dette innebærer å åpne porter på ruteren). Så, jeg legger inn nettadressen til valideringsskriptet, for eksempel http://www.yourdomain.com/PayPal/ipn.php. PayPal sender da et varsel til serveren min, på nettadressen jeg har angitt.

Trinn 3 - Bygg en enkel HTML-side

Ok, nå trenger vi en enkel og grunnleggende HTML-side der din besøkende kan kjøpe tilgang til nedlastingsområdet.
Jeg skal ikke forklare all HTML fordi jeg tror du burde kjenne grunnleggende HTML før du starter med PHP.

index.php - En enkel HTML-side med et stilark.

    Nettuts.com | Kjøp tilgang til nedlastingsområdet    

Kjøpstilgang

Vennligst klikk på knappen nedenfor for å motta innloggingsdetaljer for nedlastingsområdet.
Har du allerede en konto? Logg inn her.

css / style.css - Et enkelt stilark for vår HTML-side.

 kropp bakgrunn: # 2D2D2D; / * Angi nettstedets bakgrunnsfarge * / font: 11px 'Verdana'; / * Angi nettside skriftstørrelse og skrifttype * / #wrap margin: 0 auto; / * Senter Vårt innhold * / bredde: 500px; / * Angi bredden for vårt innhold * / bakgrunn: #FFF; / * Angi innhold Bakgrunnsfarge * / polstring: 10px; / * Set Padding For Content * / border: 1px solid # 000; / * Legg til en kant rundt innholdet * /

Trinn 4 - Bygg en PayPal-knapp

Vi må opprette en kjøpsknapp, så vennligst klikk Merchant Services, og velg deretterNettsted Betalingsstandard

Du kan velge tre typer knapper, Selg enkelte gjenstander, Selg flere elementer og, Abonnement. Nå i denne opplæringen skal vi lage et enkelt element. Når noen kjøper dette enkelte elementet, i dette tilfellet tilgang til et nedlastingsområde. Når betalingen er bekreftet, vil en epost bli sendt med detaljer.

La oss legge inn litt informasjon for kjøpsknappen vår; du kan la resten ligge som den er.

Når du er ferdig med å fylle ut hver del, generer du koden. Kopier denne koden til utklippstavlen, og lim den inn iindex.php - der jeg la til kommentaren i html-siden. Vennligst gå gjennom trinn 3 om nødvendig.

Dette skal fungere perfekt. Brukere kan klikke på knappen og fullføre kjøpet.

Trinn 5 - Skrive ipn.php

Først opprett ipn.php slik at vi kan begynne å skrive. Vi bruker en liten utdrag som jeg laget fra en større utgave som du kan få fra Paypal nettside.
Vær oppmerksom på at det ikke er grunn til å lære denne koden ut av hodet ditt! Snippets er hendige og spare tid. Jeg vil bryte den ned nedenfor.

  $ verdi) $ value = urlencode (stripslashes ($ value)); $ req. = "& $ key = $ value";  // legge tilbake til PayPal-systemet for å validere $ header = "POST / cgi-bin / webscr HTTP / 1.0 \ r \ n"; $ header. = "Innholdstype: Application / x-www-form-urlencoded \ r \ n"; $ header. = "Innholdslengde:". strlen ($ req). "\ R \ n \ r \ n"; $ fp = fsockopen ('ssl: //www.paypal.com', 443, $ errno, $ errstr, 30); hvis (! $ fp) // HTTP ERROR ellers fputs ($ fp, $ header. $ req); mens (! feof ($ fp)) $ res = fgets ($ fp, 1024); hvis (strcmp ($ res, "VERIFIED") == 0) // BETALING VALIDERT & VERIFISERT!  annet hvis (strcmp ($ res, "INVALID") == 0) // BETALING INVALID & UNDERSØK MANUALY!  fclose ($ fp); ?>

Vennligst fyll ut de riktige legitimasjonene for databasen din, slik at vi kan sette inn data i neste trinn.

PayPal POSTS data til webadressen vi angav. I dette eksemplet trenger vi bare e-postadressen fra kjøperen, slik at vi kan sende ham innloggingsinformasjonen hans. Denne koden ovenfor vil lese data PayPal sender og returnerer informasjonen til PayPal. Jeg har lagt til to kommentarer der koden skal komme hvis den er validert. I tillegg har jeg også lagt til en kommentar som angir hva som skal gjøres hvis det ikke er validert.

Trinn 6 - Opprette databasen

Nå skal vi fokusere på hva som skal skje hvis betalingen er verifisert. Først må vi bygge et MySQL-bord der vi lagrer brukerens informasjon. Bare en enkel med et ID-, e-post- og passordfelt.

Deretter må vi legge inn våre tabelldetaljer; vi trenger en ID med et primærnøkkelvalg og det skal automatisk øke; neste an e-post og passord felt.

For de av dere har ikke tid til å angi all denne informasjonen, er det nedenfor en liten MySQL Dump-kode for å gjenskape bordet.

 CREATE TABLE 'users' ('id' int (10) IKKE NULL auto_increment, 'email' varchar (50) IKKE NULL, 'passord' varchar (32) IKKE NULL, PRIMARY KEY ('id')) MOTOR = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1; 

Trinn 7 - Opprettelse av kontoer

Åpen ipn.php en gang til. Vi skal skrive følgende kode under "// PAYMET VALIDATED" -linjen.

Vårt første skritt er å hente e-postadressen til kjøperen; PayPal sender all denne informasjonen til ipn.php.

 // BETALING VALIDERT & VERIFISERT! $ email = $ _POST ['payer_email'];

Vi må opprette en siste variabel - som er passordet som vi genererer ved hjelp av php.

 // BETALING VALIDERT & VERIFISERT! $ email = $ _POST ['payer_email']; $ password = mt_rand (1000, 9999);

Som du kan se brukte vi mt_rand til å generere et tilfeldig passord - i dette tilfellet en numerisk verdi mellom 1000 og 9999. Deretter må vi sette inn disse dataene i vår database. For å gjøre det, bruker vi spørreundersøkelsen for mysql.

 // BETALING VALIDERT & VERIFISERT! $ email = $ _POST ['payer_email']; $ password = mt_rand (1000, 9999); mysql_query ("INSERT INTO users (email, passord) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ passord). "')") eller dø (mysql_error ());

Her forteller vi skriptet vårt for å sette inn e-postadressen og passordet i vår database. Jeg har lagt til en mysql_escape_string for å sikre at mysql-injeksjon ikke er mulig. Jeg har også lagt til md5-funksjonen til passordet vårt, slik at det blir lagret som en 32-tegn hash. Nå er kontoen opprettet; la oss gå videre til neste trinn.

Trinn 8 - Send innloggingsinformasjonen

Vi må skrive noen kode som vil sende inn påloggingsinformasjonen til kjøperen. For å oppnå dette, vil vi bruke php mail-funksjonen.

 // BETALING VALIDERT & VERIFISERT! $ email = $ _POST ['payer_email']; $ password = mt_rand (1000, 9999); mysql_query ("INSERT INTO users (email, passord) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ passord). "')") eller dø (mysql_error ()); $ til = $ email; $ subject = 'Last ned område | Logg inn legitimasjon '; $ message = 'Takk for ditt kjøp Din kontoinformasjon ------------------------- Email:'. $ email. ' Passord: '. $ Passord.' ------------------------- Du kan nå logge inn på http://yourdomain.com/PayPal/ '; $ headers = 'Fra: [email protected]'. "\ R \ n"; post ($ til, $ emne, $ melding, $ overskrifter);

La oss bryte denne e-postfunksjonen ned. Vi bruker variabelen $ email for å få brukerens e-postadresse og tilordne den til $ til variabelen.
Det variable $ -faget er tittelen / emnet som du vil se i e-postprogrammet ditt. Etter dette har vi vår melding, som vil inneholde en takknemmelse samt kontoinformasjonen. $ E-post og $ passordvariablene i meldingen vil endres til riktig informasjon når e-posten er sendt. Vi har også satt en egendefinert overskrift. Når brukeren mottar e-posten, vil "fra" -adressen vises som "[email protected]".

Trinn 9 - Ugyldig betalings-e-post

En ugyldig betaling kan oppstå på grunn av svindel, men også på grunn av et problem med PayPal; så vi vil sørge for at kunden får det han betalte for.
Så vi skal sende en e-post til vår nettsideadministrator, og fortelle ham å kontakte kjøperen for mer informasjon. Bare kopier e-postkoden vi brukte før, og gjør deretter endringene som er oppført nedenfor.

 // BETALING INVALID & UNDERSØK MANUELLT! $ til = '[email protected]'; $ subject = 'Last ned område | Ugyldig betaling '; $ message = 'Kjære Administrator, En betaling er utført, men flagget som UAKTIG. Vennligst bekreft betalingshåndboken og ta kontakt med kjøperen. Kjøper Email: '. $ Email.'; $ Headers = 'Fra: [email protected]'. "\ R \ n"; post ($ til, $ emne, $ melding, $ overskrifter);

Denne koden er nesten den samme som ovenfor, bare vi har gjort noen endringer i mottakeren, emnet og meldingen.

Trinn 10 - Brukerlogg

Dette er vårt siste steg, hvor vi bygger et enkelt innloggingsskjema for våre kjøpere. Lag en ny php-fil, og gi den navnet login.php. Vi bruker den samme HTML-siden som brukes til index.php, bare vi vil gjøre noen tilpasninger til innholdet på siden, og selvfølgelig må du legge til litt styling til vårt påloggingsskjema.

login.php - Dette er siden der våre kjøpere kan logge inn.

    Nettuts.com | Logg Inn    

Logg Inn

Vennligst skriv inn påloggingsinformasjonen din for å få tilgang til nedlastingsområdet

Legge til style.css

 etikett display: block; / * Kontroller at etiketten er på en enkelt linje * / margin: 3px; / * Lag litt avstand fra inntastingsfeltene * / input padding: 3px; / * Gi teksten litt mer plass * / kantlinje: 1px solid grå; / * Legg til en ramme rundt inntastingsfeltene * / margin: 3px; / * Lag litt avstand fra etikettene * /

Nå som vi har laget vårt skjema, må vi sjekke om innloggingsinformasjonen er riktig. Jeg har gjort noen endringer til login.php, slik at vi kan komme i gang:

    Nettuts.com | Logg Inn    

Logg Inn

Vennligst skriv inn påloggingsinformasjonen din for å få tilgang til nedlastingsområdet

Koden ovenfor vil sjekke om e-post og passord begge er lagt ut. Hvis sant, kan vi bekrefte legitimasjonene. Hvis ikke, returnerer vi en feil. Den neste koden vi skal skrive vil bli plassert under "// Verify". Først må vi slå postvariablene i lokale variabler.

 $ email = mysql_escape_string ($ _ POST ['email']); $ password = md5 ($ _ POST ['passord']);

Jeg har lagt til en rømningsfunksjon for å forhindre mysql-injeksjon og har transformert det oppførte passordet til en md5-hash. Fordi vi gjorde dette i vår database, må vi også hash brukerens passord for å sammenligne de to verdiene riktig. Nå er det på tide å verifisere dataene.

 $ email = mysql_escape_string ($ _ POST ['email']); $ password = md5 ($ _ POST ['passord']); $ gUser = mysql_query ("VELGE * FRA brukere der. $ email." "OG. $ passord." "LIMIT 1") eller dø (mysql_error ()); $ verifiser = mysql_num_rows ($ gUser); hvis ($ verifisere> 0) echo '

Logg inn Fullført

Klikk her for å laste ned vårt program

'; annet echo '

Innlogging feilet

Beklager at innloggingsinformasjonen din er feil. ';

Som du ser, kjører vi et mysql-spørring, og velger alle dataene fra vårt brukertabell - men bare raden der brukerens e-postadresse samsvarer med den fra databasen.
mysql_num_rows sjekker om en kamp er funnet: 1 = true; 0 = false.

Det er alt!

Og det er slutten på denne opplæringen. Jeg håper du likte det, og gjerne legge igjen en kommentar med dine tanker. Har noen tips som kan hjelpe?

  • Abonner på NETTUTS RSS-feed for flere daglige webutviklinger og artikler.