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.
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..
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
and
https://www.x.com/community/ppx/code_samples
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();
I think that page would help you find what you need. It's a code implementing PayPal interface without create the pay now button. See on this page PayPal C#
精彩评论