Gå til innhold

Instant Payment Notification PHP-script


Anbefalte innlegg

Heisann!

 

Er det noen som har peiling på IPN-systemet til paypal?

Jeg er usikker på hvordan jeg skal få php-scriptet mitt til å kjøre SQL spørringen etter en paypal betaling.

 

Har stressa med dette i mange timer nå.

 

Takker for svar!

Legg meg gjerne til på skype om du vil hjelpe:

bloodysquito1

Lenke til kommentar
Videoannonse
Annonse

1. Betaling kommer inn (paypal sender deg en txn_id).

2. Du må sjekke mot en tabell om betalingen har blitt fullført før, da søker du tabellen etter txn_id som matcher den du fikk fra paypal.

3. Hvis betalingen ikke er gjort før oppdaterer du tabellen med txn_id.

 

På denne måten sikrer du systemet.

 

Her er mitt skript som sjekker om betalingen er godkjent:

    	$req = 'cmd=_notify-validate';

   	foreach ($_POST as $key => $value) 
   	{
       	$value = urlencode(stripslashes($value));
       	$req .= "&$key=$value";
   	}


       	$socket = $this->socket = 'ssl' ? 'https' : 'http';
       	$url	= $socket.'://www.'. (Vars::$conf->payments->live ? '': 'sandbox.' ).'paypal.com/cgi-bin/webscr';

       	$ch = curl_init(); // Starts the curl handler
       	curl_setopt($ch, CURLOPT_URL,$url); // Sets the paypal address for curl
       	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // Returns result to a variable instead of echoing
       	curl_setopt($ch, CURLOPT_TIMEOUT, 15); // Sets a time limit for curl in seconds (do not set too low)
       	curl_setopt($ch, CURLOPT_POST, 1); // Set curl to send data using post
       	curl_setopt($ch, CURLOPT_POSTFIELDS, $req); // Add the request parameters to the post
       	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
       	curl_setopt($ch, CURLOPT_HEADER, false);
       	curl_setopt($ch, CURLOPT_USERAGENT, 'cURL/PHP');

       	$result = curl_exec($ch); // run the curl process (and return the result to $result
       	curl_close($ch);

       	if (strcmp ($result, "VERIFIED") == 0) // It may seem strange but this function returns 0 if the result matches the string So you MUST check it is 0 and not just do strcmp ($result, "VERIFIED") (the if will fail as it will equate the result as false)
       	{
           	$qr1 = $this->db->query("SELECT transactionid FROM orders_successful WHERE transactionid = '".mysql_real_escape_string($this->txn_id)."'");
           	$nr = $this->db->numRows($qr1);
       	}
       	else 
       	{
           	return false;
       	} 
	if($this->payment_status == "Completed" && $this->receiver_email == Vars::$conf->payments->pp_user && $this->mc_currency == "USD" && $nr == 0)
	{
		return true;
	}
return false;

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...