我有个问题 。当我在我的网站项目(.net 4.0 aspx webform)上尝试使用贝宝付款(rest api & PaypalCoreSDK 版本为 1.3.4.0,RestApiSDK 版本为 0.7.3.0)时,我遇到了问题,错误消息。但有时运行平稳此消息是;
{"The request was aborted: The request was canceled."}
{"Cannot close stream until all bytes are written."}
at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)
at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)
at System.Net.ConnectStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.StreamWriter.Dispose(Boolean disposing)
at System.IO.TextWriter.Dispose()
at PayPal.HttpConnection.Execute(String payLoad, HttpWebRequest httpRequest)
at PayPal.PayPalResource.ConfigureAndExecute[T](APIContext apiContext, HttpMethod httpMethod, String resource, Dictionary`2 headersMap, String payLoad)
at PayPal.PayPalResource.ConfigureAndExecute[T](APIContext apiContext, HttpMethod httpMethod, String resource, String payLoad)
at PayPal.Api.Payments.Payment.Create(APIContext apiContext)
at DEPOSANAT.Web.CheckOut.PaymentWithPaypal(String totalAmount, String amountCurrency, String amountDetailShipping, String amountDetailSubTotal, String amountDetailTax, String orderID, String recipientName, String shipingAddressLine1, String shipingAddressLine2, List`1 shoppinListItems) in C:\Users\tahsin.ozcelik\Desktop\DEPOSANAT_Proj_TFS\DEPOSANAT\DEPOSANAT.Web\CheckOut.aspx.cs:line 181
at DEPOSANAT.Web.CheckOut.imgBtnPaypalOdeme_Click(Object sender, ImageClickEventArgs e) in C:\Users\tahsin.ozcelik\Desktop\DEPOSANAT_Proj_TFS\DEPOSANAT\DEPOSANAT.Web\CheckOut.aspx.cs:line 94
at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
我的代码;
private static string GetAccessToken()
{
string accessToken = new OAuthTokenCredential("XXXXXXXX", "XXXXXXXXX", GetConfig()).GetAccessToken();
return accessToken;
}
public static APIContext GetAPIContext()
{
APIContext apiContext = new APIContext(GetAccessToken());
apiContext.Config = GetConfig();
return apiContext;
}
private static Dictionary<string, string> GetConfig()
{
Dictionary<string, string> configMap = new Dictionary<string, string>();
configMap.Add("mode", "sandbox");
configMap.Add("connectionTimeout", "36000");
return configMap;
}
APIContext apiContext = GetAPIContext();
ProductLBll pLBll = new ProductLBll();
List<Item> itms = new List<Item>();
decimal productTotal = 0;
foreach (var myObj in shoppinListItems)
{
Item myAddItem = new Item();
myAddItem.currency = amountCurrency;
myAddItem.name = pLBll.GetName(VariableHelper.CheckValueOfInt(myObj.ProductVariant.ProductId), SessionUser.LanguageTypeId);//pLBll.GetName(VariableHelper.CheckValueOfInt(myObj.ProductVariant.ProductId), SessionUser.LanguageTypeId);
myAddItem.price = String.Format("{0:0.00}", myObj.ProductVariant.CurrentAmount.Value);//String.Format("{0:0.00}", myObj.ProductVariant.CurrentAmount.Value);
myAddItem.quantity = shoppinListItems[0].Qtty.ToString();//myObj.Qtty.ToString();
myAddItem.sku = myObj.ProductVariant.ProductId.HasValue ? myObj.ProductVariant.ProductId.Value.ToString() : "ID YOK";
productTotal += myObj.ProductVariant.CurrentAmount.Value * myObj.Qtty;//myObj.ProductVariant.CurrentAmount.Value * myObj.Qtty;
itms.Add(myAddItem);
}
ItemList itemList = new ItemList();
itemList.items = itms;
Payer payr = new Payer();
payr.payment_method = "paypal";
string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/odeme?";
string requestUrl = Request.Url.OriginalString;
orderID = System.Guid.NewGuid().ToString();
string returnUrl = baseURI + "snc=true";
//+ orderID.Substring(0, 10);
string cancelUrl = baseURI + "snc=false";
//+orderID.Substring(0, 13);
RedirectUrls redirUrls = new RedirectUrls();
redirUrls.cancel_url = cancelUrl;
redirUrls.return_url = returnUrl;
Details details = new Details();
details.tax = String.Format("{0:0.00}", amountDetailTax);
details.shipping = String.Format("{0:0.00}", amountDetailShipping);
details.subtotal = String.Format("{0:0.00}", productTotal);
decimal total = VariableHelper.CheckValueOfDecimal(details.tax) + VariableHelper.CheckValueOfDecimal(details.shipping) + productTotal;
Amount amnt = new Amount();
amnt.currency = amountCurrency;
amnt.total = total.ToString();
amnt.details = details;
List<Transaction> transactionList = new List<Transaction>();
Transaction tran = new Transaction();
tran.description = "işlem açıklaması";
tran.amount = amnt;
tran.item_list = itemList;
transactionList.Add(tran);
Payment pymnt = new Payment();
pymnt.intent = "sale";
pymnt.payer = payr;
pymnt.transactions = transactionList;
pymnt.redirect_urls = redirUrls;
#endregion
string redirectUrl = "";
try
{
Payment createdPayment = pymnt.Create(apiContext);
foreach (var itemm in createdPayment.links)
{
if (itemm.rel.Contains("approval_url"))
redirectUrl = itemm.href;
}
}
catch (PayPal.Exception.PayPalException ex)
{
//Response.Write(ex.Message);
}
Response.Redirect(redirectUrl);
你能快点帮我吗?谢谢。