Skip to content

Commit

Permalink
Merge pull request #51 from JudoPay/develop
Browse files Browse the repository at this point in the history
Prepare release
  • Loading branch information
ashleybarrett authored Nov 1, 2016
2 parents 98ba8ad + 660fd48 commit a46d433
Show file tree
Hide file tree
Showing 12 changed files with 174 additions and 12 deletions.
9 changes: 8 additions & 1 deletion JudoPayDotNet/Clients/BasePayments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace JudoPayDotNet.Clients
{
internal abstract class BasePayments : JudoPayClient
{

protected readonly IValidator<CardPaymentModel> CardPaymentValidator = new CardPaymentValidator();
protected readonly IValidator<TokenPaymentModel> TokenPaymentValidator = new TokenPaymentValidator();
protected readonly IValidator<PKPaymentModel> PKPaymentValidator = new PKPaymentValidator();
protected readonly IValidator<AndroidPaymentModel> AndroidPaymentValidator = new AndroidPaymentValidator();

private readonly string _createAddress;

Expand Down Expand Up @@ -42,5 +42,12 @@ public Task<IResult<ITransactionResult>> Create(PKPaymentModel pkPayment)
pkPayment.ProvisionSDKVersion();
return validationError ?? PostInternal<PKPaymentModel, ITransactionResult>(_createAddress, pkPayment);
}

public Task<IResult<ITransactionResult>> Create(AndroidPaymentModel androidPayment)
{
var validationError = Validate<AndroidPaymentModel, ITransactionResult>(AndroidPaymentValidator, androidPayment);
androidPayment.ProvisionSDKVersion();
return validationError ?? PostInternal<AndroidPaymentModel, ITransactionResult>(_createAddress, androidPayment);
}
}
}
11 changes: 10 additions & 1 deletion JudoPayDotNet/Clients/BasePreAuth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ internal class BasePreAuth : JudoPayClient
protected readonly IValidator<CardPaymentModel> CardPaymentValidator = new CardPaymentValidator();
protected readonly IValidator<TokenPaymentModel> TokenPaymentValidator = new TokenPaymentValidator();
protected readonly IValidator<PKPaymentModel> PKPaymentValidator = new PKPaymentValidator();
protected readonly IValidator<AndroidPaymentModel> AndroidPaymentValidator = new AndroidPaymentValidator();

private readonly string _createPreAuthAddress;

Expand Down Expand Up @@ -40,5 +41,13 @@ public Task<IResult<ITransactionResult>> Create(PKPaymentModel pkPreAuth)
pkPreAuth.ProvisionSDKVersion();
return validationError ?? PostInternal<PKPaymentModel, ITransactionResult>(_createPreAuthAddress, pkPreAuth);
}

public Task<IResult<ITransactionResult>> Create(AndroidPaymentModel androidPreAuth)
{
var validationError = Validate<AndroidPaymentModel, ITransactionResult>(AndroidPaymentValidator, androidPreAuth);
androidPreAuth.ProvisionSDKVersion();
return validationError ?? PostInternal<AndroidPaymentModel, ITransactionResult>(_createPreAuthAddress, androidPreAuth);
}

}
}
}
14 changes: 10 additions & 4 deletions JudoPayDotNet/Clients/IPayments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,20 @@ public interface IPayments
/// <returns>The receipt for the created token payment</returns>
Task<IResult<ITransactionResult>> Create(TokenPaymentModel tokenPayment);


/// <summary>
/// Creates the specified apple payment.
/// Creates the specified Apple Pay payment.
/// </summary>
/// <param name="pkPayment">The apple payment.</param>
/// <returns>The receipt for the created apple payment</returns>
/// <param name="pkPayment">The Apple Pay payment.</param>
/// <returns>The receipt for the created Apple Pay payment</returns>
Task<IResult<ITransactionResult>> Create(PKPaymentModel pkPayment);

/// <summary>
/// Creates the specified Android Pay payment.
/// </summary>
/// <param name="androidPayment">The Android Pay payment.</param>
/// <returns>The receipt for the created Android Pay payment</returns>
Task<IResult<ITransactionResult>> Create(AndroidPaymentModel androidPayment);

/// <summary>
/// Validates the specified card payment.
/// </summary>
Expand Down
16 changes: 14 additions & 2 deletions JudoPayDotNet/Clients/IPreAuths.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,19 @@ public interface IPreAuths
/// <returns>The receipt for the created token pre authorization</returns>
Task<IResult<ITransactionResult>> Create(TokenPaymentModel tokenPreAuth);


