Php Paypal API NVP错误消息:如果提供了项目类别,则需要项目名称、金额和数量
有人能帮忙吗。我一直收到以下错误消息 SetExpressCheckout API调用失败。详细错误消息:项目名称, 如果提供了项目类别,则需要金额和数量。简短 错误消息:缺少参数错误代码:10003错误严重性代码: 错误“ 这就是paypalfunctions.php文件中的内容Php Paypal API NVP错误消息:如果提供了项目类别,则需要项目名称、金额和数量,php,mysql,paypal,paypal-nvp,Php,Mysql,Paypal,Paypal Nvp,有人能帮忙吗。我一直收到以下错误消息 SetExpressCheckout API调用失败。详细错误消息:项目名称, 如果提供了项目类别,则需要金额和数量。简短 错误消息:缺少参数错误代码:10003错误严重性代码: 错误“ 这就是paypalfunctions.php文件中的内容 $PROXY_HOST = '127.0.0.1'; $PROXY_PORT = '808'; $SandboxFlag = false; $API_UserName="******"; $API_Passwor
$PROXY_HOST = '127.0.0.1';
$PROXY_PORT = '808';
$SandboxFlag = false;
$API_UserName="******";
$API_Password="******";
$API_Signature="******";
// BN Code is only applicable for partners
$sBNCode = "PP-ECWizard";
if ($SandboxFlag == true)
{
$API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp";
$PAYPAL_URL = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=";
}
else
{
$API_Endpoint = "https://api-3t.paypal.com/nvp";
$PAYPAL_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=";
}
$USE_PROXY = false;
$version="93";
if (session_id() == "")
session_start();
function SetExpressCheckoutDG( $grossAmount, $paymentType, $vatAmount, $returnURL, $cancelURL, $currencyCodeType, $items )
{
$itemsTotal = 0;
$vatTotal = 0;
foreach($items as $index => $item)
{
$nvpstr .= "&L_PAYMENTREQUEST_0_NAME" . $index . "=" . urlencode($item["name"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_AMT" . $index . "=" . urlencode($item["amt"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_QTY" . $index . "=" . urlencode($item["qty"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_TAXAMT" . $index . "=" . urlencode($item["vat"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_ITEMCATEGORY" . $index . "=Physical";
$nvpstr .= "&L_PAYMENTREQUEST_0_DESC" . $index . "=APN Event";
$itemsTotal = $itemsTotal + ($item["amt"] * $item["qty"]);
$vatTotal = $vatTotal + ($item["vat"] * $item["qty"]);
}
$nvpstr .= "&PAYMENTREQUEST_0_ITEMAMT=" . $itemsTotal;
$nvpstr .= "&PAYMENTREQUEST_0_TAXAMT=" . $vatTotal; //tax amount
$nvpstr .= "&PAYMENTREQUEST_0_AMT=". $grossAmount; //total cost of items inc tax
$nvpstr .= "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType;
$nvpstr .= "&RETURNURL=" . $returnURL;
$nvpstr .= "&CANCELURL=" . $cancelURL;
$nvpstr .= "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType;
$nvpstr .= "&REQCONFIRMSHIPPING=0";
$nvpstr .= "&NOSHIPPING=1";
$_SESSION["currencyCodeType"] = $currencyCodeType;
$_SESSION["PaymentType"] = $paymentType;
$resArray=hash_call("SetExpressCheckout", $nvpstr);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
{
$token = urldecode($resArray["TOKEN"]);
$_SESSION['TOKEN']=$token;
}
return $resArray;
}
非常感谢您的帮助。错误是其中一个事件的价格为0,导致了问题。通过在填充数组之前添加零测试进行修复。根据paypals文档,您不能只通过0个正数或负数。显然,生成的最终请求字符串不包括所有e item details。发布生成的原始API请求的示例,我可以帮助您找出缺少的内容。感谢您的响应,我最终找到了答案。我尝试在items array=>amt中发送的值之一是0。根据paypals文档,您不能传递0个正数或负数。
$PROXY_HOST = '127.0.0.1';
$PROXY_PORT = '808';
$SandboxFlag = false;
$API_UserName="******";
$API_Password="******";
$API_Signature="******";
// BN Code is only applicable for partners
$sBNCode = "PP-ECWizard";
if ($SandboxFlag == true)
{
$API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp";
$PAYPAL_URL = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=";
}
else
{
$API_Endpoint = "https://api-3t.paypal.com/nvp";
$PAYPAL_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=";
}
$USE_PROXY = false;
$version="93";
if (session_id() == "")
session_start();
function SetExpressCheckoutDG( $grossAmount, $paymentType, $vatAmount, $returnURL, $cancelURL, $currencyCodeType, $items )
{
$itemsTotal = 0;
$vatTotal = 0;
foreach($items as $index => $item)
{
$nvpstr .= "&L_PAYMENTREQUEST_0_NAME" . $index . "=" . urlencode($item["name"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_AMT" . $index . "=" . urlencode($item["amt"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_QTY" . $index . "=" . urlencode($item["qty"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_TAXAMT" . $index . "=" . urlencode($item["vat"]);
$nvpstr .= "&L_PAYMENTREQUEST_0_ITEMCATEGORY" . $index . "=Physical";
$nvpstr .= "&L_PAYMENTREQUEST_0_DESC" . $index . "=APN Event";
$itemsTotal = $itemsTotal + ($item["amt"] * $item["qty"]);
$vatTotal = $vatTotal + ($item["vat"] * $item["qty"]);
}
$nvpstr .= "&PAYMENTREQUEST_0_ITEMAMT=" . $itemsTotal;
$nvpstr .= "&PAYMENTREQUEST_0_TAXAMT=" . $vatTotal; //tax amount
$nvpstr .= "&PAYMENTREQUEST_0_AMT=". $grossAmount; //total cost of items inc tax
$nvpstr .= "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType;
$nvpstr .= "&RETURNURL=" . $returnURL;
$nvpstr .= "&CANCELURL=" . $cancelURL;
$nvpstr .= "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType;
$nvpstr .= "&REQCONFIRMSHIPPING=0";
$nvpstr .= "&NOSHIPPING=1";
$_SESSION["currencyCodeType"] = $currencyCodeType;
$_SESSION["PaymentType"] = $paymentType;
$resArray=hash_call("SetExpressCheckout", $nvpstr);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
{
$token = urldecode($resArray["TOKEN"]);
$_SESSION['TOKEN']=$token;
}
return $resArray;
}