Paypal:L_ERRORCODE0:10401订单总计无效且参数无效

Paypal:L_ERRORCODE0:10401订单总计无效且参数无效,paypal,paypal-sandbox,express-checkout,paypal-nvp,Paypal,Paypal Sandbox,Express Checkout,Paypal Nvp,我随后在我的应用程序中实现了paypal沙盒帐户。我的代码跨越3个jsp页面,如index.jsp->expresscheckout.jsp->paypalfunctions.jsp expresscheckout.jsp <%@ include file="paypalfunctions.jsp"%> <% String paymentAmount = "25"; String currencyCodeType = "USD"; String pay

我随后在我的应用程序中实现了paypal沙盒帐户。我的代码跨越3个jsp页面,如index.jsp->expresscheckout.jsp->paypalfunctions.jsp

expresscheckout.jsp

<%@ include file="paypalfunctions.jsp"%>
<%
    String paymentAmount = "25";

    String currencyCodeType = "USD";
    String paymentType = "Sale";



    String returnURL = "http://2.appid.appspot.com/sucess.jsp";

    String cancelURL = "http://2.appid.appspot.com/canceled.jsp";


    HashMap nvp = CallShortcutExpressCheckout(paymentAmount,
            currencyCodeType, paymentType, returnURL, cancelURL,
            session);
    String strAck = nvp.get("ACK").toString();
    if (strAck != null && strAck.equalsIgnoreCase("Success")) {
        //' Redirect to paypal.com
        RedirectURL(nvp.get("TOKEN").toString(), response);
    } else {


        String ErrorCode = nvp.get("L_ERRORCODE0").toString();
        String ErrorShortMsg = nvp.get("L_SHORTMESSAGE0").toString();
        String ErrorLongMsg = nvp.get("L_LONGMESSAGE0").toString();
        String ErrorSeverityCode = nvp.get("L_SEVERITYCODE0")
                .toString();
    }
%>

当我点击express checkout时,它会重定向到。 但在“您的订单摘要”中,没有显示当前的购买金额。 同样,在使用我的买家帐户登录并确认地址和付款后,my success.jsp页面中会显示以下错误消息:

时间戳:2012-09-18T06:07:32Z 相关ID:b4fe3695b410a 确认:失败 版本:84.0 建造:3622349 L_错误代码0:10401 L_SHORTMESSAGE0:由于参数无效,事务被拒绝。有关详细信息,请参阅其他错误消息。 L_LONGMESSAGE0:订单总数无效。 L_SEVERITYCODE0:错误

但当我打印我的名称-值对(nvp)时,它包含金额

NVPSTR===>&Amt=25&PAYMENTACTION=Sale&ReturnUrl=http%3A%2F%2F2.appid.appspot.com%2fsucces.jsp&CANCELURL=http%3A%2F%2F2.appid.appspot.com%2F Cancelled.jsp&CURRENCYCODE=USD


请解决或建议解决方案。

您必须在DoExpressCheckoutPayment API调用和SetExpressCheckout API调用中提交金额。目前,您未提交SetEC和DoEC的金额,仅提交SetEC的金额。(如果您没有将其设置为SetEC,您将永远不会获得令牌。)

除了不需要RETURNURL和CANCELURL之外,DoEC调用应该与SetEC调用基本相同

此外,除非您提交交易的行项目详细信息,否则金额不会显示在订单摘要下:

L_PAYMENTREQUEST_0_NAME0=Books 
L_PAYMENTREQUEST_0_AMT0=154.00 
L_PAYMENTREQUEST_0_NUMBER0=ABC123 
L_PAYMENTREQUEST_0_QTY0=2 
L_PAYMENTREQUEST_0_NAME1=CDs 
L_PAYMENTREQUEST_0_AMT1=50.00 
L_PAYMENTREQUEST_0_NUMBER1=BY-Z4736 
L_PAYMENTREQUEST_0_QTY1=3 
PAYMENTREQUEST_0_ITEMAMT=458.00 
PAYMENTREQUEST_0_SHIPPINGAMT=20.00 
PAYMENTREQUEST_0_TAXAMT=46.20 
PAYMENTREQUEST_0_AMT=524.20 
L_PAYMENTREQUEST_0_NAME0=Books 
L_PAYMENTREQUEST_0_AMT0=154.00 
L_PAYMENTREQUEST_0_NUMBER0=ABC123 
L_PAYMENTREQUEST_0_QTY0=2 
L_PAYMENTREQUEST_0_NAME1=CDs 
L_PAYMENTREQUEST_0_AMT1=50.00 
L_PAYMENTREQUEST_0_NUMBER1=BY-Z4736 
L_PAYMENTREQUEST_0_QTY1=3 
PAYMENTREQUEST_0_ITEMAMT=458.00 
PAYMENTREQUEST_0_SHIPPINGAMT=20.00 
PAYMENTREQUEST_0_TAXAMT=46.20 
PAYMENTREQUEST_0_AMT=524.20