asp.net-mvc-3 - Paypal 400 错误请求错误获取 WebResponse response = request.GetResponse();

标签 asp.net-mvc-3 asp.net-mvc-4 paypal

我正在尝试为沙盒测试帐户集成 paypal api。当我尝试从请求代码获取访问 token 时收到 400 错误请求错误。

cshtml: 转到 Paypal Js: 函数 GetPaypal() { window.location = "https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=clientid&response_type=code&scope=Email&redirect_uri=http://localhost:4427/ "; }

C#代码: 我正在使用以下代码获取代码。 :

public ActionResult Index(字符串代码)

{
        if (code != null)
        { 
            string postcontents = string.Format("client_id={0}&client_secret={1}&grant_type=authorization_code&redirect_uri={2}&code={3}"
                                      , System.Web.HttpUtility.UrlEncode("client_id")
                                      , System.Web.HttpUtility.UrlEncode("Client Secret")
                                      , System.Web.HttpUtility.UrlEncode("http://localhost:4427/")
                                      , System.Web.HttpUtility.UrlEncode(code));
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice");
            request.Method = "POST";
            byte[] postcontentsArray = System.Text.Encoding.UTF8.GetBytes(postcontents);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postcontentsArray.Length;
            //OAuth.
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(postcontentsArray, 0, postcontentsArray.Length);
                requestStream.Close();
                WebResponse response = request.GetResponse();
                using (Stream responseStream = response.GetResponseStream())
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseFromServer = reader.ReadToEnd();
                    reader.Close();
                    responseStream.Close();
                    response.Close();
                    // return SerializeToken(responseFromServer);
                    dynamic dynObj = JsonConvert.DeserializeObject(responseFromServer);
                    string token = dynObj["access_token"];
                    //token = ser.Deserialize<ImportContacts._Default.GoogleOAuthToken>(responseFromServer);
                }
            }
        }
        return View();

最佳答案

请如下更改您的 CSHTML 网址:-

 <script type="text/javascript">
        function GetGmailContacts() {
            window.location = "https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=clientid&response_type=code+id_token&scope=openid profile email&redirect_uri=localhost_url";
        }  
  </script>

C# 代码:-

public ActionResult Index(string code,string id_token)
  {
        if (code != null)
        { 
            string postcontents = string.Format("client_id={0}&client_secret={1}&grant_type=authorization_code&redirect_uri={2}&code={3}"
                                      , System.Web.HttpUtility.UrlEncode("client_id")
                                      , System.Web.HttpUtility.UrlEncode("Client Secret")
                                      , System.Web.HttpUtility.UrlEncode(localhost_url)
                                      , System.Web.HttpUtility.UrlEncode(code));
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice");
            request.Method = "POST";
            byte[] postcontentsArray = System.Text.Encoding.UTF8.GetBytes(postcontents);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postcontentsArray.Length;
            //OAuth.
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(postcontentsArray, 0, postcontentsArray.Length);
                requestStream.Close();
                WebResponse response = request.GetResponse();
                using (Stream responseStream = response.GetResponseStream())
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseFromServer = reader.ReadToEnd();
                    reader.Close();
                    responseStream.Close();
                    response.Close();
                    // return SerializeToken(responseFromServer);
                    dynamic dynObj = JsonConvert.DeserializeObject(responseFromServer);
                    string token = dynObj["access_token"];
                    //token = ser.Deserialize<ImportContacts._Default.GoogleOAuthToken>(responseFromServer);
                }
            }
        }
        return View();
}

我希望它能奏效。

关于asp.net-mvc-3 - Paypal 400 错误请求错误获取 WebResponse response = request.GetResponse();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672118/

相关文章:

asp.net-mvc-3 - 我如何在表单中提交要添加的帖子值中的多个对象

asp.net-mvc-3 - 如何处理MVC3中的异常?

asp.net-mvc-3 - 您如何使用 ASP.net MVC 的 AsyncController 处理异常?

asp.net-mvc-4 - mvc 过滤器中的依赖注入(inject)是全局的

.net - PayPal - 付款摘要不显示“设置付款选项”设置的项目

.Net 上下文弹出窗口不显示 Paypal 屏幕

asp.net - 如何在asp.net mvc3中的网络浏览器中显示pdf文件

c# - 为 DateTime 填充 EditorFor

css - twitter bootstrap 并排对齐表格

paypal - "handling_cart"被 Paypal 忽略