我正在开发ASP.NET上的Web应用程序。在应用程序中,用户可以购买物品。
对于PayPal的工作我使用PayPal Merchant SDK for .NET包。应用程序适用于沙箱,但有实时显示错误:"This transaction is invalid"
。请返回收件人的网站,使用他们的常规结账流程完成您的交易。“
当用户点击购买按钮时,我执行代码:
// only for live
var paypalConfig = new Dictionary<string, string> {
{"account1.applicationId", "<APP-LIVEID>"},
{"account1.apiUsername", "<username>"},
{"account1.apiPassword", "<pass>"},
{"account1.apiSignature", "<signature>"},
{"mode", "live"}};
try
{
var currency = CurrencyCodeType.USD;
var paymentItem = new PaymentDetailsItemType
{
Name = "item",
Amount = new BasicAmountType(currency, amount.ToString()),
ItemCategory = ItemCategoryType.DIGITAL,
};
var paymentItems = new List<PaymentDetailsItemType>();
paymentItems.Add(paymentItem);
var paymentDetail = new PaymentDetailsType();
paymentDetail.PaymentDetailsItem = paymentItems;
paymentDetail.PaymentAction = PaymentActionCodeType.SALE;
paymentDetail.OrderTotal = new BasicAmountType(currency, amount.ToString());
paymentDetail.SellerDetails = new SellerDetailsType {
PayPalAccountID= sellerEmail
};
var paymentDetails = new List<PaymentDetailsType>();
paymentDetails.Add(paymentDetail);
var ecDetails = new SetExpressCheckoutRequestDetailsType {
ReturnURL = returnUrl,
CancelURL = cancelUrl,
PaymentDetails = paymentDetails,
};
var request = new SetExpressCheckoutRequestType
{
Version = "104.0",
SetExpressCheckoutRequestDetails = ecDetails,
};
var wrapper = new SetExpressCheckoutReq
{
SetExpressCheckoutRequest = request
};
var service = new PayPalAPIInterfaceServiceService(paypalConfig);
var setECResponse = service.SetExpressCheckout(wrapper);
if (sandbox)
return "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={0}".FormatWith(setECResponse.Token);
return "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&TOKEN={0}".FormatWith(setECResponse.Token);
}
// # Exception log
catch (System.Exception ex)
{
// Log the exception message
Console.WriteLine("Error Message : " + ex.Message);
}
毕竟我将用户重定向到收到了TOKEN的网址。
对于我在PayPal上注册的应用程序,我只在“自适应付款&gt;基本付款&gt;结帐,汇款或并行付款”中设置选项
为什么直播PayPal付款不起作用?是什么原因?
答案 0 :(得分:0)
已移除
ItemCategory = ItemCategoryType.DIGITAL,
和所有工作
答案 1 :(得分:0)
根据之前的经验,这个问题通常来自于拥有“空”令牌,因为“setExpressCheckout”请求中存在一些错误(在快速结账流程中,您向paypal请求交易令牌)。
基本上,你向paypal请求一个令牌,这样你就可以构建重定向URL,但是你犯了一些错误,而paypal会给你一个错误,但没有令牌,所以你建立的URL没有令牌(或错误的)。 / p>
如果您尝试将用户重定向到带有空令牌的结帐网址(https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token= {...}&amp; useraction = {...}),您将收到此错误。
其实我想知道还有其他原因......