1

更新:这已解决,工作代码粘贴在这篇文章的底部。我保留原始帖子,以便其他人可以阅读和关注。

我在使用 PayPal 时遇到了很大的问题,但我认为我已经找到了问题所在。

看看这张截图,它来自 pdt.php,客户在购买后被重定向到,它是真实的,用真实的签证做的:http ://snag.gy/5XCvA.jpg

我在顶部打印了整个 TX-id 以进行调试,在这里我可以看到 item_number1=54、quantity1=1 和 item_name1=Introduktionsföreläsning。

问题是这些不会显示在用于呈现给客户的 Produkt、ID 和 Antal(产品、ID 和数量)下。这是因为我的变量设置如下:

$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 />");
        }
4

1 回答 1

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
于 2013-05-15T19:28:07.537 回答