/// <summary> /// Vincula la información de una cuenta a las cuentas inscritas para transferencia de saldos al usuario actual. /// </summary> /// <param name="cardHolderDocType">El tipo de documento del titular de la cuenta que se desea registrar.</param> /// <param name="cardHolderDocNumber">El número de documento del titular de la cuenta que se desea registrar.</param> /// <param name="pinNumber">El pin transaccional del usuario autenticado.</param> /// <param name="accountNumber">El número de cuenta que se desea registrar o <c>null</c> para que el sistema busque el número de cuenta asociado con el tarjetahabiente.</param> /// <param name="alias">El nombre con el que se desea identificar la cuenta a registrar.</param> public void LinkTransferAccount( string cardHolderDocType, string cardHolderDocNumber, string pinNumber, string accountNumber = null, string alias = null) { if (!ServiceLocator.Instance.Runtime.IsDevelopment) { Throw.IfNullOrEmpty(cardHolderDocType, nameof(cardHolderDocType)); Throw.IfNullOrEmpty(cardHolderDocNumber, nameof(cardHolderDocNumber)); Throw.IfNullOrEmpty(alias, nameof(alias)); } LinkTransferAccountInfo linkTransferAccountInfo = new LinkTransferAccountInfo( cardHolderDocType, cardHolderDocNumber, alias, accountNumber, pinNumber); IRestRequest request = new AspenRequest(Scope.Delegated, EndpointMapping.LinkTransferAccountFromCurrentUser); request.AddJsonBody(linkTransferAccountInfo); this.Execute(request); }
public void LinkTransferAccountWorks() { this.DeleteTransferAccountsFromRecognizedUser(); IDelegatedApp client = this.GetDelegatedClient(); string recognizedPinNumber = "141414"; string recognizedCardHolderDocType = "CC"; string recognizedCardHolderDocNumber = "79483129"; string recognizedAlias = "MyTransferAccount"; string accountNumber = "6039590286132628"; LinkTransferAccountInfo linkTransferAccountInfo = new LinkTransferAccountInfo( recognizedCardHolderDocType, recognizedCardHolderDocNumber, recognizedAlias, accountNumber, recognizedPinNumber); Assert.DoesNotThrow(() => client.Management.LinkTransferAccount(linkTransferAccountInfo)); IList <TransferAccountInfo> transferAccounts = client.Management.GetTransferAccounts(); CollectionAssert.IsNotEmpty(transferAccounts); TransferAccountInfo transferAccountInfo = transferAccounts.FirstOrDefault(info => info.Alias == recognizedAlias); Assert.NotNull(transferAccountInfo); Assert.That(transferAccountInfo.CardHolderDocType, Is.EqualTo(recognizedCardHolderDocType)); Assert.That(transferAccountInfo.CardHolderDocNumber, Is.EqualTo(recognizedCardHolderDocNumber)); Assert.IsNotEmpty(transferAccountInfo.CardHolderName); const string MaskedPanPattern = @".*\d{4}"; Assert.That(transferAccountInfo.MaskedPan, Is.Not.Null.And.Match(MaskedPanPattern)); }
/// <summary> /// Restablece y registra cuentas para transferencia al usuario de pruebas reconocido. /// </summary> private void LinkTransferAccountsToRecognizedUser() { IDelegatedApp client = this.GetDelegatedClient(); List <(string, string, string)> recognizedCardHolders = new List <(string, string, string)> { ("CC", "79483129", "6039590286132628"), ("CC", "52150900", "6039594610201554"), ("CC", "3262308", "6039590635149836"), ("CC", "52582664", "6039594246705697"), ("CC", "35512889", "6039599272117600") }; const string RecognizedPinNumber = "141414"; foreach ((string cardHolderDocType, string cardHolderDocNumber, string accountNumber) in recognizedCardHolders) { string randomAlias = new Random().Next(9999, 99999).ToString(); LinkTransferAccountInfo linkTransferAccountInfo = new LinkTransferAccountInfo( cardHolderDocType, cardHolderDocNumber, randomAlias, accountNumber, RecognizedPinNumber); client.Management.LinkTransferAccount(linkTransferAccountInfo); } }
public void LinkTransferAccountUnrecognizedCardHolderThrows() { string recognizedPinNumber = "141414"; string recognizedCardHolderDocType = "CC"; string unrecognizedCardHolderDocNumber = new Random().Next(1000000000, int.MaxValue).ToString(); string randomAlias = $"MyAlias-{new Random().Next(9999, 99999)}"; string randomAccountNumber = "6039590286132628"; LinkTransferAccountInfo unrecognizedTransferAccountInfo = new LinkTransferAccountInfo( recognizedCardHolderDocType, unrecognizedCardHolderDocNumber, randomAlias, randomAccountNumber, recognizedPinNumber); IDelegatedApp client = this.GetDelegatedClient(); AspenException exception = Assert.Throws <AspenException>(() => client.Management.LinkTransferAccount(unrecognizedTransferAccountInfo)); Assert.That(exception.EventId, Is.EqualTo("15856")); Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.Conflict)); StringAssert.IsMatch("No se encuentra información de la cuenta con los datos suministrados", exception.Message); }
public void LinkTransferAccountUnrecognizedAccountNumberThrows() { this.DeleteTransferAccountsFromRecognizedUser(); string recognizedPinNumber = "141414"; string recognizedCardHolderDocType = "CC"; string recognizedCardHolderDocNumber = "79483129"; string recognizedAlias = "MyTransferAccount"; string unrecognizedAccountNumber = new Random().Next(1000000000, int.MaxValue).ToString("0000000000000000"); LinkTransferAccountInfo unrecognizedTransferAccountInfo = new LinkTransferAccountInfo( recognizedCardHolderDocType, recognizedCardHolderDocNumber, recognizedAlias, unrecognizedAccountNumber, recognizedPinNumber); IDelegatedApp client = this.GetDelegatedClient(); AspenException exception = Assert.Throws <AspenException>(() => client.Management.LinkTransferAccount(unrecognizedTransferAccountInfo)); Assert.That(exception.EventId, Is.EqualTo("15857")); Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.Conflict)); StringAssert.IsMatch("Cuenta no pertenece a tarjetahabiente", exception.Message); }
/// <summary> /// Vincula la información de una cuenta a las cuentas inscritas de un usuario para transferencia de saldos. /// </summary> /// <param name="docType">El tipo de documento del cliente al cual se vinculará la cuenta.</param> /// <param name="docNumber">El número de documento del cliente al cual se vinculará la cuenta.</param> /// <param name="cardHolderDocType">El tipo de documento del titular de la cuenta que se está vinculando.</param> /// <param name="cardHolderDocNumber">El número de documento del titular de la cuenta que se está vinculando.</param> /// <param name="accountNumber"> /// El número de cuenta que se está vinculando. /// Cuando es <see langword="null" />, el sistema auto-establece tomando el primer número de cuenta asociado con <paramref name="cardHolderDocType" /> y <paramref name="cardHolderDocNumber" />. /// </param> /// <param name="alias"> /// El nombre o alias con el que se desea identificar a la cuenta que se está vinculando. /// Cuando es <see langword="null" />, el sistema auto-establece un alias a partir de la combinación de <paramref name="cardHolderDocType" /> y <paramref name="cardHolderDocNumber" />. /// </param> /// <exception cref="ArgumentException">Se produce cuando alguno de parámetros: <paramref name="docType"/>, <paramref name="docNumber"/>, <paramref name="cardHolderDocType"/> o <paramref name="cardHolderDocNumber"/> es nulo o vacío.</exception> public void LinkTransferAccount( string docType, string docNumber, string cardHolderDocType, string cardHolderDocNumber, string accountNumber = null, string alias = null) { if (!ServiceLocator.Instance.Runtime.IsDevelopment) { Throw.IfNullOrEmpty(docType, nameof(docType)); Throw.IfNullOrEmpty(docNumber, nameof(docNumber)); Throw.IfNullOrEmpty(cardHolderDocType, nameof(cardHolderDocType)); Throw.IfNullOrEmpty(cardHolderDocNumber, nameof(cardHolderDocNumber)); } LinkTransferAccountInfo linkTransferAccountInfo = new LinkTransferAccountInfo( cardHolderDocType, cardHolderDocNumber, alias, accountNumber); this.LinkTransferAccount(docType, docNumber, linkTransferAccountInfo); }