我正在使用经典的API并且可以做大多数事情但是我遇到了一个我似乎无法解决的问题。我正在使用PHP并且在我获得成功" ACK"来自GetExpressCheckoutDetails我尝试循环响应数组以获取多个项目,但它不接受我的代码。 我可以var_dump响应数组,它清楚地显示键和值,我可以测试值的输出,它看起来像这样
Item Name = L_PAYMENTREQUEST_0_NUMBER0
Item Name = 45065
Item Name = L_PAYMENTREQUEST_0_NUMBER1
Item Name = 16030
我的for循环看起来像这样 在哪里" $ httpParsedResponseAr"是来自PayPal的响应数组
$index = 0;
foreach ($httpParsedResponseAr as $key => $value){
if ($key == 'L_PAYMENTREQUEST_0_NAME{$index}'){
echo '<tr> ';
echo '<td align="center" bgcolor="#39AD43">
<p>Item Name = '.$key.'</p>
<p>Item Name = '.$value.'</p>
</td>';
echo '</tr>';'
}
$index++;
}
上面没有返回任何内容,
它会让我&#34;硬编码&#34;像下面的键字符串,并返回正确的值
$index = 0;
foreach ($httpParsedResponseAr as $key => $value){
if ($key == 'L_PAYMENTREQUEST_0_NAME0'){
echo '<tr> ';
echo '<td align="center" bgcolor="#39AD43">
<p>Item Name = '.$key.'</p>
<p>Item Name = '.$value.'</p>
</td>';
echo '</tr>';'
}
$index++;
}
我的问题是我不知道响应中包含了多少项(添加到买家购物车中)所以不知道要使用多少索引号,这就是foreach循环的原因。
我也试过这个
if ($key == 'L_PAYMENTREQUEST_0_NAME'.$index){
如何检索这些多个值?
我已尝试过字符串的所有不同组合,但它们无效。我做错了什么?
提前致谢
答案 0 :(得分:1)
index
增量运算符放错地方,我已将'L_PAYMENTREQUEST_0_NAME{$index}'
替换为L_PAYMENTREQUEST_0_NAME$index
或者您也可以使用"L_PAYMENTREQUEST_0_NAME{$index}"
。
试试这对我有用:
$index = 0;
foreach ($httpParsedResponseAr as $key => $value){
if ($key == "L_PAYMENTREQUEST_0_NAME$index"){
echo '<tr>';
echo '<td align="center" bgcolor="#39AD43">
<p>Item Name = '.$key.'</p>
<p>Item Value= '.$value.'</p>
</td>';
echo '</tr>';
$index++;
}
}
这是我在SETEC中传递的内容:
. "&METHOD=SetExpressCheckout"
. "&VERSION=115.0"
. "&RETURNURL=http://localhost/justbuy/ec_check.php"
. "&CANCELURL=http://localhost/justbuy/ec_check.php"
. "&PAYMENTREQUEST_0_CURRENCYCODE=USD"
. "&PAYMENTREQUEST_0_ITEMAMT=99.30"
. "&PAYMENTREQUEST_0_TAXAMT=2.58"
// . "&localecode=zh_HK"
. "&PAYMENTREQUEST_0_AMT=101.88"
. "&PAYMENTREQUEST_0_CURRENCYCODE=USD"
. "&PAYMENTREQUEST_0_PAYMENTACTION=Sale"
. "&SOLUTIONTYPE=Sole"
. "&L_PAYMENTREQUEST_0_NAME0=1 Decaf Kona Blend Coffee "
. "&L_PAYMENTREQUEST_0_NUMBER0=623083"
. "&L_PAYMENTREQUEST_0_QTY0=1"
. "&L_PAYMENTREQUEST_0_AMT0=9.95 "
. "&L_PAYMENTREQUEST_0_QTY0=2"
. "&L_PAYMENTREQUEST_0_NAME1=Coffee Filter bags "
. "&L_PAYMENTREQUEST_0_NUMBER1=623084"
. "&L_PAYMENTREQUEST_0_QTY1=1"
. "&L_PAYMENTREQUEST_0_AMT1=39.70"
. "&L_PAYMENTREQUEST_0_QTY1=2";
以及我打印GETEC回复时的响应: