使用 C# .NET 调用 Paypal 自适应支付 API?最好使用 WebServices [英] Paypal adaptive payment API call with C# .NET? Preferably with WebServices
问题描述
好吧,我现在可能完全偏离了轨道,但这里是:
Okay I might be entirely off track now but here goes:
我们的网上商店"提供两种功能,购买特定产品并将其卖回给我们.后端处理用户是否可以出售.
Our "webshop" offers two functions, buying a specific product and selling it back to us. Back-end handles if the user can sell or not.
我已决定为此使用 Paypal 的自适应支付,因为这似乎是进行此类交易的方式.我从来没有实施过任何类型的商店,所以我对这个完全没有兴趣.我最近才学习 ASP.NET 并且在转向这种开发之前主要开发游戏.HTTP 对我来说仍然是某种程度的魔法嘿嘿..
I've decided to use Paypal's adaptive payments for this one as it seems the way to go doing these kinds of transactions. I've never implemented any kind of shop so I'm totally green with this one. I only recently learned ASP.NET and have mainly developed games before moving to this kind of development. HTTP is still some level of magic to me hehe..
我可能会感到困惑,但我认为 paypal 提供了具有自适应支付 API 的网络服务.我谦虚的请求:一个想分享一个使用 C# .NET 实现自适应支付 API 调用的例子的好心人.如果他们不提供它作为网络服务,我可能会发现它是一个自定义的 .dll 或其他东西.
I might be confused but I think paypal offers a webservice with their adaptive payment API. My humble request: A nice soul who wants to share an example of implementing an adaptive payment API call with C# .NET. If they don't offer it as a webservice I'll probably find it as a custom .dll or something.
非常感谢任何提示和示例!感谢阅读
Any tips and examples are highly appreciated! Thanks for reading
推荐答案
https://www.x.com/docs/DOC-1414
和
https://www.x.com/community/ppx/code_samples
这是他们的 xml api.我还没有使用 vs.net 中自动生成的代理让他们的网络服务工作.另请记住,您必须为 api 信息、买方、卖方等声明常量或变量.
This is their xml api. I have not gotten their webservices to work using the auto-generated proxies in vs.net. Also keep in mind you'll have to declare constants or variables for the api info, buyer, seller, etc.
// 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();
这篇关于使用 C# .NET 调用 Paypal 自适应支付 API?最好使用 WebServices的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!