Guest User

Untitled

a guest
Jun 18th, 2018
660
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Xml;
  5. using System.IO;
  6. using PayPal.Payments.Common.Utility;
  7. using PayPal.Payments.Communication;
  8.  
  9. namespace PayFlowProWrapper
  10. {
  11. public class PayFlowProHelper
  12. {
  13. public enum eAuthType
  14. {
  15. Sale,
  16. Authorization
  17. }
  18.  
  19. private string _host;
  20. private string _port;
  21. private string _timeOut;
  22. private string _partner;
  23. private string _vendor;
  24. private string _totalAmt;
  25. private string _invNum;
  26. private string _poNum;
  27. private string _street;
  28. private string _zip;
  29. private string _cardNum;
  30. private string _expDate;
  31. private string _cvNum;
  32. private string _user;
  33. private string _password;
  34.  
  35. private string _result;
  36. private string _message;
  37. private string _pnRef;
  38. private string _authCode;
  39. private eAuthType _authType;
  40.  
  41. public string Host
  42. {
  43. get { return _host; }
  44. set { _host = value; }
  45. }
  46.  
  47. public string Port
  48. {
  49. get { return _port; }
  50. set { _port = value; }
  51. }
  52.  
  53. public string TimeOut
  54. {
  55. get { return _timeOut; }
  56. set { _timeOut = value; }
  57. }
  58.  
  59. public string Partner
  60. {
  61. get { return _partner; }
  62. set { _partner = value; }
  63. }
  64.  
  65. public string Vendor
  66. {
  67. get { return _vendor; }
  68. set { _vendor = value; }
  69. }
  70.  
  71. public string TotalAmt
  72. {
  73. get { return _totalAmt; }
  74. set { _totalAmt = value; }
  75. }
  76.  
  77. public string InvNum
  78. {
  79. get { return _invNum; }
  80. set { _invNum = value; }
  81. }
  82.  
  83. public string PONum
  84. {
  85. get { return _poNum; }
  86. set { _poNum = value; }
  87. }
  88.  
  89. public string Street
  90. {
  91. get { return _street; }
  92. set { _street = value; }
  93. }
  94.  
  95. public string Zip
  96. {
  97. get { return _zip; }
  98. set { _zip = value; }
  99. }
  100.  
  101. public string CardNum
  102. {
  103. get { return _cardNum; }
  104. set { _cardNum = value; }
  105. }
  106.  
  107. public string ExpDate
  108. {
  109. get { return _expDate; }
  110. set { _expDate = value; }
  111. }
  112.  
  113. public string CVNum
  114. {
  115. get { return _cvNum; }
  116. set { _cvNum = value; }
  117. }
  118.  
  119. public string User
  120. {
  121. get { return _user; }
  122. set { _user = value; }
  123. }
  124.  
  125. public string Password
  126. {
  127. get { return _password; }
  128. set { _password = value; }
  129. }
  130.  
  131. public string Result
  132. {
  133. get { return _result; }
  134. }
  135.  
  136. public string Message
  137. {
  138. get { return _message; }
  139. }
  140.  
  141. public string PNRef
  142. {
  143. get { return _pnRef; }
  144. }
  145.  
  146. public string AuthCode
  147. {
  148. get { return _authCode; }
  149. }
  150.  
  151. public eAuthType AuthType
  152. {
  153. get { return _authType; }
  154. set { _authType = value; }
  155. }
  156.  
  157. /// <summary>
  158. /// Public method to initiate payment processing through PayFlow Pro gateway.
  159. /// </summary>
  160. public void ProcessPayment()
  161. {
  162. if (_host != null && _port != null && _partner != null && _vendor != null && _timeOut != null && _user != null && _password != null)
  163. {
  164. PayflowNETAPI pfNETAPI;
  165. pfNETAPI = new PayflowNETAPI(_host, int.Parse(_port), int.Parse(_timeOut));
  166.  
  167. ProcessXMLResult(pfNETAPI.SubmitTransaction(CreateXMLParamList(), PayflowUtility.RequestId));
  168. }
  169. else
  170. {
  171. _result = "999";
  172. _message = "Required property or properties are missing.";
  173. }
  174. }
  175.  
  176. /// <summary>
  177. /// Processes the XML result returned from PayFlow Pro.
  178. /// </summary>
  179. /// <param name="XMLResult"></param>
  180. private void ProcessXMLResult(string XMLResult)
  181. {
  182. XmlReader reader = XmlReader.Create(new StringReader(XMLResult));
  183. while (reader.Read())
  184. {
  185. if (reader.NodeType == XmlNodeType.Element && reader.Name == "Message") { reader.Read(); _message = reader.Value; }
  186. if (reader.NodeType == XmlNodeType.Element && reader.Name == "Result") { reader.Read(); _result = reader.Value; }
  187. if (reader.NodeType == XmlNodeType.Element && reader.Name == "PNRef") { reader.Read(); _pnRef = reader.Value; }
  188. if (reader.NodeType == XmlNodeType.Element && reader.Name == "AuthCode") { reader.Read(); _authCode = reader.Value; }
  189. }
  190. }
  191.  
  192. /// <summary>
  193. /// Generates the required XML document for payment processing based on set properties.
  194. /// </summary>
  195. /// <returns>XML document formatted for PayFlow Pro parameters</returns>
  196. private string CreateXMLParamList()
  197. {
  198. string XMLAuthType = "";
  199. switch (_authType)
  200. {
  201. case eAuthType.Sale:
  202. XMLAuthType = "Sale";
  203. break;
  204. case eAuthType.Authorization:
  205. XMLAuthType = "Authorization";
  206. break;
  207. }
  208.  
  209. XmlDocument xmlDoc = new XmlDocument();
  210. XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", null, null);
  211. xmlDoc.AppendChild(xmlDec);
  212.  
  213. XmlElement root = xmlDoc.CreateElement("XMLPayRequest");
  214. root.SetAttribute("Timeout", "45");
  215. root.SetAttribute("version", "2.0");
  216. xmlDoc.AppendChild(root);
  217.  
  218. XmlElement requestData = xmlDoc.CreateElement("RequestData");
  219. root.AppendChild(requestData);
  220.  
  221. XmlElement partner = xmlDoc.CreateElement("Partner");
  222. partner.InnerText = _partner;
  223. requestData.AppendChild(partner);
  224.  
  225. XmlElement vendor = xmlDoc.CreateElement("Vendor");
  226. vendor.InnerText = _vendor;
  227. requestData.AppendChild(vendor);
  228.  
  229. XmlElement transactions = xmlDoc.CreateElement("Transactions");
  230. requestData.AppendChild(transactions);
  231.  
  232. XmlElement transaction = xmlDoc.CreateElement("Transaction");
  233. transactions.AppendChild(transaction);
  234.  
  235. XmlElement sale = xmlDoc.CreateElement(XMLAuthType);
  236. transaction.AppendChild(sale);
  237.  
  238. XmlElement payData = xmlDoc.CreateElement("PayData");
  239. sale.AppendChild(payData);
  240.  
  241. XmlElement invoice = xmlDoc.CreateElement("Invoice");
  242. payData.AppendChild(invoice);
  243.  
  244. XmlElement totalAmt = xmlDoc.CreateElement("TotalAmt");
  245. totalAmt.SetAttribute("Currency", "USD");
  246. totalAmt.InnerText = _totalAmt;
  247. invoice.AppendChild(totalAmt);
  248.  
  249. XmlElement invNum = xmlDoc.CreateElement("InvNum");
  250. invNum.InnerText = _invNum;
  251. invoice.AppendChild(invNum);
  252.  
  253. XmlElement billTo = xmlDoc.CreateElement("BillTo");
  254. invoice.AppendChild(billTo);
  255.  
  256. XmlElement poNum = xmlDoc.CreateElement("PONum");
  257. poNum.InnerText = _poNum;
  258. billTo.AppendChild(poNum);
  259.  
  260. XmlElement address = xmlDoc.CreateElement("Address");
  261. billTo.AppendChild(address);
  262.  
  263. XmlElement street = xmlDoc.CreateElement("Street");
  264. street.InnerText = _street;
  265. address.AppendChild(street);
  266.  
  267. XmlElement zip = xmlDoc.CreateElement("Zip");
  268. zip.InnerText = _zip;
  269. address.AppendChild(zip);
  270.  
  271. XmlElement tender = xmlDoc.CreateElement("Tender");
  272. payData.AppendChild(tender);
  273.  
  274. XmlElement card = xmlDoc.CreateElement("Card");
  275. tender.AppendChild(card);
  276.  
  277. XmlElement cardNum = xmlDoc.CreateElement("CardNum");
  278. cardNum.InnerText = _cardNum;
  279. card.AppendChild(cardNum);
  280.  
  281. XmlElement expDate = xmlDoc.CreateElement("ExpDate");
  282. expDate.InnerText = _expDate;
  283. card.AppendChild(expDate);
  284.  
  285. XmlElement cvNum = xmlDoc.CreateElement("CVNum");
  286. cvNum.InnerText = _cvNum;
  287. card.AppendChild(cvNum);
  288.  
  289. XmlElement requestAuth = xmlDoc.CreateElement("RequestAuth");
  290. root.AppendChild(requestAuth);
  291.  
  292. XmlElement userPass = xmlDoc.CreateElement("UserPass");
  293. requestAuth.AppendChild(userPass);
  294.  
  295. XmlElement user = xmlDoc.CreateElement("User");
  296. user.InnerText = _user;
  297. userPass.AppendChild(user);
  298.  
  299. XmlElement password = xmlDoc.CreateElement("Password");
  300. password.InnerText = _password;
  301. userPass.AppendChild(password);
  302.  
  303. return xmlDoc.OuterXml.Replace('"', '\'');
  304. }
  305. }
  306. }
Add Comment
Please, Sign In to add comment