Skip to content

Commit

Permalink
Merge pull request #1 from cezarpopa/feature/misc-adjustments
Browse files Browse the repository at this point in the history
Miscellaneous adjustments
  • Loading branch information
totpero authored Jun 30, 2020
2 parents 92573b9 + 9f4c0cd commit e7c2d43
Show file tree
Hide file tree
Showing 29 changed files with 157 additions and 69 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,3 +348,5 @@ MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

.idea/
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Bt.IPay.Net
Banca Transilvania Payments .Net Provider
# BT.IPay.Net
Banca Transilvania ePos .Net Provider

Mai multe detalii: https://btepos.ro/documentatie
Documentatie BT ePos: https://btepos.ro/documentatie


![alt text](btepos.ro-web.jpg)
4 changes: 1 addition & 3 deletions src/Bt.IPay.Net/Constants/ApiConsts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ public static class Production
public const string BaseRegisterPreAuthApiPath = BaseApiPath + "/registerPreAuth.do";
public const string BaseGetOrderStatusApiPath = BaseApiPath + "/getOrderStatus.do";
public const string BaseGetOrderStatusExtendedApiPath = BaseApiPath + "/getOrderStatusExtended.do";

}

public static class Test
Expand All @@ -23,7 +22,6 @@ public static class Test
public const string BaseRegisterPreAuthApiPath = BaseApiPath + "/registerPreAuth.do";
public const string BaseGetOrderStatusApiPath = BaseApiPath + "/getOrderStatus.do";
public const string BaseGetOrderStatusExtendedApiPath = BaseApiPath + "/getOrderStatusExtended.do";

}
}
}
}
2 changes: 1 addition & 1 deletion src/Bt.IPay.Net/Internal/FormDataHttpClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ public async Task<TR> PostAsync<T, TR>(string uri, T data)
return output;
}
}
}
}
2 changes: 1 addition & 1 deletion src/Bt.IPay.Net/Internal/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ public static string GetTimeStamp()
return DateTime.Now.ToString("yyyyMMddHHmmssffff");
}
}
}
}
2 changes: 1 addition & 1 deletion src/Bt.IPay.Net/Internal/JsonConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ public static string SerializeObject<T>(T data)
return JsonConvert.SerializeObject(data);
}
}
}
}
2 changes: 1 addition & 1 deletion src/Bt.IPay.Net/Internal/JsonHttpClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ public async Task<TR> PostAsync<T, TR>(string uri, T data)
return output;
}
}
}
}
18 changes: 13 additions & 5 deletions src/Bt.IPay.Net/IpayClient.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.Threading.Tasks;
using Bt.IPay.Net.Constants;
using Bt.IPay.Net.Internal;
using Bt.IPay.Net.Reqursts;
using Bt.IPay.Net.Requests;
using Bt.IPay.Net.Responses;
using Bt.IPay.Net.Responses.GetOrderStatusExtended;

Expand All @@ -20,7 +20,9 @@ public class IpayClient: FormDataHttpClient
public static bool Debug = true;

/// <summary>
/// Credențialele de acces sunt perechi de tipul nume de utilizator și parolă și sunt furnizate de către Banca Transilvania în momentul creării comerciantului pe platforma iPay. Acestea sunt necesare pentru accesarea consolei iPay și pentru apelarea API-urilor.
/// Credențialele de acces sunt perechi de tipul nume de utilizator și parolă și sunt furnizate de către
/// Banca Transilvania în momentul creării comerciantului pe platforma iPay. Acestea sunt necesare pentru
/// accesarea consolei iPay și pentru apelarea API-urilor.
/// Atentie! Credențialele de producție nu funcționează pe mediul de test sau vice-versa.
/// </summary>
/// <param name="username"></param>
Expand All @@ -33,7 +35,10 @@ public IpayClient(string username, string password)
}

