Merhaba, Facebook oyunum ve Paypal'ın ekspres ödeme ödeme hizmeti arasındaki geçişi uyguluyorum.Paypal SetExpressCheckout ile ilgili sorunlar ASP.net'de NVP API'sini kullanırken,
Web sitem ASP.net'de geliştirilmiştir ve entegrasyon için NVP API kullanıyorum.
Sorun şu ki, 10400 hatası almaya devam ediyorum - Sipariş Toplamı eksik.
My kodudur:
// 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);
}
ShortcutExpressCheckout yönteminin kodudur:
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;
}
}
kod tarafından oluşturulan istek:
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
Ve Ben alıyorum o yanıttır:
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
Ben paypal sağlar dokümantasyon ve bu konuda birçok mesajları gözden ama ben yanlış yapıyorum bulamadık. Eski bir sürümünü kullandığınız için
Herhangi bir yardım takdir edilecektir,
Koby
Eğer th gelip nasıl bir fikrin var mı e sürümü doğru şekilde aktarılmıyor mu? Kod, sürümü açıkça 72.0 ... –
olarak ayarladı. Bu cevap için teşekkürler. Kodda kazdım ve sürümü tanımlayan ve tanımladığım değeri geçersiz kılan 2.3'e ayarlayan başka bir yer buldum. ek parametre, paypal sihirbazı –
tarafından oluşturulan kod tarafından eklendi. Hoşgeldin =) Memnun kaldın! – SgtPooki