public IHttpActionResult ProcessOrderPayments(string orderId, string paymentId, [SwaggerOptional] BankCardInfo bankCardInfo) { var order = _customerOrderService.GetByIds(new[] { orderId }, CustomerOrderResponseGroup.Full.ToString()).FirstOrDefault(); if (order == null) { var searchCriteria = AbstractTypeFactory <CustomerOrderSearchCriteria> .TryCreateInstance(); searchCriteria.Number = orderId; searchCriteria.ResponseGroup = CustomerOrderResponseGroup.Full.ToString(); order = _searchService.SearchCustomerOrders(searchCriteria).Results.FirstOrDefault(); } if (order == null) { throw new InvalidOperationException($"Cannot find order with ID {orderId}"); } var payment = order.InPayments.FirstOrDefault(x => x.Id == paymentId); if (payment == null) { throw new InvalidOperationException($"Cannot find payment with ID {paymentId}"); } var store = _storeService.GetById(order.StoreId); var paymentMethod = store.PaymentMethods.FirstOrDefault(x => x.Code == payment.GatewayCode); if (paymentMethod == null) { throw new InvalidOperationException($"Cannot find payment method with code {payment.GatewayCode}"); } var context = new ProcessPaymentEvaluationContext { Order = order, Payment = payment, Store = store, BankCardInfo = bankCardInfo }; var result = paymentMethod.ProcessPayment(context); if (result.OuterId != null) { payment.OuterId = result.OuterId; } _customerOrderService.SaveChanges(new[] { order }); return(Ok(result)); }
public static orderDto.BankCardInfo ToBankCardInfoDto(this BankCardInfo model) { return(OrderConverterInstance.ToBankCardInfoDto(model)); }
public bool Bind(BankCardInfo card) { card.CardNo = card.CardNo.Replace(" ", "");//删除空格 City city = ChinaArea.GetCity(card.City_Id); if (city == null) { Alert((ResultType)409, "选择的城市有误"); return(false); } Province province = ChinaArea.GetProvince(city.Province_ID); if (province == null) { Alert((ResultType)409, "选择的城市有误"); return(false); } var fac = UserModuleFactory.GetUserModuleInstance(); if (fac == null) { Alert((ResultType)500, "系统错误"); return(false); } IUser user = fac.GetUserByCode(card.UserCode); if (user == null) { Alert((ResultType)404, "找不到用户信息"); return(false); } if (user.Auth_Status != Interface.Enums.Auth_Status.已认证) { Alert((ResultType)403, "绑定银行卡必须先认证"); return(false); } if (!string.Equals(user.UserName, card.CardHolder)) { Alert((ResultType)403, "持卡人户名与认证姓名不符"); return(false); } BankInfo bank = xUtils.GetBankInfoById(card.BankId); if (bank == null) { Alert((ResultType)409, "银行类型有误"); return(false); } Tnet_Bank_Account daAcct = new Tnet_Bank_Account(); daAcct.Account_Name = card.CardHolder; daAcct.Account_Type = 1; daAcct.Bank_Id = card.BankId; daAcct.Bank_Name = bank.BankName; daAcct.Branch_No = card.BranchNo; daAcct.Branch_Bank = card.BranchName; daAcct.Card_No = card.CardNo; daAcct.City_Name = city.City_Name; daAcct.Image_Fullpath = card.CardImage; daAcct.Province_Name = province.Province_Name; daAcct.Remarks = null; daAcct.Status = (int)ValidateStatus.审核中; daAcct.User_Id = user.UserId; daAcct.Province_Id = province.Province_Id; daAcct.City_Id = city.City_ID; if (!daAcct.Insert()) { Alert((ResultType)501, "系统错误"); return(false); } if (string.Equals(user.UserName, card.CardHolder))//认证名称与绑卡名称一致,自动审核通过 { BankCardProvider bcp = new BankCardProvider(); bool res = bcp.Validate(daAcct.Id, true, "系统自动审核", 0); Log.Info($"户名验证通过,自动审核!审核结果:{res},错误信息:{bcp.PromptInfo.CustomMessage}"); } return(true); }
public async Task <ActionResult <ProcessOrderPaymentResult> > ProcessOrderPayment(string orderNumber, string paymentNumber, [FromBody][SwaggerOptional] BankCardInfo bankCardInfo) { //Need lock to prevent concurrent access to same order using (await AsyncLock.GetLockByKey(GetAsyncLockKey(orderNumber, WorkContext)).LockAsync()) { var orderDto = await _orderApi.GetByNumberAsync(orderNumber, string.Empty); var authorizationResult = await _authorizationService.AuthorizeAsync(User, orderDto, CanAccessOrderAuthorizationRequirement.PolicyName); if (!authorizationResult.Succeeded) { return(Unauthorized()); } var paymentDto = orderDto.InPayments.FirstOrDefault(x => x.Number.EqualsInvariant(paymentNumber)); if (paymentDto == null) { throw new StorefrontException("payment " + paymentNumber + " not found"); } var processingResult = await _orderApi.ProcessOrderPaymentsAsync(orderDto.Id, paymentDto.Id, bankCardInfo.ToBankCardInfoDto()); var order = orderDto.ToCustomerOrder(WorkContext.AllCurrencies, WorkContext.CurrentLanguage); return(new ProcessOrderPaymentResult { OrderProcessingResult = processingResult.ToProcessPaymentResult(order), PaymentMethod = paymentDto.PaymentMethod.ToPaymentMethod(order) }); } }
public BankCardAddedEvent(Guid bankCardId, BankCardInfo info) : base(bankCardId, info) { }
public BankCardEvent(Guid bankCardId, BankCardInfo info) { BankCardId = bankCardId; Info = info; }