/// <summary>
/// Creates the specified apple Pay pre authorization.
/// </summary>
/// <param name="pkPreAuth">The apple payment.</param>
/// <param name="pkPreAuth">The apple pay pre authorization.</param>
/// <returns>The receipt for the created apple pre authorization</returns>
Task<IResult<ITransactionResult>> Create(PKPaymentModel pkPreAuth);

/// <summary>
/// Creates the specified Android Pay pre authorization.
/// </summary>
/// <param name="androidPayment">The Android Pay pre authorization.</param>
/// <returns>The receipt for the created Android Pay pre authorization</returns>
Task<IResult<ITransactionResult>> Create(AndroidPaymentModel androidPreAuth);

/// <summary>
/// Validates the specified card pre authorization.
Expand All @@ -54,6 +59,13 @@ public interface IPreAuths
/// <param name="pkPreAuth">The apple pre authorization.</param>
/// <returns>If the apple payment is valid</returns>
Task<IResult<JudoApiErrorModel>> Validate(PKPaymentModel pkPreAuth);

/// <summary>
/// Validates the specified Android Pay pre authorization.
/// </summary>
/// <param name="pkPreAuth">The Android Pay pre authorization.</param>
/// <returns>If the apple payment is valid</returns>
Task<IResult<JudoApiErrorModel>> Validate(AndroidPaymentModel androidPreAuth);
}
// ReSharper restore UnusedMember.Global
}
12 changes: 10 additions & 2 deletions JudoPayDotNet/Clients/Payments.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
using JudoPayDotNet.Errors;
using JudoPayDotNet.Http;
using JudoPayDotNet.Logging;
Expand All @@ -21,6 +22,13 @@ public Payments(ILog logger, IClient client, bool deDuplicate=false,
_deDuplicateTransactions = deDuplicate;
}

public Task<IResult<JudoApiErrorModel>> Validate(AndroidPaymentModel androidPayment)
{
var validationError = Validate<AndroidPaymentModel, JudoApiErrorModel>(AndroidPaymentValidator, androidPayment);

return validationError ?? PostInternal<AndroidPaymentModel, JudoApiErrorModel>(_validateAddress, androidPayment);
}

public Task<IResult<JudoApiErrorModel>> Validate(CardPaymentModel cardPayment)
{
var validationError = Validate<CardPaymentModel, JudoApiErrorModel>(CardPaymentValidator, cardPayment);
Expand All @@ -42,4 +50,4 @@ public Task<IResult<JudoApiErrorModel>> Validate(PKPaymentModel pkPayment)
return validationError ?? PostInternal<PKPaymentModel, JudoApiErrorModel>(_validateAddress, pkPayment);
}
}
}
}
7 changes: 7 additions & 0 deletions JudoPayDotNet/Clients/PreAuth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,12 @@ public Task<IResult<JudoApiErrorModel>> Validate(PKPaymentModel pkPreAuth)

return validationError ?? PostInternal<PKPaymentModel, JudoApiErrorModel>(_validatePreAuthAddress, pkPreAuth);
}

public Task<IResult<JudoApiErrorModel>> Validate(AndroidPaymentModel androidPreAuth)
{
var validationError = Validate<AndroidPaymentModel, JudoApiErrorModel>(AndroidPaymentValidator, androidPreAuth);

return validationError ?? PostInternal<AndroidPaymentModel, JudoApiErrorModel>(_validatePreAuthAddress, androidPreAuth);
}
}
}
2 changes: 1 addition & 1 deletion JudoPayDotNet/JudoPayApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public class JudoPayApi : IJudoPayApi