/// <summary>
/// Credențialele de acces sunt perechi de tipul nume de utilizator și parolă și sunt furnizate de către Banca Transilvania în momentul creării comerciantului pe platforma iPay. Acestea sunt necesare pentru accesarea consolei iPay și pentru apelarea API-urilor.
/// Credențialele de acces sunt perechi de tipul nume de utilizator și parolă și sunt furnizate de către
/// Banca Transilvania în momentul creării comerciantului pe platforma iPay. Acestea sunt necesare pentru
/// accesarea consolei iPay și pentru apelarea API-urilor.
///
/// Atentie! Credențialele de producție nu funcționează pe mediul de test sau vice-versa.
/// </summary>
/// <param name="username"></param>
Expand All @@ -47,7 +52,8 @@ public IpayClient(string username, string password, bool debugMode)
}

/// <summary>
/// 1-phase se pretează serviciilor gen asigurări, bilete/abonamente, unde “deposit” se realizează în mod automat pentru tranzacțiile finalizate cu succes.
/// 1-phase se pretează serviciilor gen asigurări, bilete/abonamente, unde “deposit” se realizează în mod
/// automat pentru tranzacțiile finalizate cu succes.
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
Expand All @@ -62,7 +68,9 @@ public async Task<RegisterResponse> Register(RequestBase data)
}

