<?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)) {
// yes valid, f.e. change payment status
}
} else {
// invalid, log error or something
}
}
?>Yes, there’s really no difference between this as a standalone script or as a snippet in MODx, other than you should return the output rather than echo()’ing it.
Thanks,
If I do this will paypal still be able to use the page as a IPN?
<?php
$web_users = $modx->getFullTableName('web_users');
$web_user_attributes = $modx->getFullTableName('web_user_attributes');
$web_groups = $modx->getFullTableName('web_groups');
$username = "mat1";
$password = "guest";
$cachepwd = time();
$newUser = "INSERT INTO ".$web_users." (`username`, `password`, `cachepwd`) VALUES ('".$username."', '".md5($password)."', '".$cachepwd."')";
$createNewUser = $modx->db->query($newUser);
$key = $modx->db->getInsertId();
$NewUser['internalKey'] = $key;
$newUserAttr = "INSERT INTO ".$web_user_attributes.
" (internalKey, fullname, email, phone, mobilephone, dob, gender, country, state, zip, fax, photo, comment) VALUES".
" ('".$key."', '".$fullname."', '".$email."', '".$phone."', '".$mobilephone."', '".$dob."', '".$gender."', '".$country."', '".$state."', '".$zip."', '".$fax."', '".$photo."', '".$comment."')";
$insertUserAttr = $modx->db->query($newUserAttr);
?>$webGroupId = "web users";
$modx->db->query("REPLACE INTO ".$web_groups." (`webgroup`, `webuser`) VALUES ('".$webGroupId."', '".$key."')");<input type="hidden" name="notify_url" value="http://test.com/notify_ipn">
function RemoveProfile($internalKey)
{
global $modx;
$deletedUser = $modx->getWebUserInfo($internalKey);
$web_users = $modx->getFullTableName(’web_users’);
$web_user_attributes = $modx->getFullTableName(’web_user_attributes’);
$web_groups = $modx->getFullTableName(’web_groups’);
$active_users = $modx->getFullTableName(’active_users’);
$deleteUser = $modx->db->query("DELETE FROM ".$web_users." WHERE `id`=’".$internalKey."’");
$deleteAttributes = $modx->db->query("DELETE FROM ".$web_user_attributes." WHERE `internalKey`=’".$internalKey."’");
$deleteFromGroups = $modx->db->query("DELETE FROM ".$web_groups." WHERE `webuser`=’".$internalKey."’");
$deleteFromActiveUsers = $modx->db->query("DELETE FROM ".$active_users." WHERE `internalKey`=’-".$internalKey."’");
if (!$deleteUser || !$deleteAttributes || !$deleteFromGroups || !$deleteFromActiveUsers)
{
return $this->FormatMessage($this->LanguageArray[13]);
}
$this->OnWebDeleteUser($internalKey, $deleteUser[’username’]);
return;
}
<?php
//delete user
$web_users = $modx->getFullTableName(’web_users’);
$web_user_attributes = $modx->getFullTableName(’web_user_attributes’);
$web_groups = $modx->getFullTableName(’web_groups’);
$active_users = $modx->getFullTableName(’active_users’);
$email = "[email protected]"; //this will be a paypal email
$checkEmail = $modx->db->query("SELECT * FROM ".$web_user_attributes." WHERE `email`=’".$email."’");
$limit = $modx->recordCount($checkEmail);
if ($limit > 0)
{
$internalKey = $checkEmail[’internalKey’];
}
echo "<script>alert(’$internalKey’);</script>";
$deleteUser = $modx->db->query("DELETE FROM ".$web_users." WHERE `id`=’".$internalKey."’");
$deleteAttributes = $modx->db->query("DELETE FROM ".$web_user_attributes." WHERE `internalKey`=’".$internalKey."’");
$deleteFromGroups = $modx->db->query("DELETE FROM ".$web_groups." WHERE `webuser`=’".$internalKey."’");
$deleteFromActiveUsers = $modx->db->query("DELETE FROM ".$active_users." WHERE `internalKey`=’-".$internalKey."’");
?>