public JudoPayApi(Func<Type, ILog> logger, IClient client)
{
Payments = new Payments(logger(typeof(Payments)), client,true);
Payments = new Payments(logger(typeof(Payments)), client, true);
Refunds = new Refunds(logger(typeof(Refunds)), client);
PreAuths = new PreAuths(logger(typeof(PreAuths)), client, true);
Transactions = new Transactions(logger(typeof(Transactions)), client);
Expand Down
3 changes: 3 additions & 0 deletions JudoPayDotNet/JudoPayDotNet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
<ItemGroup>
<Compile Include="Authentication\Credentials.cs" />
<Compile Include="Authentication\ICredentials.cs" />
<Compile Include="Models\AndroidPaymentModel.cs" />
<Compile Include="Clients\BaseCollections.cs" />
<Compile Include="Clients\BasePayments.cs" />
<Compile Include="Clients\BasePreAuth.cs" />
Expand Down Expand Up @@ -168,6 +169,7 @@
<Compile Include="Models\TransactionListSorts.cs" />
<Compile Include="Models\TransactionModel.cs" />
<Compile Include="Models\TransactionType.cs" />
<Compile Include="Models\Validations\AndroidPaymentValidator.cs" />
<Compile Include="Models\Validations\JudoModelErrorCodes.cs" />
<Compile Include="Models\Validations\PKPaymentValidator.cs" />
<Compile Include="Models\Validations\RegisterCardValidator.cs" />
Expand All @@ -183,6 +185,7 @@
<Compile Include="Models\Validations\TransactionResultBaseValidation.cs" />
<Compile Include="Models\Validations\TransactionResultValidation.cs" />
<Compile Include="Models\Validations\WebPaymentRequestModelValidator.cs" />
<Compile Include="Models\AndroidWalletModel.cs" />
<Compile Include="Models\WalletType.cs" />
<Compile Include="Models\WebPaymentCardAddress.cs" />
<Compile Include="Models\WebPaymentResponseModel.cs" />
Expand Down
15 changes: 15 additions & 0 deletions JudoPayDotNet/Models/AndroidPaymentModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System.Runtime.Serialization;

// ReSharper disable ClassNeverInstantiated.Global

namespace JudoPayDotNet.Models
{
[DataContract]
public class AndroidPaymentModel : PaymentModel
{

[DataMember(IsRequired = true)]
public AndroidWalletModel Wallet { get; set; }

}
}
48 changes: 48 additions & 0 deletions JudoPayDotNet/Models/AndroidWalletModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
using Newtonsoft.Json.Linq;
using System.Runtime.Serialization;

namespace JudoPayDotNet.Models
{
public class AndroidWalletModel
{

[DataMember(IsRequired = true)]
public string EncryptedMessage{ get; set; }

[DataMember(IsRequired = true)]
public string EphemeralPublicKey { get; set; }

[DataMember(IsRequired = true)]
public string Tag { get; set; }

[DataMember(IsRequired = true)]
public string PublicKey { get; set; }

[DataMember(IsRequired = true)]
public string InstrumentDetails { get; set; }

[DataMember(IsRequired = true)]
public string InstrumentType { get; set; }

[DataMember(IsRequired = true)]
public string GoogleTransactionId { get; set; }

[DataMember(IsRequired = true)]
public int Environment { get; set; }

[DataMember(IsRequired = true)]
public int Version { get; set; }

public string PaymentMethodToken
{
set
{
var json = JObject.Parse(value);
EncryptedMessage = json.GetValue("encryptedMessage").Value<string>();
EphemeralPublicKey = json.GetValue("ephemeralPublicKey").Value<string>();
Tag = json.GetValue("tag").Value<string>();
}
private get { return null; }
}
}
}
9 changes: 8 additions & 1 deletion JudoPayDotNet/Models/PaymentReceiptModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,16 @@ public class PaymentReceiptModel : ITransactionResult
/// The refunds.
/// </value>
[DataMember(EmitDefaultValue = false)]

public decimal Refunds { get; set; }

/// <summary>
/// Gets or sets your payment reference.
/// </summary>
/// <value>
/// Your payment reference.
/// </value>
[DataMember(EmitDefaultValue = false)]
public string YourPaymentReference { get; set; }

/// <summary>
/// Gets or sets the net amount.
Expand Down
40 changes: 40 additions & 0 deletions JudoPayDotNet/Models/Validations/AndroidPaymentValidator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using FluentValidation;

namespace JudoPayDotNet.Models.Validations
{
internal class AndroidPaymentValidator : PaymentsBaseValidator<AndroidPaymentModel>
{
public AndroidPaymentValidator()
{
RuleFor(model => model.Wallet)
.NotEmpty().WithMessage("You must supply a wallet");

RuleFor(model => model.Wallet.EncryptedMessage)
.NotEmpty().WithMessage("You must supply the EncryptedMessage");

RuleFor(model => model.Wallet.EphemeralPublicKey)
.NotEmpty().WithMessage("You must supply the EphemeralPublicKey");

RuleFor(model => model.Wallet.Tag)
.NotEmpty().WithMessage("You must supply the Tag");

RuleFor(model => model.Wallet.PublicKey)
.NotEmpty().WithMessage("You must supply the PublicKey");

RuleFor(model => model.Wallet.InstrumentDetails)
.NotEmpty().WithMessage("You must supply the InstrumentDetails");

RuleFor(model => model.Wallet.InstrumentType)
.NotEmpty().WithMessage("You must supply the InstrumentType");

RuleFor(model => model.Wallet.GoogleTransactionId)
.NotEmpty().WithMessage("You must supply the GoogleTransactionId");

RuleFor(model => model.Wallet.Environment)
.NotEmpty().WithMessage("You must supply the Environment");

RuleFor(model => model.Wallet.Version)
.NotEmpty().WithMessage("You must supply the Version");
}
}
}

0 comments on commit a46d433

Please sign in to comment.