【问题标题】:Paypal HTTP post request gives Invalid Merchant or Merchant doesn't exist error in MVC C#Paypal HTTP 发布请求在 MVC C# 中给出了 Invalid Merchant 或 Merchant doesn't exist 错误
【发布时间】:2016-08-04 14:32:29
【问题描述】:

我在向 Paypal 发出 HTTP 发布请求以获取安全令牌以使用 Paypal 的托管解决方案时遇到问题,但我收到此错误:

某些必需信息缺失或不正确。请更正以下字段,然后重试。

错误:无效的商家或商家不存在!

这是我用来进行 HTTP 调用的 C# 代码:

string strNVP = "https://pilot-payflowpro.paypal.com?PARTNER=PayPal&USER=myUsername&VENDOR=myVendorName&PWD=myPassword&TRXTYPE=A&AMT=" + obj.CurrentPackagePrice + "&CREATESECURETOKEN=Y&SECURETOKENID=" + Guid.NewGuid().ToString("N");
HttpWebRequest wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVP);
                    wrWebRequest.Method = "POST";
                    StreamWriter requestWriter = new StreamWriter(wrWebRequest.GetRequestStream());
                    requestWriter.Write(strNVP);
                    requestWriter.Close();

                    HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
                    StreamReader responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream());

                    //and read the response
                    string responseData = responseReader.ReadToEnd();
                    responseReader.Close();

                    string result = Server.UrlDecode(responseData);
                    string[] arrResult = result.Split('&');
                    Hashtable htResponse = new Hashtable();
                    string[] responseItemArray;
                    foreach (string responseItem in arrResult)
                    {
                        responseItemArray = responseItem.Split('=');
                        htResponse.Add(responseItemArray[0], responseItemArray[1]);
                    }

                    string responseResult = htResponse["RESULT"].ToString();
                    string response = htResponse["RESPMSG"].ToString();

                    ///for Success response

                    if (responseResult == "0" && response == "Approved")
                    {
                        ViewBag.secureToken = htResponse["SECURETOKEN"].ToString();
                        ViewBag.secureTokenId = htResponse["SECURETOKENID"].ToString();

                    }

请帮我解决这个问题,也许我在上面的代码中也做错了。

【问题讨论】:

    标签: c# asp.net-mvc paypal


    【解决方案1】:

    问题是我无法接收到 Token 和 TokenID,因为出现了这个异常,然后我通过修改上面的代码解决了我的问题,以便 Paypal 发回我的 Token 和 TokenID 的响应在 iframe 中使用,现在可以完美运行。

     var request = (HttpWebRequest)WebRequest.Create("https://pilot-payflowpro.paypal.com");
                var postData = "PARTNER=PayPal&USER=myUser&VENDOR=myVendor&PWD=myPassword&TRXTYPE=A&AMT=50&CREATESECURETOKEN=Y&SECURETOKENID=" + Guid.NewGuid().ToString("N");
                var data = Encoding.ASCII.GetBytes(postData);
    
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
    
                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
    
                var responseData = (HttpWebResponse)request.GetResponse();
    
                var responseString = new StreamReader(responseData.GetResponseStream()).ReadToEnd();
    
                string result = Server.UrlDecode(responseString);
                string[] arrResult = result.Split('&');
                Hashtable htResponse = new Hashtable();
                string[] responseItemArray;
                foreach (string responseItem in arrResult)
                {
                    responseItemArray = responseItem.Split('=');
                    htResponse.Add(responseItemArray[0], responseItemArray[1]);
                }
    
                string responseResult = htResponse["RESULT"].ToString();
                string response = htResponse["RESPMSG"].ToString();
    
                ///for Success response
    
                if (responseResult == "0" && response == "Approved")
                {
                    ViewBag.secureToken = htResponse["SECURETOKEN"].ToString();
                    ViewBag.secureTokenId = htResponse["SECURETOKENID"].ToString();
                }
    

    上面的代码有问题,并且在接收响应时抛出异常等。所以这个代码块运行良好。

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 2012-02-03
      • 1970-01-01
      • 2013-10-22
      • 2023-04-02
      • 2015-05-27
      • 2013-06-22
      • 2010-12-05
      • 2014-06-20
      相关资源
      最近更新 更多