我正在使用PayPal IPN脚本来处理我的新项目的订阅付款。一切似乎都很好,但出于某种原因,当付款处理和接受时,我的数据库就不会更新。
这是更新我的数据库的IPN脚本的一部分:
$p->add_field('cmd','_xclick-subscriptions');
$p->add_field('no_note','1');
$p->add_field('currency_code','USD');
$p->add_field('a3', "0.01");
$p->add_field('t3', "M");
$p->add_field('p3', "1");
$p->add_field('src', "1");
$p->add_field('sra', "1");
$p->add_field('business', "myemail@gmail.com");
$p->add_field('return', "http://myurl.com/");
$p->add_field('cancel_return', $this_script.'?action=cancel');
$p->add_field('notify_url', $this_script.'?action=ipn');
$p->add_field('item_name', "My Package Thing ($_POST[hash])");
$p->add_field('custom', "$_POST[hash]");
$p->submit_paypal_post();
//$p->dump_fields();
break;
case 'success':
echo "<html><head><title>Success</title></head><body><h3>Thank you for your order.</h3>";
echo "</body></html>";
break;
case 'cancel':
echo "<html><head><title>Canceled</title></head><body><h3>The order was canceled.</h3>";
echo "</body></html>";
break;
case 'ipn':
if ($p->validate_ipn()) {
include("config.php");
$select = mysql_query("UPDATE `mydb_accounts`.`accounts` SET `active` = '1' WHERE `accounts`.`hash` = '$_POST[hash]';") or die(mysql_error());
mysql_query($select);
} break; }
$_POST[hash]
工作正常,因为当“PayPal付款页面”出现时,会显示项目说明。
有什么想法?谢谢!
答案 0 :(得分:0)
确保配置文件中有mysql_connect(不仅要设置数据库信息)。
答案 1 :(得分:0)
建立了三次(针对不同的)系统的PayPal IPN处理程序,我可以确认大多数问题是由简单的PHP语法错误引起的,或者由于脚本输出丢失而无法看到的错误。 / p>
没有必要将任何输出添加到IPN处理程序中 - PayPal是唯一可以看到它们并丢弃它们的东西。
我的代码分为两部分:payment callback和core logic entity。始终尝试首先从浏览器打开回调处理程序以捕获任何语法或逻辑错误。然后使用硬编码测试替换回调 POST ,看看它是否有效。然后测试paypal沙箱。
我使用我的Emesary通知系统将消息发送到后端 - 但是你可以附加到日志文件等。