gpt4 book ai didi

asp.net - 在 ASP.net 中使用 NVP API 时 Paypal SetExpressCheckout 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:25 28 4
gpt4 key购买 nike

你好,我正在实现我的 Facebook 游戏与 Paypal 的快速结帐支付服务之间的集成。

我的网站是在 ASP.net 中开发的,我正在使用 NVP API 进行集成。

我的问题是我不断收到 10400 错误 - 缺少订单总额。

我的代码是:

// 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方法的代码是:

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;
}
}

代码生成的请求是:

 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 提供的文档和许多关于此问题的帖子,但我找不到我做错了什么。

任何帮助将不胜感激,

科比

最佳答案

您的订单总计参数丢失,因为您使用的是旧版本。您显示的 API 请求与您的响应不匹配。

您实际上提交的是 2.3 版,而不是 72.0 版。请参阅您的 API 响应:“VERSION=2%2e3&”

下面的请求和响应对我有用

API请求

USER=********************
PWD=********************
SIGNATURE=********************
METHOD=SetExpressCheckout
VERSION=72.0
RETURNURL=********************
CANCELURL=********************
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

API 响应

TOKEN=EC-3UE641439J019845E
TIMESTAMP=2011-09-01T17:13:17Z
CORRELATIONID=4f7e60c2d70aa
ACK=Success
VERSION=72.0
BUILD=2085867

关于asp.net - 在 ASP.net 中使用 NVP API 时 Paypal SetExpressCheckout 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270718/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com