private string GetOrderTypeBasedCurrency(AttachCardBindingRequest request) { string CurrencyCode = string.Empty; switch (request.Order.Type) { case OrderType.RATransfer: { if (request.Order.SubType == 3) { CurrencyCode = request.Order.ReceiverAccount.Currency; } //else if (request.Order.SubType == 6) //{ // CurrencyCode = "AMD"; //} } break; case OrderType.LoanMature: { CurrencyCode = request.Order.Currency; } break; case OrderType.CommunalPayment: { CurrencyCode = "AMD"; } break; default: break; } return(CurrencyCode); }
private SingleResponse <long> SaveAttachedCardOrder(AttachCardBindingRequest request) { SingleResponse <long> response = new SingleResponse <long>() { ResultCode = ResultCodes.normal }; XBS.ActionResult result = new XBS.ActionResult(); //Տարանցիկ հաշվի ստացում դեբետագրելու համար , կախված հայտի տեսակից string accountNumber = _client.GetMerchantAccountNumberByOrderType(new AttachedCardOrderTypeRequest { Currency = GetOrderTypeBasedCurrency(request), OrderType = (int)request.Order.Type, OrderSubType = request.Order.SubType })?.AccountNumber; if (string.IsNullOrEmpty(accountNumber)) { response.ResultCode = ResultCodes.failed; return(response); } switch (request.Order.Type) { case OrderType.RATransfer: { if (request.Order.SubType == 3) { PaymentOrder order = new PaymentOrder { Amount = request.Order.Amount, Currency = request.Order.Currency, SubType = request.Order.SubType, Type = request.Order.Type, ReceiverBankCode = request.Order.ReceiverBankCode, ReceiverAccount = new Account { AccountNumber = request.Order.ReceiverAccount.AccountNumber, Currency = request.Order.ReceiverAccount.Currency }, DebitAccount = new Account { AccountNumber = accountNumber, Currency = request.Order.DebitAccount.Currency, IsAttachedCard = true } }; result = _xBService.SavePaymentOrder(order); } //else if (request.Order.SubType == 6) //{ // BudgetPaymentOrder order = new BudgetPaymentOrder // { // Amount = request.Order.Amount, // Currency = request.Order.Currency, // SubType = request.Order.SubType, // Type = request.Order.Type, // ReceiverBankCode = request.Order.ReceiverBankCode, // UseCreditLine = request.Order.UseCreditLine, // Description = request.Order.Description, // TransferFee = request.Order.TransferFee, // Receiver = request.Order.Receiver, // PoliceResponseDetailsId = request.Order.PoliceResponseDetailsId, // LTACode = request.Order.LTACode, // FeeAccount = new Account // { // AccountNumber = request.Order.FeeAccount.AccountNumber, // Currency = request.Order.FeeAccount.Currency // }, // ReceiverAccount = new Account // { // AccountNumber = request.Order.ReceiverAccount.AccountNumber // }, // DebitAccount = new Account // { // AccountNumber = accountNumber, // Currency = request.Order.DebitAccount.Currency, // IsAttachedCard = true // } // }; // result = _xBService.SaveBudgetPaymentOrder(order); //} } break; case OrderType.LoanMature: { string loanAccNumber = _xBService.GetLiabilitiesAccountNumberByAppId(request.Order.ProductId); if (string.IsNullOrEmpty(loanAccNumber)) { response.ResultCode = ResultCodes.failed; return(response); } PaymentOrder order = new PaymentOrder { Amount = request.Order.Amount, Currency = request.Order.Currency, SubType = 3, Type = OrderType.RATransfer, ReceiverBankCode = request.Order.ReceiverBankCode, ReceiverAccount = new Account { AccountNumber = loanAccNumber, Currency = request.Order.Currency }, DebitAccount = new Account { AccountNumber = accountNumber, Currency = request.Order.Currency, IsAttachedCard = true } }; result = _xBService.SavePaymentOrder(order); if (result.ResultCode == ResultCode.Normal) { PaymentOrder paymOrder = _xBService.GetPaymentOrder(result.Id); result = _xBService.ApprovePaymentOrder(paymOrder); if (result.ResultCode == ResultCode.Normal) { MatureOrder matureOrder = new MatureOrder { ProductId = request.Order.ProductId, Amount = request.Order.Amount, Currency = request.Order.Currency, SubType = request.Order.SubType, Type = request.Order.Type, MatureType = request.Order.MatureType, MatureMode = request.Order.MatureMode, Account = new Account { AccountNumber = loanAccNumber, Currency = request.Order.Currency, IsAttachedCard = true } }; result = _xBService.SaveMatureOrder(matureOrder); } } } break; case OrderType.CommunalPayment: { UtilityPaymentOrder order = new UtilityPaymentOrder { Amount = request.Order.Amount, Currency = request.Order.Currency, Type = request.Order.Type, Code = request.Order.Code, AbonentType = request.Order.AbonentType, CommunalType = request.Order.CommunalType, Branch = request.Order.Branch, AbonentFilialCode = request.Order.AbonentFilialCode, PaymentType = request.Order.PaymentType, DebitAccount = new Account { AccountNumber = accountNumber, Currency = "AMD", IsAttachedCard = true } }; result = _xBService.SaveUtilityPaymentOrder(order); } break; default: break; } response.Result = result.Id; response.ResultCode = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode); response.Description = Utils.GetActionResultErrors(result.Errors); return(response); }
public async Task <IActionResult> SaveAndApproveWithAttachedCard([FromBody] AttachCardBindingRequest request) { if (ModelState.IsValid) { if (request?.Order == null) { return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.failed, Description = "Տեղի ունեցավ սխալ:" })); } var orderResult = SaveAttachedCardOrder(request); if (orderResult.ResultCode == ResultCodes.normal && orderResult.Result != 0) { var authorizedCustomer = _cacheHelper.GetAuthorizedCustomer(); var language = _cacheHelper.GetLanguage(); var source = _cacheHelper.GetSourceType(); var response = await _client.ArcaOrderBindingPaymentAsync(new CardBindingPaymentRequest { BindingId = request.Order.BindingId, Amount = request.Order.Amount, Currency = GetOrderTypeBasedCurrency(request), OrderType = XbsOrderEnumToProto(request.Order.Type), OrderSubType = request.Order.SubType, CustomerNumber = authorizedCustomer.CustomerNumber, UserId = authorizedCustomer.UserId, Language = language == 1 ? "hy" : "en", PageView = source == SourceType.AcbaOnline ? "DESKTOP" : "MOBILE" }); if (response.Payed) { var saveResponse = await _client.SaveAttachedCardOrderDetailsAsync(new OrderDetailsRequest { DocID = orderResult.Result, CardId = response.CardId, MdOrder = response.MdOrder }); if (saveResponse.Saved) { var approvalRequest = new AttachCardPaymentApprovalRequest { Id = orderResult.Result, SubType = request.Order.SubType, Type = request.Order.Type }; var approveResult = ApproveAttachedCardOrder(approvalRequest); if (approveResult.ResultCode == ResultCodes.normal) { return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.normal, Description = "Վճարումը կատարված է:" })); } else { return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.failed, Description = "Վճարման հաստատման ժամանակ տեղի ունեցավ սխալ, խնդրում ենք դիմել բանկ:" })); } } else { return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.failed, Description = "Հայտի մանրամասների պահպանման տեղի ունեցավ սխալ:" })); } } else { // Quality desclined return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.failed, Description = "Վճարման ժամանակ տեղի ունեցավ սխալ:" })); } } else { // Quality desclined return(ResponseExtensions.ToHttpResponse(new Response { ResultCode = ResultCodes.failed, Description = "Տեղի ունեցավ սխալ:" })); } } else { return(ValidationError.GetValidationErrorResponse(ModelState)); } }