我有一个IPN脚本可以执行许多操作,现在它从PayPal获取数据并使用它向客户发送邮件收据。 PayPal有一个IPN模拟器,可让您模拟购买并发送这些邮件,每次只能发送一个item_name /一个产品。今天我的解决方案正在为至少一种产品工作,但我不知道购买多种产品会发生什么。测试这一点的唯一方法是使用真实的VISA进行实时支付。
我的PDT脚本有一个类似的问题,它更容易测试,因为我可以更新用户在我更改并上传新文件后重定向到的pdt.php页面,但这是一个电子邮件,所以我不能这样做。
我的想法是为每个循环计数创建一个空数组并使用循环/每个产品将当前变量(item_name)添加到数组中,然后在发送邮件时包含数组内容所以所有项目/产品显示。这可能吗?我已经玩了一段时间,但不能完成山雀,要么打印“数组”或“”空白。
今天是我的IPN脚本:http://pastebin.com/ysUsfGyf
我认为将此关键区域编辑为类似的内容,我所做的是将计数器设置为0($ j = 0),实例化一个空数组($ arr = array();)并尝试插入item_name,每个循环计数到数组[j],应该是0 1 2 3,依此类推。然后在撰写邮件时,我添加了一行:$ message。=“$ arr”;但我没有得到任何好结果,只有空或作为“数组”。
$array_keys = array_keys($ipn_post_data);
$count = 1;
$i = 1;
$j = 0;
$arr = array();
foreach($array_keys as $element)
{
if (!strncmp('item_number', $element, strlen('item_number')))
$count++;
}
for($idx = 1; $idx < $count; $idx ++ & $i++)
{
$name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
$arr[$j] = $name;
}
我可以在此脚本或调试中更改哪些内容以解决此问题?
答案 0 :(得分:0)
工作代码:
// send user an email with a confirmation
$array_keys = array_keys($ipn_post_data);
$count = 1;
$i = 1;
$j = 0;
$arr = array();
foreach($array_keys as $element)
{
if (!strncmp('item_number', $element, strlen('item_number')))
$count++;
}
for($idx = 1; $idx < $count; $idx ++ & $i++ & $j++)
{
$name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
$arr[$j] = $name;
}
$arrstring = implode( ', ', $arr);
以及之后$message .= "$arrstring";