/// <summary>
/// 2-phase se pretează serviciilor de bunuri care necesită livrare, unde întâi se blochează suma, iar la livrarea/confirmarea livrării bunurilor este necesar să realizați “completarea” tranzacției și trebuie generat “deposit”.
/// 2-phase se pretează serviciilor de bunuri care necesită livrare, unde întâi se blochează suma,
/// iar la livrarea/confirmarea livrării bunurilor este necesar să realizați “completarea” tranzacției
/// și trebuie generat “deposit”.
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts
namespace Bt.IPay.Net.Requests
{
/// <summary>
/// Este necesar să specificați orderId sau orderNumber în request. Dacă solicitarea conține ambii parametrii, orderId este prioritar.
/// Este necesar să specificați orderId sau orderNumber în request. Dacă solicitarea conține ambii parametrii,
/// orderId este prioritar.
/// </summary>
public class GetOrderStatusExtendedRequest: RequestBase
{
Expand All @@ -22,6 +23,5 @@ public class GetOrderStatusExtendedRequest: RequestBase
[StringLength(36)]
[JsonProperty("orderId")]
public string OrderId { get; set; }

}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bt.IPay.Net.Reqursts
namespace Bt.IPay.Net.Requests
{
public enum IPayCurrency
{
Expand Down Expand Up @@ -167,7 +167,6 @@ public enum IPayCurrency
YER = 886,
ZMW = 967,
ZWL = 932,
EUR = 978

EUR = 978,
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;

namespace Bt.IPay.Net.Reqursts
namespace Bt.IPay.Net.Requests
{
public enum PageView
{
Expand All @@ -21,4 +21,4 @@ public static string ToString(this PageView pageView)
return pageView == PageView.DESKTOP ? "DESKTOP" : "MOBILE";
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts.Register
namespace Bt.IPay.Net.Requests.Register
{
public class BillingInfo
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts.Register
namespace Bt.IPay.Net.Requests.Register
{
public class CustomerDetails
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts.Register
namespace Bt.IPay.Net.Requests.Register
{
public class DeliveryInfo
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts.Register
namespace Bt.IPay.Net.Requests.Register
{
public class OrderBundle
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Bt.IPay.Net.Internal;
using Bt.IPay.Net.Reqursts.Register;
using Bt.IPay.Net.Requests.Register;
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts
namespace Bt.IPay.Net.Requests
{
/// <summary>
/// Câmpul <see cref="OrderNumber"/> și <see cref="Description"/> acestuia sunt trimise în mod implicit procesării bancare (nu mai mult de 99 de simboluri și sunt interzise utilizarea următoarelor simboluri -%, +, \ r, \ n).
/// Câmpul <see cref="OrderNumber"/> și <see cref="Description"/> acestuia sunt trimise în mod implicit procesării
/// bancare (nu mai mult de 99 de simboluri și sunt interzise utilizarea următoarelor simboluri -%, +, \ r, \ n).
/// </summary>
public class RegisterRequest:RequestBase
{
Expand All @@ -26,27 +27,31 @@ public RegisterRequest()
[StringLength(32)]
[JsonProperty("orderNumber")]
public string OrderNumber { get; private set; }

/// <summary>
/// Suma comenzii în unități de monedă (de exemplu, bani).
/// </summary>
[Required]
[StringLength(20)]
[JsonProperty("amount")]
public int Amount { get; set; }

/// <summary>
/// Codul monedei de plată, conform ISO 4217. <see cref="IPayCurrency"/>
/// </summary>
[Required]
[MaxLength(9999)]
[JsonProperty("currency")]
public IPayCurrency Currency { get; set; }

/// <summary>
/// Adresa web la care clientul trebuie să fie redirecționat după finalizarea plății.
/// </summary>
[Required]
[StringLength(512)]
[JsonProperty("returnUrl")]
public string ReturnUrl { get; set; }

/// <summary>
/// Descrierea comenzii.
/// </summary>
Expand All @@ -55,11 +60,13 @@ public RegisterRequest()
public string Description { get; set; }

/// <summary>
/// Limba conform ISO 639-1. Dacă nu este specificată, sistemul folosește limba implicită din setările comerciantului. <see cref="CultureInfo"/>
/// Limba conform ISO 639-1. Dacă nu este specificată, sistemul folosește limba implicită din setările
/// comerciantului. <see cref="CultureInfo"/>
/// </summary>
[StringLength(2)]
[JsonProperty("language")]
public string Language => CultureInfo.TwoLetterISOLanguageName;

/// <summary>
/// Valori posibile:
/// DESKTOP - pentru a încărca pagini pentru afișarea pe monitoarele PC(pagini cu nume de payment.html);
Expand All @@ -69,58 +76,75 @@ public RegisterRequest()
[StringLength(20)]
[JsonProperty("pageView")]
public PageView PageView { get; set; }

/// <summary>
/// Procesarea manuală a plăților recurente
/// Pentru a înregistra o plată recurentă, acest câmp este obligatoriu(în caz contrar, plata recurentă nu va fi înregistrată).
/// Pentru a înregistra o plată recurentă, acest câmp este obligatoriu(în caz contrar, plata recurentă
/// nu va fi înregistrată).
/// </summary>
[JsonProperty("recurrenceType")]
public string RecurrenceType { get; set; }

/// <summary>
/// Data la care plata recurentă este realizată. Este utilizat pe pagina 3-D Secure și este trimis în PaReq către ACS emitent, deoarece este obligatoriu.
/// Data la care plata recurentă este realizată. Este utilizat pe pagina 3-D Secure și este trimis în PaReq
/// către ACS emitent, deoarece este obligatoriu.
/// În mod implicit, este utilizată data curentă a plății inițiale.
/// Formatul valorii este<yyyymmdd>.
/// </summary>
[StringLength(8)]
[JsonProperty("recurrenceStartDate")]
public int? RecurrenceStartDate { get; set; }

/// <summary>
/// Data la care se încheie plata recurentă. Este utilizat pe pagina 3-D Secure și este trimis în PaReq către ACS emitent, deoarece este obligatoriu.
/// Data la care se încheie plata recurentă. Este utilizat pe pagina 3-D Secure și este trimis în PaReq către
/// ACS emitent, deoarece este obligatoriu.
/// Parametrul EPAY.RESP_CODE.EXP_DATE indică faptul că s-a terminat o perioadă de recurență a unei plăți.
/// Valoarea implicită EPAY.RESP_CODE.EXP_DATE este 33.
/// Formatul valorii este<yyyymmdd>.
/// </summary>
[StringLength(8)]
[JsonProperty("recurrenceEndDate")]
public int? RecurrenceEndDate { get; set; }

/// <summary>
/// Identificatorul subcomerciantului care trebuie să aparțină comerciantului agregator.
/// </summary>
[StringLength(100)]
[JsonProperty("childId")]
public string ChildId { get; set; }

/// <summary>
/// Numărul clientului (ID) în sistemul comerciantului. Disponibil doar pentru comercianții cu drepturi corespunzătoare.
/// Numărul clientului (ID) în sistemul comerciantului. Disponibil doar pentru comercianții
/// cu drepturi corespunzătoare.
/// </summary>
[StringLength(255)]
[JsonProperty("clientId")]
public string ClientId { get; set; }

/// <summary>
/// Identificatorul binding care a fost creat anterior. Poate fi utilizat numai dacă comerciantul are permisiunea de a lucra cu bindings. Dacă acest parametru este trimis în cererea registerOrder, aceasta înseamnă:
/// Identificatorul binding care a fost creat anterior. Poate fi utilizat numai dacă comerciantul are
/// permisiunea de a lucra cu bindings. Dacă acest parametru este trimis în cererea registerOrder,
/// aceasta înseamnă:
/// 1. Această comandă poate fi plătită numai prin binding
/// 2. Plătitorul va fi redirecționat către o pagină de plată, unde este necesară numai introducerea CVC.
/// </summary>
[StringLength(255)]
[JsonProperty("bindingId")]
public string BindingId { get; set; }

/// <summary>
/// Câmpuri de informații suplimentare pentru stocare. Tipul este {"param": "valoare", "param2": "valoare2"}.
/// Această funcționalitate poate fi activată în perioada de integrare cu acordul băncii.
/// Dacă plata în puncte de loialitate este activată pentru comerciant, acest bloc ar trebui să conțină parametrul “loyaltyAmount”, a cărei valoare este suma în bani.
/// Dacă notificarea clientului este activată pentru comerciant, acest bloc ar trebui să conțină parametrul „e-mail” a carui valoare este e-mail clientului.
/// Dacă plata în puncte de loialitate este activată pentru comerciant, acest bloc ar trebui să conțină
/// parametrul “loyaltyAmount”, a cărei valoare este suma în bani.
/// Dacă notificarea clientului este activată pentru comerciant, acest bloc ar trebui să conțină parametrul
/// „e-mail” a carui valoare este e-mail clientului.
/// </summary>
[StringLength(1024)]
[JsonProperty("jsonParams")]
public string JsonParamsString => JsonParams == null ? string.Empty : Internal.JsonConverter.SerializeObject(JsonParams);
public string JsonParamsString => JsonParams == null
? string.Empty
: Internal.JsonConverter.SerializeObject(JsonParams);

[JsonIgnore]
public Dictionary<string,string> JsonParams { get; set; }
Expand All @@ -130,12 +154,14 @@ public RegisterRequest()
/// Este un obiect json serializat ca string
/// </summary>
[JsonProperty("orderBundle")]
public string OrderBundleString => OrderBundle == null ? string.Empty : Internal.JsonConverter.SerializeObject(OrderBundle);
public string OrderBundleString => OrderBundle == null
? string.Empty
: Internal.JsonConverter.SerializeObject(OrderBundle);

[JsonIgnore]
public OrderBundle OrderBundle { get; set; }

[JsonIgnore]
public CultureInfo CultureInfo { get; set; }
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;

namespace Bt.IPay.Net.Reqursts
namespace Bt.IPay.Net.Requests
{
public class RequestBase
{
Expand All @@ -20,4 +20,4 @@ public class RequestBase
[JsonProperty("password")]
public string Password { get; internal set; }
}
}
}
Loading

0 comments on commit e7c2d43

Please sign in to comment.