diff --git a/Craftgate/Adapter/FraudAdapter.cs b/Craftgate/Adapter/FraudAdapter.cs index 4468c40..21b0f5f 100644 --- a/Craftgate/Adapter/FraudAdapter.cs +++ b/Craftgate/Adapter/FraudAdapter.cs @@ -73,14 +73,26 @@ public Task RetrieveValueListAsync(string listName) CreateHeaders(path, RequestOptions)); } - public void CreateValueList(string listName) + public void CreateValueList(string listName, FraudValueType type) { - AddValueToValueList(listName, null, null); + AddValueToValueList(new FraudValueListRequest + { + ListName = listName, + Type = type, + Value = null, + DurationInSeconds = null + }); } - public Task CreateValueListAsync(string listName) + public Task CreateValueListAsync(string listName, FraudValueType type) { - return AddValueToValueListAsync(listName, null, null); + return AddValueToValueListAsync(new FraudValueListRequest + { + ListName = listName, + Type = type, + Value = null, + DurationInSeconds = null + }); } public void DeleteValueList(string listName) @@ -97,28 +109,16 @@ public Task DeleteValueListAsync(string listName) CreateHeaders(path, RequestOptions)); } - public void AddValueToValueList(string listName, string value, int? expireInSeconds) + public void AddValueToValueList(FraudValueListRequest request) { const string path = "/fraud/v1/value-lists"; - var request = new FraudValueListRequest - { - ListName = listName, - Value = value, - DurationInSeconds = expireInSeconds - }; RestClient.Post(RequestOptions.BaseUrl + path, CreateHeaders(request, path, RequestOptions), request); } - public Task AddValueToValueListAsync(string listName, string value, int? expireInSeconds) + public Task AddValueToValueListAsync(FraudValueListRequest request) { const string path = "/fraud/v1/value-lists"; - var request = new FraudValueListRequest - { - ListName = listName, - Value = value, - DurationInSeconds = expireInSeconds - }; return AsyncRestClient.Post(RequestOptions.BaseUrl + path, CreateHeaders(request, path, RequestOptions), request); } @@ -130,9 +130,9 @@ public void RemoveValueFromValueList(string listName, string value) CreateHeaders(path, RequestOptions)); } - public Task RemoveValueFromValueListAsync(string listName, string value) + public Task RemoveValueFromValueListAsync(string listName, string valueId) { - var path = "/fraud/v1/value-lists/" + listName + "/values/" + value; + var path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId; return AsyncRestClient.Delete(RequestOptions.BaseUrl + path, CreateHeaders(path, RequestOptions)); } diff --git a/Craftgate/Model/FraudValueType.cs b/Craftgate/Model/FraudValueType.cs new file mode 100644 index 0000000..6e0e2ec --- /dev/null +++ b/Craftgate/Model/FraudValueType.cs @@ -0,0 +1,14 @@ +using System.Runtime.Serialization; + +namespace Craftgate.Model +{ + public enum FraudValueType + { + [EnumMember(Value = "CARD")] CARD, + [EnumMember(Value = "IP")] IP, + [EnumMember(Value = "PHONE_NUMBER")] PHONE_NUMBER, + [EnumMember(Value = "EMAIL")] EMAIL, + [EnumMember(Value = "OTHER")] OTHER + + } +} \ No newline at end of file diff --git a/Craftgate/Request/FraudValueListRequest.cs b/Craftgate/Request/FraudValueListRequest.cs index d6ecb30..ae18ecd 100644 --- a/Craftgate/Request/FraudValueListRequest.cs +++ b/Craftgate/Request/FraudValueListRequest.cs @@ -5,7 +5,10 @@ namespace Craftgate.Request public class FraudValueListRequest { public string ListName { get; set; } + public FraudValueType Type { get; set; } + public string Label { get; set; } public string Value { get; set; } public int? DurationInSeconds { get; set; } + public long? PaymentId { get; set; } } } \ No newline at end of file diff --git a/Craftgate/Response/Dto/FraudPaymentData.cs b/Craftgate/Response/Dto/FraudPaymentData.cs index b937e20..0e22104 100644 --- a/Craftgate/Response/Dto/FraudPaymentData.cs +++ b/Craftgate/Response/Dto/FraudPaymentData.cs @@ -8,8 +8,6 @@ public class FraudPaymentData public string ConversationId { get; set; } public decimal PaidPrice { get; set; } public string Currency { get; set; } - public string CardFingerprintId { get; set; } - public DateTime CardFingerprintExpirationDate { get; set; } public long? BuyerId { get; set; } public string ClientIp { get; set; } } diff --git a/Craftgate/Response/Dto/FraudValue.cs b/Craftgate/Response/Dto/FraudValue.cs index 30ba33b..7f9057f 100644 --- a/Craftgate/Response/Dto/FraudValue.cs +++ b/Craftgate/Response/Dto/FraudValue.cs @@ -2,6 +2,8 @@ namespace Craftgate.Response.Dto { public class FraudValue { + public string Id { get; set; } + public string Label { get; set; } public string Value { get; set; } public int? ExpireInSeconds { get; set; } } diff --git a/Samples/FraudSample.cs b/Samples/FraudSample.cs index a269489..29a5858 100644 --- a/Samples/FraudSample.cs +++ b/Samples/FraudSample.cs @@ -62,25 +62,56 @@ public void Retrieve_All_Fraud_Value_Lists() [Test] public void Create_Fraud_Value_List() { - _craftgateClient.Fraud().CreateValueList("ipList"); + _craftgateClient.Fraud().CreateValueList("ipList", FraudValueType.IP); } [Test] public void Add_Value_To_Fraud_Value_List() { - _craftgateClient.Fraud().AddValueToValueList("ipList", "127.0.0.1", null); + var request = new FraudValueListRequest + { + ListName = "ipList", + Type = FraudValueType.IP, + Label = "local ip 1", + Value = "127.0.0.1" + }; + + _craftgateClient.Fraud().AddValueToValueList(request); + } + + [Test] + public void Add_CardFingerprint_To_Fraud_Value_List() + { + var request = new FraudValueListRequest + { + ListName = "cardList", + Type = FraudValueType.CARD, + Label = "John Doe's Card", + PaymentId = 11675L + }; + + _craftgateClient.Fraud().AddValueToValueList(request); } [Test] public void Add_Temporary_Value_To_Fraud_Value_List() { - _craftgateClient.Fraud().AddValueToValueList("ipList", "127.0.0.2", 60); + var request = new FraudValueListRequest + { + ListName = "ipList", + Type = FraudValueType.IP, + Label = "local ip 2", + Value = "127.0.0.2", + DurationInSeconds = 60 + }; + + _craftgateClient.Fraud().AddValueToValueList(request); } [Test] public void Remove_Value_From_Fraud_Value_List() { - _craftgateClient.Fraud().RemoveValueFromValueList("ipList", "127.0.0.2"); + _craftgateClient.Fraud().RemoveValueFromValueList("ipList", "9bf6d4de-59ee-48c1-8404-374999ab1a4e"); } [Test]