diff --git a/src/Cardknox.NET/Cardknox.cs b/src/Cardknox.NET/Cardknox.cs
index 41afa4e..c3630e6 100644
--- a/src/Cardknox.NET/Cardknox.cs
+++ b/src/Cardknox.NET/Cardknox.cs
@@ -13,6 +13,27 @@ namespace CardknoxApi
///
public class Cardknox
{
+ ///
+ ///
+ ///
+ ///
+ ///
+ public delegate void RequestStartedEventHandler(object sender, CardknoxEventArgs e);
+ ///
+ ///
+ ///
+ public event RequestStartedEventHandler RequestStarted;
+ ///
+ ///
+ ///
+ ///
+ ///
+ public delegate void RequestCompletedEventHandler(object sender, CardknoxEventArgs e);
+ ///
+ ///
+ ///
+ public event RequestCompletedEventHandler RequestCompleted;
+
///
///
///
@@ -107,10 +128,15 @@ public CardknoxResponse CCSale(CCSale _sale, bool force = false)
AddSpecialFields(_sale);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -180,10 +206,15 @@ public CardknoxResponse CCSave(CCSave _save, bool force = false)
if (!IsNullOrWhiteSpace(_save.IP))
_values.Add("xIP", _save.IP);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -219,10 +250,15 @@ public CardknoxResponse CCRefund(CCRefund _refund, bool force = false)
_values.Add("xRefNum", _refund.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -296,10 +332,15 @@ public CardknoxResponse CCAuthOnly(CCAuthOnly _auth, bool force = false)
AddSpecialFields(_auth);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -350,10 +391,15 @@ public CardknoxResponse CCCapture(CCCapture _capture, bool force = false)
AddSpecialFields(_capture);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -427,10 +473,15 @@ public CardknoxResponse CCCredit(CCCredit _credit, bool force = false)
AddSpecialFields(_credit);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -462,10 +513,15 @@ public CardknoxResponse CCVoid(CCVoid _void, bool force = false)
_values.Add("xRefNum", _void.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -512,10 +568,15 @@ public CardknoxResponse CCAdjust(CCAdjust _adjust, bool force = false)
if (!IsNullOrWhiteSpace(_adjust.IP))
_values.Add("xIP", _adjust.IP);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -565,10 +626,15 @@ public CardknoxResponse CCPostAuth(CCPostAuth _auth, bool force = false)
AddSpecialFields(_auth);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -600,10 +666,15 @@ public CardknoxResponse CCVoidRefund(CCVoidRefund _refund, bool force = false)
_values.Add("xRefNum", _refund.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -635,10 +706,15 @@ public CardknoxResponse CCVoidRelease(CCVoidRelease _release, bool force = false
_values.Add("xRefNum", _release.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
#endregion
@@ -702,10 +778,15 @@ public CardknoxResponse CheckSale(CheckSale _sale, bool force = false)
AddSpecialFields(_sale);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -766,10 +847,15 @@ public CardknoxResponse CheckCredit(CheckCredit _credit, bool force = false)
AddSpecialFields(_credit);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -818,10 +904,15 @@ public CardknoxResponse CheckSave(CheckSave _save, bool force = false)
if (!IsNullOrWhiteSpace(_save.IP))
_values.Add("xIP", _save.IP);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -856,10 +947,15 @@ public CardknoxResponse CheckVoid(CheckVoid _void, bool force = false)
_values.Add("xRefNum", _void.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
@@ -894,10 +990,15 @@ public CardknoxResponse CheckRefund(CheckRefund _refund, bool force = false)
_values.Add("xRefNum", _refund.RefNum);
// END required information
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
#endregion
@@ -965,10 +1066,15 @@ public CardknoxResponse EBTFSSale(EBTFSSale _sale, bool force = false)
AddSpecialFields(_sale);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
///
@@ -1033,10 +1139,15 @@ public CardknoxResponse EBTFSCredit(EBTFSCredit _credit, bool force = false)
AddSpecialFields(_credit);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
///
@@ -1088,10 +1199,15 @@ public CardknoxResponse EBTFSBalance(EBTFSBalance _bal, bool force = false)
if (!IsNullOrWhiteSpace(_bal.IP))
_values.Add("xIP", _bal.IP);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
///
@@ -1156,10 +1272,15 @@ public CardknoxResponse EBTFSVoucher(EBTFSVoucher _voucher, bool force = false)
AddSpecialFields(_voucher);
- Log.LogRequest(_values);
+ if (RequestStarted != null)
+ Log.LogRequest(_values);
+ else RequestStarted.Invoke(this, new CardknoxEventArgs(_values));
var resp = MakeRequest();
- Log.LogResponse(resp);
+ if (RequestCompleted != null)
+ Log.LogResponse(resp);
+ else RequestCompleted.Invoke(this, new CardknoxEventArgs(resp));
+
return new CardknoxResponse(resp);
}
#endregion
diff --git a/src/Cardknox.NET/Cardknox.csproj b/src/Cardknox.NET/Cardknox.csproj
index 7ba77ae..3085f34 100644
--- a/src/Cardknox.NET/Cardknox.csproj
+++ b/src/Cardknox.NET/Cardknox.csproj
@@ -8,13 +8,13 @@
Cardknox.API.Wrapper
false
CardknoxApi
- 3.0.1-beta
+ 3.0.2-beta
https://cardknox.adamh.us/
https://github.com/ahwm/Cardknox-API-Wrapper/blob/master/LICENSE
API Wrapper for Cardknox Payment Processor written in C#
Refer to https://kb.cardknox.com/api for full API reference.
- Added logging
+ Added custom logging event handlers
cardknox gateway processor payment api
© 2018 Adam Humpherys
3.0.0.0
diff --git a/src/Cardknox.NET/Extensions.cs b/src/Cardknox.NET/Extensions.cs
new file mode 100644
index 0000000..c17e87e
--- /dev/null
+++ b/src/Cardknox.NET/Extensions.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace CardknoxApi
+{
+ ///
+ ///
+ ///
+ public static class Extensions
+ {
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string MapPath(this AppDomain domain, string path)
+ {
+ if (!path.StartsWith("~/"))
+ return path;
+
+ return Path.Combine(domain.BaseDirectory, path.Replace("~/", ""));
+ }
+ }
+}
diff --git a/src/Cardknox.NET/Log.cs b/src/Cardknox.NET/Log.cs
index eae1061..fed7c70 100644
--- a/src/Cardknox.NET/Log.cs
+++ b/src/Cardknox.NET/Log.cs
@@ -10,7 +10,7 @@ namespace CardknoxApi
{
static class Log
{
- readonly static string[] NoInclude = { "xCardNum", "xMagStripe", "xExp", "xCVV", "xToken", "xDUKPT", "xRouting", "xAccount", "xMICR" };
+ internal readonly static string[] NoInclude = { "xCardNum", "xMagStripe", "xExp", "xCVV", "xToken", "xDUKPT", "xRouting", "xAccount", "xMICR" };
static bool EnableLogging
{
get
@@ -39,8 +39,7 @@ public static void LogRequest(NameValueCollection _values)
return;
string loc = String.Format(LogLocation, DateTime.Now);
- if (LogLocation.StartsWith("~"))
- loc = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, loc.Replace("~/", ""));
+ loc = AppDomain.CurrentDomain.MapPath(loc);
string body = "----" + DateTime.UtcNow.ToString("s") + "----" + Environment.NewLine;
body += "Cardknox Request" + Environment.NewLine;
@@ -63,8 +62,7 @@ public static void LogResponse(NameValueCollection _values)
return;
string loc = String.Format(LogLocation, DateTime.Now);
- if (LogLocation.StartsWith("~"))
- loc = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, loc.Replace("~/", ""));
+ loc = AppDomain.CurrentDomain.MapPath(loc);
string body = "----" + DateTime.UtcNow.ToString("s") + "----" + Environment.NewLine;
body += "Cardknox Response" + Environment.NewLine;
diff --git a/src/Cardknox.NET/Operations/Events.cs b/src/Cardknox.NET/Operations/Events.cs
new file mode 100644
index 0000000..9350458
--- /dev/null
+++ b/src/Cardknox.NET/Operations/Events.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.Linq;
+using System.Text;
+
+namespace CardknoxApi.Operations
+{
+ ///
+ ///
+ ///
+ public class CardknoxEventArgs : EventArgs
+ {
+ ///
+ ///
+ ///
+ public ReadOnlyDictionary Results { get { return new ReadOnlyDictionary(_results); } }
+ private Dictionary _results;
+
+ ///
+ ///
+ ///
+ ///
+ public CardknoxEventArgs(NameValueCollection _values)
+ {
+ _results = new Dictionary();
+ foreach (var k in _values.AllKeys)
+ {
+ if (!Log.NoInclude.Contains(k))
+ _results.Add(k, _values[k]);
+ }
+ }
+ }
+}