Archief - paypal IPN: betaling altijd mislukt

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

ReBirTh

Legacy Member
is er iemand die me hier eens wat wegwijs in wil/kan maken?
Ik heb een scriptje gevonden dat normaal gezien het resultaat van een paypal betaling zou moeten kunnen binnenhalen, en waar je dan een opdracht kan aan toevoegen wanneer de betaling gelukt is.
Op de dev site van paypal staat een tool waarmee je zo'n ipn ding kan testen, maar als ik dat doe, krijg ik altijd maar de melding dat de betaling mislukte, terwijl die tool een gelukte betaling doorgeeft. Is er iemand met wat kennis die me kan vertellen wat er mis kan zijn in dit script? (Of in mijn manier van werken)

PHP:
<?php
/*
Simple IPN processing script
based on code from the "PHP Toolkit" provided by PayPal
*/

$url = 'https://www.paypal.com/cgi-bin/webscr';
$postdata = '';
foreach($_POST as $i => $v) {
	$postdata .= $i.'='.urlencode($v).'&';
}
$postdata .= 'cmd=_notify-validate';

$web = parse_url($url);
if ($web['scheme'] == 'https') { 
	$web['port'] = 443;  
	$ssl = 'ssl://'; 
} else { 
	$web['port'] = 80;
	$ssl = ''; 
}
$fp = @fsockopen($ssl.$web['host'], $web['port'], $errnum, $errstr, 30);

if (!$fp) { 
	echo $errnum.': '.$errstr;
} else {
	fputs($fp, "POST ".$web['path']." HTTP/1.1\r\n");
	fputs($fp, "Host: ".$web['host']."\r\n");
	fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
	fputs($fp, "Content-length: ".strlen($postdata)."\r\n");
	fputs($fp, "Connection: close\r\n\r\n");
	fputs($fp, $postdata . "\r\n\r\n");

	while(!feof($fp)) { 
		$info[] = @fgets($fp, 1024); 
	}
	fclose($fp);
	$info = implode(',', $info);
	if (eregi('VERIFIED', $info)) { 
		echo "betaling gelukt"; 
	} else {
		echo "betaling mislukt";
	}
}
?>

hier staat trouwens de gewone url van paypal, maar kheb om te testen de sandbox url gebruikt.

Boddah

Legacy Member
Ik heb enkel ervaring met de ASP.NET variatie voor PayPal, maar wat ik wel heb ondervonden is dat de sandbox versie niet identiek is met de live versie. Wanneer ik mijn websites test, gebruik ik altijd een tweede paypal account en werk ik met zeer kleine bedragen (bv 0.05&#8364;).

Ik neem aan dat de profiel settings op je paypal account ook in orde zijn? Je moet er (onder andere) onder 'Voorkeuren webwinkelbetalingen' de retour-url opgeven van je verwerk-pagina.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan