更新:这是解决和工作代码粘贴在这篇文章的底部。我保留原文以便其他人可以阅读和关注。
我在使用PayPal时遇到了一个大问题,但我想我已经找到了问题所在。
看这个截图,它来自于客户在购买后被重定向到的pdt.php,它是一个真实的,用真实的签证做的:http://snag.gy/5XCvA.jpg
我在顶部打印了整个TX-id以便调试,在这里我可以看到item_number1=54, quantity1=1和item_name1=Introduktionsföreläsning。
问题是这些没有显示在Product, ID和Antal(Product, ID和Quantity)下,而这些是用来呈现给客户的。这是因为我的变量是这样设置的:
$item_number = $response[item_number];
$item_name = $response[item_name];
$qty = $response[quantity];
当他们需要为每个产品获取"++:ed"到item_number1, item_number2等时,他们只会得到item_number。
我试着做了很多改变,例如:
for($idx = 1; $idx < $count; $idx ++)
{
//$item_name .=$idx ++;
//$item_name = $item_name++;
echo ("<div class='abouttext'>Produkt: ".$item_name."</div>'n");
echo ("<div class='abouttext'>ID: ".$item_number."</div>'n");
echo ("<div class='abouttext'>Antal: ".$qty."</div>'n");
echo ("<br />");
}
在注释行中,我试图将一个数字附加到item_name,但当我需要它为item_name1等时,我只得到"1"或什么都没有作为答案。
这是我的PDT脚本:但我很确定它可以在代码区域修复:http://pastebin.com/L2nyT9q7$array_keys = array_keys($response);
$count = 1;
foreach($array_keys as $element)
{
if (!strncmp('item_number', $element, strlen('item_number')))
$count++;
}
for($idx = 1; $idx < $count; $idx ++)
{
if (isset($string1) && 'item_name' != null)
{
//$item_name .=$idx ++;
//$item_name = $item_name++;
echo ("<div class='abouttext'>Produkt: ".$item_name."</div>'n");
echo ("<div class='abouttext'>ID: ".$item_number."</div>'n");
echo ("<div class='abouttext'>Antal: ".$qty."</div>'n");
echo ("<br />");
}
}
也:我在一些论坛上读过与有类似问题的人,他们已经得到回复使用item_nameX作为变量名,我也试过了,没有任何其他结果。如果我硬编码$item_number = $response[item_number1];
<-在我指定1的地方,我将得到正确的细节。我已经测试过了
$array_keys = array_keys($response);
$count = 1;
$i = 1;
foreach($array_keys as $element)
{
if (!strncmp('item_number', $element, strlen('item_number')))
$count++;
}
for($idx = 1; $idx < $count; $idx ++ & $i++)
{
$item_number = $response[item_number . $i];
$item_name = $response[item_name . $i];
$qty = $response[quantity . $i];
echo ("<div class='abouttext'>Produkt: ".$item_name."</div>'n");
echo ("<div class='abouttext'>ID: ".$item_number."</div>'n");
echo ("<div class='abouttext'>Antal: ".$qty."</div>'n");
echo ("<br />");
}
我已经重写并清理了你的一些代码。这是未经测试的,但希望它能让你朝着正确的方向前进。
$product_ids = array(1,3,5,7,9,11,13,15,17,18,19,20,21,22,24,26,27,28,29,30,31,33,41,43,45,47,49,51,54,55,57,58);
$msg = '';
$num_items = 0;
if ( array_key_exists('num_cart_items', $response) )
$num_items = intval($response['num_cart_items']);
if ( !empty($num_items) )
{
$string1 = 'item_name';
$string2 = 'item_number';
$firstname = $response['first_name'];
$lastname = $response['last_name'];
$total = $response['mc_gross'];
for ($i = 1; $i <= $num_items; $i++)
{
$item_number = $response['item_number'.$i];
$item_name = $response['item_name'.$i];
$qty = $response['quantity'.$i];
$id = $response['item_number'.$i];
// do something with these vars since they change every iteration through the loop and only exist within the scope of the loop.
if ( in_array($item_number, $product_ids) ) {
$msg = '<p><div id="bold">Produkter tillgängliga för nerladdning/lyssning</div></p><br>';
}
}
}
echo '
<div id="wrapper">
<div id="welcomeText">Tack för ditt köp!</div>
<div class="abouttext3">Har du köpt produkter som ska laddas ned, laddar du ned dem NU till din dator. <br> Du har endast möjlighet att ladda ned från just den här sidan.<br>
Stanna kvar på sidan tills du laddat ned ALLT du köpt. <br>OBS! Om du stänger ned sidan har du inte möjlighet att komma tillbaka till den.<br>
Har du köpt en lyssning av ”Guidning till förlåtelse” lyssnar du på den HÄR och NU. <br> Var kvar på sidan tills du lyssnat klart. <br> OBS!
Om du stänger ned sidan har du inte möjlighet att komma tillbaka till den. <br />
Har du köpt varor som levereras med Posten, skickas de så snart som möjligt från oss. <br> Allra senast inom en vecka.
</div>
<div class="abouttext2">Vi önskar Dig en bra dag. <br>
Välkommen tillbaka till energyshop.se när du vill!
</div>'
. $msg; // If item_number matches any product that is for download/listetning, then print this headline