Утилита класса в весеннее приложение - следует ли использовать статические методы или нет?

Допустим, у меня есть утилиты DateutiL (см. Ниже). Использовать этот метод Метод вызывающего абонента использует DateutiLS.GETDATEANSSTRING (ADATE). Было бы лучше удалить Статический модификатор и сделайте весаты Весной Фасоль (см. DateutiLSBean) и ввести его в вызову классов Или просто оставьте это как есть?

Один недостаток, который я могу видеть с использованием статических проблем вокруг издевательства, см. Как издеваться со статическими методами?

public class DateUtils {

    public static String getDateAsString(Date date) {       
        String retValue =  "" // do something here using date parameter
        return retValue;
    }
}

Версия Spring Bean

@Component
public class DateUtilsBean {

    public String getDateAsString(Date date) {      
        String retValue =  "" // do something here using date parameter
        return retValue;
    }
}

-

Проблемы с помощью SetExpressCheckeckout PayPal при использовании NVP API в ASP.NET Привет, Я реализую промежуточность между моей игрой Facebook и платежным платежом PayPal's Express Checkout. Мой сайт разработан в ASP.NET, и я использую NVP API для интеграции. Мой ...

Привет, Я реализую промежуточность между моей игрой Facebook и платежным платежом PayPal's Express Checkout.

Мой сайт разработан в ASP.NET, и я использую NVP API для интеграции.

Моя проблема заключается в том, что я продолжаю получать ошибку 10400 - пропущено всего заказа.

Мой код:

// Set the key/value pairs to send in the request
var kvpl = new List>();
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_PAYMENTACTION", "Sale"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_AMT", "23.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_ITEMAMT", "15.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_TAXAMT", "5.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_SHIPPINGAMT", "1.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_HANDLINGAMT", "1.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_INSURANCEAMT", "1.00"));
kvpl.Add(new KeyValuePair("PAYMENTREQUEST_0_CURRENCYCODE", "ILS"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_NAME0", "The name of product 1"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_NUMBER0", "5543312"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_DESC0", "The description of product 1"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_AMT0", "10.00"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_QTY0", "1"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_NAME1", "The name of product 2"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_NUMBER1", "4431234"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_DESC1", "The description of product 2"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_AMT1", "5.00"));
kvpl.Add(new KeyValuePair("L_PAYMENTREQUEST_0_QTY1", "1"));     
kvpl.Add(new KeyValuePair("ALLOWNOTE", "1"));
kvpl.Add(new KeyValuePair("NOSHIPPING", "1"));

// SetExpressCheckout
bool ret = test.ShortcutExpressCheckout(amt, ref token, ref retMsg, kvpl);

// Check return value
if (ret)
{
    // Success, store the token in the session and redirect to Paypal
    session["token"] = token;
    Response.Redirect( retMsg );
}
else
{
    // Something went wrong
    Response.Redirect("APIError.aspx?" + retMsg);
}

Код метода ShortcutexpressCheckout:

public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg, List> customParams)
{
    string host = "www.paypal.com";
    if (bSandbox)
    {
        pendpointurl = "https://api-3t.sandbox.paypal.com/nvp";
        host = "www.sandbox.paypal.com";
    }

    string returnURL = "http://localhost:50020/" + "ConfirmPayment.aspx";
    string cancelURL = "http://localhost:50020/" + "CancelPayment.aspx";

    var encoder = new NVPCodec();
    encoder["VERSION"] = "72.0";
    encoder["METHOD"] = "SetExpressCheckout";        
    encoder["RETURNURL"] = returnURL;
    encoder["CANCELURL"] = cancelURL;

    if (customParams != null)
    {
        customParams.ForEach(kvp => encoder[kvp.Key] = kvp.Value);
    }

    string pStrrequestforNvp = encoder.Encode();
    string pStresponsenvp = HttpCall(pStrrequestforNvp);

    var decoder = new NVPCodec();
    decoder.Decode(pStresponsenvp);

    string strAck = decoder["ACK"].ToLower();
    if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
    {
        token = decoder["TOKEN"];

        string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&token=" + token;

        retMsg = ECURL;
        return true;
    }
    else
    {
        retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                 "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                 "Desc2=" + decoder["L_LONGMESSAGE0"];

        return false;
    }
}

Запрос, сгенерированный кодом, является:

 METHOD=SetExpressCheckout&
 VERSION=72.0&
 RETURNURL=[removed]&
 CANCELURL=[removed]&
 PAYMENTREQUEST_0_PAYMENTACTION=Sale&
 PAYMENTREQUEST_0_AMT=23.00&
 PAYMENTREQUEST_0_ITEMAMT=15.00&
 PAYMENTREQUEST_0_TAXAMT=5.00&
 PAYMENTREQUEST_0_SHIPPINGAMT=1.00&
 PAYMENTREQUEST_0_HANDLINGAMT=1.00&
 PAYMENTREQUEST_0_INSURANCEAMT=1.00&
 PAYMENTREQUEST_0_CURRENCYCODE=ILS&
 L_PAYMENTREQUEST_0_NAME0=The+name+of+product+1&
 L_PAYMENTREQUEST_0_NUMBER0=5543312&
 L_PAYMENTREQUEST_0_DESC0=The+description+of+product+1&
 L_PAYMENTREQUEST_0_AMT0=10&L_PAYMENTREQUEST_0_QTY0=1&
 L_PAYMENTREQUEST_0_NAME1=The+name+of+product+2&
 L_PAYMENTREQUEST_0_NUMBER1=4431234&
 L_PAYMENTREQUEST_0_DESC1=The+description+of+product+2&
 L_PAYMENTREQUEST_0_AMT1=5.00&
 L_PAYMENTREQUEST_0_QTY1=1.00&
 ALLOWNOTE=1&
 NOSHIPPING=1

и ответ, который я получаю:

TIMESTAMP=2011%2d09%2d01T12%3a23%3a19Z&
CORRELATIONID=cf89eeaa101ae&
ACK=Failure&
VERSION=2%2e3&
BUILD=2085867&
L_ERRORCODE0=10400&
  L_SHORTMESSAGE0=Transaction%20refused%20because%20of%20an%20invalid%20argument%2e%20See%20additional%20error%20messages%20for%20details%2e&
L_LONGMESSAGE0=Order%20total%20is%20missing%2e&
L_SEVERITYCODE0=Error

Я рассмотрел документацию, которая PayPal предоставляет и много постов об этой проблеме, но я не смог найти то, что я делаю не так.

Любая помощь будет оценена,

Кобы

9
задан Koby Mizrahy 1 September 2011 в 16:00
поделиться