added transaction-information and void-transaction endpoints
This commit is contained in:
parent
3f559dfd45
commit
df9d822465
40
Client.cs
40
Client.cs
@ -320,10 +320,10 @@ namespace Creditcall.ChipDna.Client
|
|||||||
PerformConfirmTransaction("", out TransactionConfirmation confirmation);
|
PerformConfirmTransaction("", out TransactionConfirmation confirmation);
|
||||||
break;
|
break;
|
||||||
case "V":
|
case "V":
|
||||||
PerformVoidTransaction();
|
PerformVoidTransaction("");
|
||||||
break;
|
break;
|
||||||
case "I":
|
case "I":
|
||||||
PerformGetTransactionInformation();
|
PerformGetTransactionInformation("");
|
||||||
break;
|
break;
|
||||||
case "K":
|
case "K":
|
||||||
PerformReleaseCard();
|
PerformReleaseCard();
|
||||||
@ -738,18 +738,13 @@ namespace Creditcall.ChipDna.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PerformVoidTransaction()
|
public Dictionary<string, string> PerformVoidTransaction(string referenceValue)
|
||||||
{
|
{
|
||||||
var reference = GetReference(true, "");
|
var transactionResult = new Dictionary<string, string>();
|
||||||
var voidReason = GetUserInput("\r\nPlease Enter Void Reason (Optional)");
|
|
||||||
var parameters = new ParameterSet();
|
var parameters = new ParameterSet();
|
||||||
if (!string.IsNullOrEmpty(reference))
|
if (!string.IsNullOrEmpty(referenceValue))
|
||||||
{
|
{
|
||||||
parameters.Add(ParameterKeys.Reference, reference);
|
parameters.Add(ParameterKeys.Reference, referenceValue);
|
||||||
}
|
|
||||||
if (!String.IsNullOrEmpty(voidReason))
|
|
||||||
{
|
|
||||||
parameters.Add(ParameterKeys.VoidReason, voidReason);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
parameters.Add(GetExtraParams("VoidTransaction"));
|
parameters.Add(GetExtraParams("VoidTransaction"));
|
||||||
@ -777,12 +772,18 @@ namespace Creditcall.ChipDna.Client
|
|||||||
{
|
{
|
||||||
Console.WriteLine("ErrorDescription: {0}", errorDescription);
|
Console.WriteLine("ErrorDescription: {0}", errorDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var responseParameter = response.ToList();
|
||||||
|
responseParameter.ForEach(parameter =>
|
||||||
|
{
|
||||||
|
transactionResult.Add(parameter.Key, parameter.Value);
|
||||||
|
});
|
||||||
|
return transactionResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PerformGetTransactionInformation()
|
public Dictionary<string, string> PerformGetTransactionInformation(string referenceValue)
|
||||||
{
|
{
|
||||||
var referenceValue = GetReference(true, "");
|
var result = new Dictionary<string, string>();
|
||||||
|
|
||||||
var parameters = new ParameterSet();
|
var parameters = new ParameterSet();
|
||||||
if (!string.IsNullOrEmpty(referenceValue))
|
if (!string.IsNullOrEmpty(referenceValue))
|
||||||
{
|
{
|
||||||
@ -793,18 +794,11 @@ namespace Creditcall.ChipDna.Client
|
|||||||
var response = chipDnaClientLib.GetTransactionInformation(parameters);
|
var response = chipDnaClientLib.GetTransactionInformation(parameters);
|
||||||
|
|
||||||
var responseParameter = response.ToList();
|
var responseParameter = response.ToList();
|
||||||
|
|
||||||
responseParameter.ForEach(parameter =>
|
responseParameter.ForEach(parameter =>
|
||||||
{
|
{
|
||||||
if (parameter.Key == ParameterKeys.Errors)
|
result.Add(parameter.Key, parameter.Value);
|
||||||
{
|
|
||||||
Console.WriteLine(ErrorsString("GetTransactionInformation Errors", parameter.Value));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("{0} {1}", parameter.Key, parameter.Value);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetUserInput(string prompt)
|
private static string GetUserInput(string prompt)
|
||||||
|
|||||||
77
ClientApp.cs
77
ClientApp.cs
@ -74,13 +74,15 @@ namespace Creditcall.ChipDna.Client
|
|||||||
HttpListener listener = new HttpListener();
|
HttpListener listener = new HttpListener();
|
||||||
listener.Prefixes.Add("http://127.0.0.1:18181/start-transaction/");
|
listener.Prefixes.Add("http://127.0.0.1:18181/start-transaction/");
|
||||||
listener.Prefixes.Add("http://127.0.0.1:18181/start-and-confirm-transaction/");
|
listener.Prefixes.Add("http://127.0.0.1:18181/start-and-confirm-transaction/");
|
||||||
|
listener.Prefixes.Add("http://127.0.0.1:18181/transaction-information/");
|
||||||
listener.Prefixes.Add("http://127.0.0.1:18181/void-transaction/");
|
listener.Prefixes.Add("http://127.0.0.1:18181/void-transaction/");
|
||||||
listener.Start();
|
listener.Start();
|
||||||
|
|
||||||
Console.WriteLine("Listening on:");
|
Console.WriteLine("Listening on:");
|
||||||
Console.WriteLine(" http://127.0.0.1:18181/start-transaction/");
|
Console.WriteLine(" http://127.0.0.1:18181/start-transaction/");
|
||||||
Console.WriteLine(" http://127.0.0.1:18181/start-and-confirm-transaction/");
|
Console.WriteLine(" http://127.0.0.1:18181/start-and-confirm-transaction/");
|
||||||
//Console.WriteLine(" http://127.0.0.1:18181/void-transaction/");
|
Console.WriteLine(" http://127.0.0.1:18181/transaction-information/");
|
||||||
|
Console.WriteLine(" http://127.0.0.1:18181/void-transaction/");
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
@ -100,10 +102,19 @@ namespace Creditcall.ChipDna.Client
|
|||||||
if (rawUrl.StartsWith("/start-transaction", StringComparison.OrdinalIgnoreCase))
|
if (rawUrl.StartsWith("/start-transaction", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
HandleStartTransaction(context);
|
HandleStartTransaction(context);
|
||||||
|
|
||||||
} else if (rawUrl.StartsWith("/start-and-confirm-transaction", StringComparison.OrdinalIgnoreCase))
|
} else if (rawUrl.StartsWith("/start-and-confirm-transaction", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
HandleStartAndConfirmTransaction(context);
|
HandleStartAndConfirmTransaction(context);
|
||||||
}
|
}
|
||||||
|
else if (rawUrl.StartsWith("/transaction-information", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
HandleTransactionInformation(context);
|
||||||
|
}
|
||||||
|
else if (rawUrl.StartsWith("/void-transaction", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
HandleVoidTransaction(context);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 404;
|
context.Response.StatusCode = 404;
|
||||||
@ -123,6 +134,58 @@ namespace Creditcall.ChipDna.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void HandleTransactionInformation(HttpListenerContext context)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var serializer = new XmlSerializer(typeof(TransactionReferenceRequest));
|
||||||
|
TransactionReferenceRequest req = (TransactionReferenceRequest)serializer.Deserialize(context.Request.InputStream);
|
||||||
|
|
||||||
|
var transactionResult = client.PerformGetTransactionInformation(req.TransactionReference);
|
||||||
|
|
||||||
|
// Return the final key/value list
|
||||||
|
var responseSerializer = new XmlSerializer(typeof(SerializableKeyValueList));
|
||||||
|
context.Response.ContentType = "application/xml";
|
||||||
|
var wrappedResult = new SerializableKeyValueList(transactionResult);
|
||||||
|
responseSerializer.Serialize(context.Response.OutputStream, wrappedResult);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Error in transaction-information: " + ex.Message);
|
||||||
|
context.Response.StatusCode = 500;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
context.Response.OutputStream.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void HandleVoidTransaction(HttpListenerContext context)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var serializer = new XmlSerializer(typeof(TransactionReferenceRequest));
|
||||||
|
TransactionReferenceRequest req = (TransactionReferenceRequest)serializer.Deserialize(context.Request.InputStream);
|
||||||
|
|
||||||
|
var transactionResult = client.PerformVoidTransaction(req.TransactionReference);
|
||||||
|
|
||||||
|
// Return the final key/value list
|
||||||
|
var responseSerializer = new XmlSerializer(typeof(SerializableKeyValueList));
|
||||||
|
context.Response.ContentType = "application/xml";
|
||||||
|
var wrappedResult = new SerializableKeyValueList(transactionResult);
|
||||||
|
responseSerializer.Serialize(context.Response.OutputStream, wrappedResult);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Error in transaction-information: " + ex.Message);
|
||||||
|
context.Response.StatusCode = 500;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
context.Response.OutputStream.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void HandleStartAndConfirmTransaction(HttpListenerContext context)
|
private static void HandleStartAndConfirmTransaction(HttpListenerContext context)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -388,9 +451,6 @@ namespace Creditcall.ChipDna.Client
|
|||||||
{
|
{
|
||||||
public string amount { get; set; }
|
public string amount { get; set; }
|
||||||
public string transactionType { get; set; }
|
public string transactionType { get; set; }
|
||||||
|
|
||||||
// For confirm transaction
|
|
||||||
public string transactionReference { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlRoot("TransactionConfirmation")]
|
[XmlRoot("TransactionConfirmation")]
|
||||||
@ -400,6 +460,13 @@ namespace Creditcall.ChipDna.Client
|
|||||||
public string Errors { get; set; }
|
public string Errors { get; set; }
|
||||||
public string ErrorDescription { get; set; }
|
public string ErrorDescription { get; set; }
|
||||||
public string ReceiptDataCardholder { get; set; }
|
public string ReceiptDataCardholder { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[XmlRoot("TransactionReferenceRequest")]
|
||||||
|
public class TransactionReferenceRequest
|
||||||
|
{
|
||||||
|
[XmlElement("TransactionReference")]
|
||||||
|
public string TransactionReference { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user