更新:已解决此问题并且工作代码已贴在本帖子的底部。我保留原始帖子,其他人可以阅读并遵循。
我遇到了与PayPal一起生活的一个大问题,但我认为我找到了这个问题。
请看这个屏幕截图,它来自pdt.php,客户在购买后被重定向到真正的签名,真实签证:http://snag.gy/5XCvA.jpg
我在顶部打印了整个TX-id进行调试,在这里我可以看到item_number1 = 54,quantity1 = 1和item_name1 =Introduktionsföreläsning。
问题是这些不会在Produkt,ID和Antal(产品,标识和数量)下显示,而这些产品曾用于呈现给客户。这是因为我的变量设置如下:
$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_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];
&lt; - 我指定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 />");
}
答案 0 :(得分:2)
我已经重写并清理了一些代码。 这是未经测试的,但希望它会让你朝着正确的方向前进。
$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