购物车和单笔交易的PayPal IPN项目选项和选择报告语法

购物车和单笔交易的PayPal IPN项目选项和选择报告语法,paypal,transactions,paypal-ipn,Paypal,Transactions,Paypal Ipn,我想从单笔交易和购物车交易中分析项目选项名称和选项选择值。IPN和PDT变量文档不清楚如何报告——或者如果报告——交易中每个项目的7个选项。文件说明(选项名称): 选项1您要求的名称。PayPal附加了 项目,其中x表示购物车详细信息项目的编号 (例如,选项名称1、选项名称2) 此说明中缺少项索引变量X。在任何情况下,对于购物车(项目#,选项#),索引需要是二维的,对于单个交易(选项#),索引需要是一维的。文档表明选项名称和选项选择仅对购物车交易有效,但这似乎是错误的 有人能为我澄清这两种事务类

我想从单笔交易和购物车交易中分析项目选项名称和选项选择值。IPN和PDT变量文档不清楚如何报告——或者如果报告——交易中每个项目的7个选项。文件说明(选项名称):

选项1您要求的名称。PayPal附加了 项目,其中x表示购物车详细信息项目的编号 (例如,选项名称1、选项名称2)

此说明中缺少项索引变量X。在任何情况下,对于购物车(项目#,选项#),索引需要是二维的,对于单个交易(选项#),索引需要是一维的。文档表明选项名称和选项选择仅对购物车交易有效,但这似乎是错误的


有人能为我澄清这两种事务类型的正确报告语法是什么吗?我将设置一个沙箱测试,以在任何情况下通过实验找出答案。

您没有提到您使用的语言,但这里有一个PHP代码片段,介绍如何解析PayPal标准订单的项目详细信息

$i = 1;
$cart_items = array();   
while(isset($_POST['item_number' . $i]))   
{   
    $item_number = isset($_POST['item_number' . $i]) ? $_POST['item_number' . $i] : '';   
    $item_name = isset($_POST['item_name' . $i]) ? $_POST['item_name' . $i] : '';   
    $quantity = isset($_POST['quantity' . $i]) ? $_POST['quantity' . $i] : '';  
    $mc_gross = isset($_POST['mc_gross_' . $i]) ? $_POST['mc_gross_' . $i] : 0;
    $mc_handling = isset($_POST['mc_handling' . $i]) ? $_POST['mc_handling' . $i] : 0;
    $mc_shipping = isset($_POST['mc_shipping' . $i]) ? $_POST['mc_shipping' . $i] : 0;
    $custom = isset($_POST['custom' . $i]) ? $_POST['custom' . $i] : '';   
    $option_name1 = isset($_POST['option_name1_' . $i]) ? $_POST['option_name1_' . $i] : '';   
    $option_selection1 = isset($_POST['option_selection1_' . $i]) ? $_POST['option_selection1_' . $i] : '';   
    $option_name2 = isset($_POST['option_name2_' . $i]) ? $_POST['option_name2_' . $i] : '';   
    $option_selection2 = isset($_POST['option_selection2_' . $i]) ? $_POST['option_selection2_' . $i] : '';
    $option_name3 = isset($_POST['option_name3_' . $i]) ? $_POST['option_name3_' . $i] : '';   
    $option_selection3 = isset($_POST['option_selection3_' . $i]) ? $_POST['option_selection3_' . $i] : '';
    $option_name4 = isset($_POST['option_name4_' . $i]) ? $_POST['option_name4_' . $i] : '';   
    $option_selection4 = isset($_POST['option_selection4_' . $i]) ? $_POST['option_selection4_' . $i] : '';
    $option_name5 = isset($_POST['option_name5_' . $i]) ? $_POST['option_name5_' . $i] : '';   
    $option_selection5 = isset($_POST['option_selection5_' . $i]) ? $_POST['option_selection5_' . $i] : '';
    $option_name6 = isset($_POST['option_name6_' . $i]) ? $_POST['option_name6_' . $i] : '';   
    $option_selection6 = isset($_POST['option_selection6_' . $i]) ? $_POST['option_selection6_' . $i] : '';
    $option_name7 = isset($_POST['option_name7_' . $i]) ? $_POST['option_name7_' . $i] : '';   
    $option_selection7 = isset($_POST['option_selection7_' . $i]) ? $_POST['option_selection7_' . $i] : '';
    $option_name8 = isset($_POST['option_name8_' . $i]) ? $_POST['option_name8_' . $i] : '';   
    $option_selection8 = isset($_POST['option_selection8_' . $i]) ? $_POST['option_selection8_' . $i] : '';
    $option_name9 = isset($_POST['option_name9_' . $i]) ? $_POST['option_name9_' . $i] : '';   
    $option_selection9 = isset($_POST['option_selection9_' . $i]) ? $_POST['option_selection9_' . $i] : '';

    $btn_id = isset($_POST['btn_id' . $i]) ? $_POST['btn_id' . $i] : '';

    $current_item = array(   
                           'item_number' => $item_number,   
                           'item_name' => $item_name,   
                           'quantity' => $quantity, 
                           'mc_gross' => $mc_gross, 
                           'mc_handling' => $mc_handling, 
                           'mc_shipping' => $mc_shipping, 
                           'custom' => $custom,   
                           'option_name1' => $option_name1,   
                           'option_selection1' => $option_selection1,   
                           'option_name2' => $option_name2,   
                           'option_selection2' => $option_selection2, 
                           'option_name3' => $option_name3, 
                           'option_selection3' => $option_selection3, 
                           'option_name4' => $option_name4, 
                           'option_selection4' => $option_selection4, 
                           'option_name5' => $option_name5, 
                           'option_selection5' => $option_selection5, 
                           'option_name6' => $option_name6, 
                           'option_selection6' => $option_selection6, 
                           'option_name7' => $option_name7, 
                           'option_selection7' => $option_selection7, 
                           'option_name8' => $option_name8, 
                           'option_selection8' => $option_selection8, 
                           'option_name9' => $option_name9, 
                           'option_selection9' => $option_selection9, 
                           'btn_id' => $btn_id
                          );   

    array_push($cart_items, $current_item);   
    $i++;   
} 
您将得到一个数组,$cart\u items,您可以轻松地通过该数组循环处理项目,无论一个购物车中只有一个项目还是多个项目


这段代码片段是从我的(相当旧,但仍然非常有用)中提取出来的。

谢谢,安德鲁-我在最初的搜索中确实看到了您的代码,但不太理解。我正在使用Salesforce APEX处理程序。从这段代码中,我发现可选购物车项目的语法是:option_nameN_X和option_selectionN_X,其中X是项目编号,N是选项编号(如果IPN变量使用与onN和osN HTML变量等效的相同语法,则为0-6)。这意味着可选的单项交易是:option_nameN和option_selectionN是否正确?再次感谢。注意:通过单笔交易和购物车交易,我区分了web_接受(立即购买、立即捐赠)和购物车(添加到购物车)按钮类型。购物车当然可以有单个项目,但对于我的应用程序,通常使用可选的单个捐赠交易(“捐赠”与“点击”)。好的!我研究了你的全部PHP代码,所有我感兴趣的东西都在那里。只剩下一个问题:选项编号N的范围是0-6还是1-7?PayPal每个项目只允许7个选项,但是HTML变量的范围是0-6。是的,这是PayPal中有时会出现的“为什么”问题之一。在本例中,他们在HTML中使用0-6,但在IPN中使用1-7。全面但不完整,高度结构化但不连贯。谢谢你的帮助。