Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
bin
obj

# User specific files
Spreedly.Net.suo
*.user

# Nuget packages
packages

# mstest test results
TestResults
1 change: 1 addition & 0 deletions src/Spreedly.Net/Spreedly.Net.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Model\BaseAsyncClient.cs" />
<Compile Include="Spreedly\TransactionResponse.cs" />
<Compile Include="Spreedly\Gateway.cs" />
<Compile Include="Spreedly\Transaction.cs" />
<Compile Include="Extensions\SpreedlyExtensions.cs" />
Expand Down
6 changes: 0 additions & 6 deletions src/Spreedly.Net/Spreedly.Net.csproj.user

This file was deleted.

24 changes: 19 additions & 5 deletions src/Spreedly.Net/Spreedly/Transaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Spreedly.Net.BuiltIns
{
public class Transaction
{
internal Transaction(string raw, string amount, string wasTest, string succeeded, string token, string obfuscatedNumber, string avs_code, TransactionErrors errors)
internal Transaction(string raw, string amount, string wasTest, string succeeded, string token, string obfuscatedNumber, TransactionErrors errors)
{
if (!string.IsNullOrEmpty(amount))
Amount = decimal.Parse(amount, CultureInfo.InvariantCulture);
Expand All @@ -21,7 +21,6 @@ internal Transaction(string raw, string amount, string wasTest, string succeeded
ObfuscatedNumber = obfuscatedNumber;
Errors = errors;

AvsCode = avs_code;
Raw = raw;
}

Expand Down Expand Up @@ -51,13 +50,15 @@ public static Transaction FromXml(XElement tran)
tran.GetStringChild("succeeded"),
tran.GetStringChild("token"),
tran.Element("payment_method").GetStringChild("number"),
tran.Element("response").GetStringChild("avs_code"),
new TransactionErrors(tran)
);
);

ret.GatewayToken = tran.GetStringChild("gateway_token");
ret.GatewayTransactionId = tran.GetStringChild("gateway_transaction_id");
ret.CreatedAt = DateTime.Parse(tran.GetStringChild("created_at"));

ret.Response = new TransactionResponse(tran.Element("response"));

if (ret.Succeeded == false && ret.Errors.Count == 0)
{
if (string.Equals(tran.GetStringChild("state"), "gateway_processing_failed",
Expand Down Expand Up @@ -100,15 +101,28 @@ public static List<Transaction> ListFromXml(XDocument doc)

public string ObfuscatedNumber { get; private set; }

public string AvsCode { get; private set; }
[Obsolete("Use Response.AvsCode instead")]
public string AvsCode
{
get
{
if (Response != null)
return Response.AvsCode;
return null;
}
}

public TransactionErrors Errors { get; private set; }

public string Raw { get; private set; }

public string GatewayToken { get; set; }

public string GatewayTransactionId { get; set; }

public DateTime CreatedAt { get; set; }

public TransactionResponse Response { get; private set; }
}

public class TransactionErrors
Expand Down
59 changes: 59 additions & 0 deletions src/Spreedly.Net/Spreedly/TransactionResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Spreedly.Net.Extensions;

namespace Spreedly.Net.BuiltIns
{
public class TransactionResponse
{
public TransactionResponse(XElement node)
{
this.Success = string.Equals(node.GetStringChild("success"), "true", StringComparison.CurrentCultureIgnoreCase);
this.Pending = string.Equals(node.GetStringChild("pending"), "true", StringComparison.CurrentCultureIgnoreCase);
this.Cancelled = string.Equals(node.GetStringChild("cancelled"), "true", StringComparison.CurrentCultureIgnoreCase);
this.FraudReview = string.Equals(node.GetStringChild("fraud_review"), "true", StringComparison.CurrentCultureIgnoreCase);

this.Message = node.GetStringChild("message");
this.AvsCode = node.GetStringChild("avs_code");
this.AvsMessage = node.GetStringChild("avs_message");
this.CvvCode = node.GetStringChild("cvv_code");
this.CvvMessage = node.GetStringChild("cvv_message");
this.ErrorCode = node.GetStringChild("error_code");
this.ErrorDetail = node.GetStringChild("error_detail");

this.CreatedAt = DateTime.Parse(node.GetStringChild("created_at"));

var _updatedAt = node.GetStringChild("updated_at", null);
this.UpdatedAt = _updatedAt == null ? (DateTime?)null : DateTime.Parse(_updatedAt);
}

public bool Success { get; private set; }

public string Message { get; private set; }

public string AvsCode { get; private set; }

public string AvsMessage { get; private set; }

public string CvvCode { get; private set; }

public string CvvMessage { get; private set; }

public bool Pending { get; private set; }

public string ErrorCode { get; private set; }

public string ErrorDetail { get; private set; }

public bool Cancelled { get; private set; }

public bool FraudReview { get; private set; }

public DateTime CreatedAt { get; private set; }

public DateTime? UpdatedAt { get; private set; }
}
}
1 change: 1 addition & 0 deletions src/Test.Spreedly.Net/Tests_For_Payments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ public void when_we_generate_a_good_transaction()
Assert.IsTrue(t.Succeeded);
Assert.AreEqual("7212OjIpGu839iDJa7iOoqxgQwb", t.Token);
Assert.AreEqual("XXXX-XXXX-XXXX-1111", t.ObfuscatedNumber);
Assert.IsNotNull(t.Response);
}

[TestMethod]
Expand Down
Binary file not shown.
Binary file not shown.
Loading