【问题标题】:Paypal adaptive payment API call with C# .NET? Preferably with WebServices使用 C# .NET 调用 Paypal 自适应支付 API?最好使用 WebServices
【发布时间】:2011-02-20 09:58:29
【问题描述】:

好的,我现在可能完全偏离了轨道,但这里是:

我们的“网上商店”提供两种功能,购买特定产品并将其卖回给我们。后端处理用户是否可以出售。

我决定为此使用 Paypal 的自适应付款,因为这似乎是进行此类交易的方式。我从来没有实施过任何类型的商店,所以我完全不喜欢这个。我最近才学习 ASP.NET 并且在转向这种开发之前主要开发游戏。 HTTP 对我来说仍然是某种程度的魔法,呵呵..

我可能会感到困惑,但我认为 paypal 提供了一个带有自适应支付 API 的网络服务。我的谦虚请求:一位好心人想要分享一个使用 C# .NET 实现自适应支付 API 调用的示例。如果他们不将它作为网络服务提供,我可能会发现它是一个自定义的 .dll 或其他东西。

非常感谢任何提示和示例! 感谢阅读

【问题讨论】:

    标签: c# .net paypal


    【解决方案1】:

    我认为该页面会帮助您找到所需的内容。 这是一个实现 PayPal 界面的代码,无需创建立即付款按钮。 在此页面上查看PayPal C#

    【讨论】:

      【解决方案2】:

      https://www.x.com/docs/DOC-1414

      https://www.x.com/community/ppx/code_samples

      这是他们的 xml api。我还没有让他们的网络服务使用 vs.net 中自动生成的代理来工作。另外请记住,您必须为 api 信息、买方、卖方等声明常量或变量。

              // API endpoint for the Refund call in the Sandbox
              string sAPIEndpoint = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay";
      
              // Version that you are coding against
              string sVersion = "1.1.0";
      
              // Error Langugage
              string sErrorLangugage = "en_US";
      
              // Detail Level
              string sDetailLevel = "ReturnAll";
      
              // Request Data Binding
              string sRequestDataBinding = "XML";
      
              // Response Data Binding
              string sResponseDataBinding = "XML";
      
              // Application ID
              string sAppID = "APP-80W284485P519543T";
      
              // other clientDetails fields
              string sIpAddress = "255.255.255.255";
              string sPartnerName = "MyCompanyName";
              string sDeviceID = "255.255.255.255";
      
              // Currency Code
              string sCurrencyCode = "USD";
      
              // Action Type
              string sActionType = "PAY";
      
              // ReturnURL and CancelURL used for approval flow
              string sReturnURL = "https://MyReturnURL";
              string sCancelURL = "https://MyCancelURL";
      
              // who pays the fees
              string sFeesPayer = "EACHRECEIVER";
      
              // memo field
              string sMemo = "testing my first pay call";
      
              // transaction amount
              string sAmount = "5";
      
              // supply your own sandbox accounts for receiver and sender
      
      
              string sTrackingID = System.Guid.NewGuid().ToString();
      
              // construct the XML request string
              StringBuilder sRequest = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
              sRequest.Append("<PayRequest xmlns:ns2=\"http://svcs.paypal.com/types/ap\">");
              // requestEnvelope fields
              sRequest.Append("<requestEnvelope><errorLanguage>");
              sRequest.Append(sErrorLangugage);
              sRequest.Append("</errorLanguage><detailLevel>");
              sRequest.Append(sDetailLevel);
              sRequest.Append("</detailLevel></requestEnvelope>");
              // clientDetails fields
              sRequest.Append("<clientDetails><applicationId>");
              sRequest.Append(sAppID);
              sRequest.Append("</applicationId><deviceId>");
              sRequest.Append(sDeviceID);
              sRequest.Append("</deviceId><ipAddress>");
              sRequest.Append(sIpAddress);
              sRequest.Append("</ipAddress><partnerName>");
              sRequest.Append(sPartnerName);
              sRequest.Append("</partnerName></clientDetails>");
              // request specific data fields
              sRequest.Append("<actionType>");
              sRequest.Append(sActionType);
              sRequest.Append("</actionType><cancelUrl>");
              sRequest.Append(sCancelURL);
              sRequest.Append("</cancelUrl><returnUrl>");
              sRequest.Append(sReturnURL);
              sRequest.Append("</returnUrl><currencyCode>");
              sRequest.Append(sCurrencyCode);
              sRequest.Append("</currencyCode><feesPayer>");
              sRequest.Append(sFeesPayer);
              sRequest.Append("</feesPayer><memo>");
              sRequest.Append(sMemo);
              sRequest.Append("</memo><receiverList><receiver><amount>");
              sRequest.Append(sAmount);
              sRequest.Append("</amount><email>");
              sRequest.Append(Receiver);
              sRequest.Append("</email></receiver></receiverList><senderEmail>");
              sRequest.Append(Sender);
              sRequest.Append("</senderEmail><trackingId>");
              sRequest.Append(sTrackingID);
              sRequest.Append("</trackingId></PayRequest>");
      
      
              // get ready to make the call
              HttpWebRequest oPayRequest = (HttpWebRequest)WebRequest.Create(sAPIEndpoint);
              oPayRequest.Method = "POST";
              byte[] array = Encoding.UTF8.GetBytes(sRequest.ToString());
              oPayRequest.ContentLength = array.Length;
              oPayRequest.ContentType = "text/xml;charset=utf-8";
              // set the HTTP Headers
              oPayRequest.Headers.Add("X-PAYPAL-SECURITY-USERID", UserID);
              oPayRequest.Headers.Add("X-PAYPAL-SECURITY-PASSWORD", Pass);
              oPayRequest.Headers.Add("X-PAYPAL-SECURITY-SIGNATURE", Signature);
              oPayRequest.Headers.Add("X-PAYPAL-SERVICE-VERSION", sVersion);
              oPayRequest.Headers.Add("X-PAYPAL-APPLICATION-ID", sAppID);
              oPayRequest.Headers.Add("X-PAYPAL-REQUEST-DATA-FORMAT", sRequestDataBinding);
              oPayRequest.Headers.Add("X-PAYPAL-RESPONSE-DATA-FORMAT", sResponseDataBinding);
              // send the request
              Stream oStream = oPayRequest.GetRequestStream();
              oStream.Write(array, 0, array.Length);
              oStream.Close();
              // get the response
              HttpWebResponse oPayResponse = (HttpWebResponse)oPayRequest.GetResponse();
              StreamReader oStreamReader = new StreamReader(oPayResponse.GetResponseStream());
              string sResponse = oStreamReader.ReadToEnd();
              oStreamReader.Close();
      

      【讨论】:

      • 谢谢!!你真的很有帮助!
      • 欢迎您。我不喜欢 stringbuilder 方法,所以我将它切换到 Linq to Xml,这也有效。只希望他们的网络服务也能正常工作!
      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 2016-10-23
      • 2012-03-21
      • 1970-01-01
      • 2012-04-10
      • 2014-03-07
      • 2012-04-22
      • 2013-03-08
      相关资源
      最近更新 更多