Rešeno, hvala Blues!
Najveći problem nije bila greška u kodu ili nešto slično, već ljudska greška. Naime IPN je po defaultu isključen (stupid) što meni nije rečeno. Zato je svaki moj zahtev bio usluživan sa index stranicom.
Kod funkcije je:
PHP kôd:
/**
* OK, verify payment
*
* @access public
* @param void
* @return null
*/
function paypal_notify() {
// Prepare query
$query = array('cmd=_notify-validate');
// Fill it with POST vars
foreach ($_POST as $key => $val) {
$query[] = $key . '=' . urlencode($val);
} // foreach
// And join as string
$query = implode('&', $query);
// Init curl...
$ch = curl_init();
// Prepare curl
curl_setopt($ch, CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_POST, true);
//curl_setopt($ch, CURLOPT_POSTFIELDSIZE, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute and close...
$result = curl_exec($ch);
curl_close($ch);
if($result == 'VERIFIED') {
$this->finish_order(false);
} // if
// Done here...
die();
} // paypal_notify
Mala adaptacije gore navedenog koda, curl only varijanta. Konstanta CURLOPT_POSTFIELDSIZE više ne postoji (iz nekog razloga) pa je ta linija zakomentarisana. To je manje više to, radi posao kao zmaj.