Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Xml;
- using System.IO;
- using PayPal.Payments.Common.Utility;
- using PayPal.Payments.Communication;
- namespace PayFlowProWrapper
- {
- public class PayFlowProHelper
- {
- public enum eAuthType
- {
- Sale,
- Authorization
- }
- private string _host;
- private string _port;
- private string _timeOut;
- private string _partner;
- private string _vendor;
- private string _totalAmt;
- private string _invNum;
- private string _poNum;
- private string _street;
- private string _zip;
- private string _cardNum;
- private string _expDate;
- private string _cvNum;
- private string _user;
- private string _password;
- private string _result;
- private string _message;
- private string _pnRef;
- private string _authCode;
- private eAuthType _authType;
- public string Host
- {
- get { return _host; }
- set { _host = value; }
- }
- public string Port
- {
- get { return _port; }
- set { _port = value; }
- }
- public string TimeOut
- {
- get { return _timeOut; }
- set { _timeOut = value; }
- }
- public string Partner
- {
- get { return _partner; }
- set { _partner = value; }
- }
- public string Vendor
- {
- get { return _vendor; }
- set { _vendor = value; }
- }
- public string TotalAmt
- {
- get { return _totalAmt; }
- set { _totalAmt = value; }
- }
- public string InvNum
- {
- get { return _invNum; }
- set { _invNum = value; }
- }
- public string PONum
- {
- get { return _poNum; }
- set { _poNum = value; }
- }
- public string Street
- {
- get { return _street; }
- set { _street = value; }
- }
- public string Zip
- {
- get { return _zip; }
- set { _zip = value; }
- }
- public string CardNum
- {
- get { return _cardNum; }
- set { _cardNum = value; }
- }
- public string ExpDate
- {
- get { return _expDate; }
- set { _expDate = value; }
- }
- public string CVNum
- {
- get { return _cvNum; }
- set { _cvNum = value; }
- }
- public string User
- {
- get { return _user; }
- set { _user = value; }
- }
- public string Password
- {
- get { return _password; }
- set { _password = value; }
- }
- public string Result
- {
- get { return _result; }
- }
- public string Message
- {
- get { return _message; }
- }
- public string PNRef
- {
- get { return _pnRef; }
- }
- public string AuthCode
- {
- get { return _authCode; }
- }
- public eAuthType AuthType
- {
- get { return _authType; }
- set { _authType = value; }
- }
- /// <summary>
- /// Public method to initiate payment processing through PayFlow Pro gateway.
- /// </summary>
- public void ProcessPayment()
- {
- if (_host != null && _port != null && _partner != null && _vendor != null && _timeOut != null && _user != null && _password != null)
- {
- PayflowNETAPI pfNETAPI;
- pfNETAPI = new PayflowNETAPI(_host, int.Parse(_port), int.Parse(_timeOut));
- ProcessXMLResult(pfNETAPI.SubmitTransaction(CreateXMLParamList(), PayflowUtility.RequestId));
- }
- else
- {
- _result = "999";
- _message = "Required property or properties are missing.";
- }
- }
- /// <summary>
- /// Processes the XML result returned from PayFlow Pro.
- /// </summary>
- /// <param name="XMLResult"></param>
- private void ProcessXMLResult(string XMLResult)
- {
- XmlReader reader = XmlReader.Create(new StringReader(XMLResult));
- while (reader.Read())
- {
- if (reader.NodeType == XmlNodeType.Element && reader.Name == "Message") { reader.Read(); _message = reader.Value; }
- if (reader.NodeType == XmlNodeType.Element && reader.Name == "Result") { reader.Read(); _result = reader.Value; }
- if (reader.NodeType == XmlNodeType.Element && reader.Name == "PNRef") { reader.Read(); _pnRef = reader.Value; }
- if (reader.NodeType == XmlNodeType.Element && reader.Name == "AuthCode") { reader.Read(); _authCode = reader.Value; }
- }
- }
- /// <summary>
- /// Generates the required XML document for payment processing based on set properties.
- /// </summary>
- /// <returns>XML document formatted for PayFlow Pro parameters</returns>
- private string CreateXMLParamList()
- {
- string XMLAuthType = "";
- switch (_authType)
- {
- case eAuthType.Sale:
- XMLAuthType = "Sale";
- break;
- case eAuthType.Authorization:
- XMLAuthType = "Authorization";
- break;
- }
- XmlDocument xmlDoc = new XmlDocument();
- XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", null, null);
- xmlDoc.AppendChild(xmlDec);
- XmlElement root = xmlDoc.CreateElement("XMLPayRequest");
- root.SetAttribute("Timeout", "45");
- root.SetAttribute("version", "2.0");
- xmlDoc.AppendChild(root);
- XmlElement requestData = xmlDoc.CreateElement("RequestData");
- root.AppendChild(requestData);
- XmlElement partner = xmlDoc.CreateElement("Partner");
- partner.InnerText = _partner;
- requestData.AppendChild(partner);
- XmlElement vendor = xmlDoc.CreateElement("Vendor");
- vendor.InnerText = _vendor;
- requestData.AppendChild(vendor);
- XmlElement transactions = xmlDoc.CreateElement("Transactions");
- requestData.AppendChild(transactions);
- XmlElement transaction = xmlDoc.CreateElement("Transaction");
- transactions.AppendChild(transaction);
- XmlElement sale = xmlDoc.CreateElement(XMLAuthType);
- transaction.AppendChild(sale);
- XmlElement payData = xmlDoc.CreateElement("PayData");
- sale.AppendChild(payData);
- XmlElement invoice = xmlDoc.CreateElement("Invoice");
- payData.AppendChild(invoice);
- XmlElement totalAmt = xmlDoc.CreateElement("TotalAmt");
- totalAmt.SetAttribute("Currency", "USD");
- totalAmt.InnerText = _totalAmt;
- invoice.AppendChild(totalAmt);
- XmlElement invNum = xmlDoc.CreateElement("InvNum");
- invNum.InnerText = _invNum;
- invoice.AppendChild(invNum);
- XmlElement billTo = xmlDoc.CreateElement("BillTo");
- invoice.AppendChild(billTo);
- XmlElement poNum = xmlDoc.CreateElement("PONum");
- poNum.InnerText = _poNum;
- billTo.AppendChild(poNum);
- XmlElement address = xmlDoc.CreateElement("Address");
- billTo.AppendChild(address);
- XmlElement street = xmlDoc.CreateElement("Street");
- street.InnerText = _street;
- address.AppendChild(street);
- XmlElement zip = xmlDoc.CreateElement("Zip");
- zip.InnerText = _zip;
- address.AppendChild(zip);
- XmlElement tender = xmlDoc.CreateElement("Tender");
- payData.AppendChild(tender);
- XmlElement card = xmlDoc.CreateElement("Card");
- tender.AppendChild(card);
- XmlElement cardNum = xmlDoc.CreateElement("CardNum");
- cardNum.InnerText = _cardNum;
- card.AppendChild(cardNum);
- XmlElement expDate = xmlDoc.CreateElement("ExpDate");
- expDate.InnerText = _expDate;
- card.AppendChild(expDate);
- XmlElement cvNum = xmlDoc.CreateElement("CVNum");
- cvNum.InnerText = _cvNum;
- card.AppendChild(cvNum);
- XmlElement requestAuth = xmlDoc.CreateElement("RequestAuth");
- root.AppendChild(requestAuth);
- XmlElement userPass = xmlDoc.CreateElement("UserPass");
- requestAuth.AppendChild(userPass);
- XmlElement user = xmlDoc.CreateElement("User");
- user.InnerText = _user;
- userPass.AppendChild(user);
- XmlElement password = xmlDoc.CreateElement("Password");
- password.InnerText = _password;
- userPass.AppendChild(password);
- return xmlDoc.OuterXml.Replace('"', '\'');
- }
- }
- }
Add Comment
Please, Sign In to add comment