Paypal 通过 C# 中的 400 Bad Request 错误保存了卡休息 API

问题描述 投票:0回答:1

我正在使用 .net MVC C# 开发应用程序。我尝试调用 PayPal 的 REST API 来保存信用卡详细信息,我的代码工作正常,但突然出现 400 Bad Request 异常。这是我的代码:

private static async Task<string> StorePaymentCards(string accessToken, PaymentInfoModel cardDetails)
    {
        try
        {
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.sandbox.paypal.com/v1/vault/credit-card");
            var result = "";
            httpWebRequest.ContentType = "application/json; charset=utf-8";
            httpWebRequest.Method = "POST";
            httpWebRequest.Accept = "application/json; charset=utf-8";
            httpWebRequest.Headers.Add("Authorization", "Bearer " + accessToken);

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                var loginjson = new JavaScriptSerializer().Serialize(new
                {
                    payer_id = cardDetails.PayerId.Trim(),
                    type = cardDetails.CardType.Trim(),
                    number = cardDetails.CardNumber.Trim(),
                    expire_month = cardDetails.ExpireMonth.Trim(),
                    expire_year = cardDetails.ExpireYear.Trim(),
                    first_name = cardDetails.FirstName.Trim()
                });

                streamWriter.Write(loginjson);
                streamWriter.Flush();
                streamWriter.Close();

                //The code fails when creating the Response here, and go into catch block
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    result = streamReader.ReadToEnd();
                }
                return result;
            }

        }

        catch (Exception ex)
        {
            return ex.GetBaseException().Message;
        }
    }
}

任何人都可以帮我解决这个错误吗?

c# .net model-view-controller paypal
1个回答
0
投票
 private static async Task<string> StorePaymentCards(string accessToken, PaymentInfoModel cardDetails)
    {
        try
        {
          //my stuff
        }
        catch (WebException ex)
        {
            string text = null;
            using (WebResponse response = ex.Response)
            {
                HttpWebResponse httpResponse = (HttpWebResponse)response;
                Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
                using (Stream data = response.GetResponseStream())
                using (var reader = new StreamReader(data))
                {
                    text = reader.ReadToEnd();
                    Console.WriteLine(text);
                }
            }
            return text; //ex.GetBaseException().Message;
        }
    }

这是我在 catch 块中所做的更改,以跟踪正确的错误,因此它返回我所面临的错误。

© www.soinside.com 2019 - 2024. All rights reserved.