我正在为iDev联盟paypal IPN做一些自定义工作,我正在尝试为退款项目设置一个问题。我的数据库工作正常,但我似乎无法获得IF捕获权。
有关我应该将其更改为什么的任何建议?
if($_REQUEST["payment_status"] == "refunded"||$testing==1)
{
$email = $_REQUEST["payer_email"];
$sid = $_REQUEST["subscr_id"];
$tid = $_REQUEST["txn_id"];
if (!$tid)
{
$tid='xxx';
}
if ($testing==1)
{
echo "testing on";
$sid = "I-E5E34E0DTMUS";
}
$query = "SELECT * FROM idevaff_sales WHERE tid1='$tid'";
$result = mysql_query($query);
if (!$result)
{
//echo $query; exit;
mail('***@gmail.com',"1",$query);
}
$arr = mysql_fetch_array($result);
$aid = $arr['id'];
$query = "SELECT * FROM idevaff_affiliates WHERE tid1='$tid'";
$result = mysql_query($query);
if ($result)
{
//echo $query;
mail('***@gmail.com',"2","$query");
}
$arr = mysql_fetch_array($result);
$email = $arr['email'];
$f_name = $arr['f_name'];
mail($email,"Affiliate Message - A refund has granted for recent affiliate commission.","Dear $f_name, \n\n Message here about refund" );
$query = "UPDATE idevaff_sales SET approved=3 WHERE tracking='$sid'";
$result = mysql_query($query);
if (!$result)
{
//echo $query; exit;
mail('***@gmail.com',"3","$query");
}
}
哈德森
答案 0 :(得分:7)
以下是我最终成功使用的内容:
if($_REQUEST["payment_status"] == "Refunded" || $_REQUEST["payment_status"] == "Reversed" || $testing==1)
{
/*do database work here*/
}
答案 1 :(得分:5)
我目前正在与PayPal协商此事。 问题是,有时你会得到这一系列的消息:
有时你会得到这个:
有时你会得到这个:
因此,除非PayPal同意实施我的解决方案,以便在后一个例子(几年前就是这种情况)中的Refunded之前总是发送Canceled_Reversal,或者提出另一个解决方案来提供一些确定性,你需要使用自己的机制不要重复计算退款。
如果您将交易存储在数据库中,以下内容可能非常可靠,来自我的POV:
if (($stat == 'Refunded' || $stat == 'Reversed') && !empty($_POST['parent_txn_id']))
{
$sum = $db->query('SELECT SUM(`mc_gross`) FROM `transactions` WHERE `parent_txn_id`= ?', $_POST['parent_txn_id'])->fetchColumn();
if ($sum && $sum < 0) {
// already had reversed/refunded call,
// ignore this one
}
}