Probleme mit Paypal SetExpressCheckout bei der Verwendung von NVP API ASP.net

Hi,
Ich bin der Umsetzung der Integration zwischen meine Facebook-Spiel und Paypal express-Kaufabwicklung-Zahlung-service.

Meiner website entwickelt ASP.net und ich bin mit NVP-API für die integration.

MEIN problem ist, dass ich immer die 10400 Fehler - Um Insgesamt fehlt.

Mein code ist:

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

Den code der ShortcutExpressCheckout Methode ist:

public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg, List<KeyValuePair<string, string>> 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;
    }
}

Den Wunsch erzeugt der code ist:

 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

Und die Antwort, die ich erhalte ist:

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

Ich überprüfte die Dokumentation, die paypal bietet, und viele Beiträge über dieses Problem, aber ich konnte Sie nicht finden, was mache ich falsch.

Jede Hilfe wird dankbar sein,

Koby

InformationsquelleAutor Koby Mizrahy | 2011-09-01
Schreibe einen Kommentar