internal static void ProcessOrderRefundment(RefundFailedRecord refundInfo) { var refundBill = DistributionQueryService.QueryNormalRefundBill(refundInfo.ApplyformId); if (refundBill != null) { var refundResults = Refund(refundBill, refundInfo.BusinessType); if (refundResults.Any(item => item.Success)) { var purchaserSucceed = refundBill.Purchaser.Success; DistributionProcessService.NormalRefundSuccess(refundBill, refundResults); using (var command = Order.Repository.Factory.CreateCommand()) { command.BeginTransaction(); try { var distributionRepository = Order.Repository.Factory.CreateDistributionRepository(command); distributionRepository.UpdateRefundBillForRefundSuccess(refundBill); command.CommitTransaction(); } catch (Exception ex) { command.RollbackTransaction(); LogService.SaveExceptionLog(ex, "交易分润退款"); throw; } } if (!purchaserSucceed && refundBill.Purchaser.Success) { var applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(refundInfo.ApplyformId); var notifier = new Order.Notify.RefundApplyformNotifier(applyform); notifier.RefundSuccess(); } } } }
internal static void ProcessPostponeRefundment(RefundFailedRecord refundInfo) { var refundBill = DistributionQueryService.QueryPostponeRefundBill(refundInfo.ApplyformId); if (refundBill != null) { var refundResult = Refund(refundInfo.OrderId, refundBill); if (refundResult.Success) { DistributionProcessService.PostponeRefundSuccess(refundBill, refundResult.RefundTime.Value); using (var command = Order.Repository.Factory.CreateCommand()) { command.BeginTransaction(); try { var distributionRepository = Order.Repository.Factory.CreateDistributionRepository(command); distributionRepository.UpdateRefundBillForRefundSuccess(refundBill); command.CommitTransaction(); } catch (Exception ex) { command.RollbackTransaction(); LogService.SaveExceptionLog(ex, "申请单退款"); throw; } } } } }
public void Update(RefundFailedRecord record) { var sql = "INSERT INTO dbo.T_RefundFailedInfo ErrorMsg=@ErrorMsg WHERE ApplyformId=@ApplyformId"; using (var dbOperator = new DbOperator(Provider, ConnectionString)) { dbOperator.AddParameter("ApplyformId", record.ApplyformId); dbOperator.AddParameter("ErrorMsg", record.RefundFailedInfo); dbOperator.ExecuteNonQuery(sql); } }
public void Save(RefundFailedRecord record) { var sql = "IF EXISTS(SELECT NULL FROM dbo.T_RefundFailedInfo WHERE ApplyformId=@ApplyformId) " + "UPDATE dbo.T_RefundFailedInfo SET ErrorMsg=@ErrorMsg WHERE ApplyformId=@ApplyformId " + "ELSE INSERT INTO dbo.T_RefundFailedInfo (OrderId,ApplyformId,BusinessType,PayTradeNo,RefundTime,ErrorMsg) VALUES " + "(@OrderId,@ApplyformId,@BusinessType,@PayTradeNo,@RefundTime,@ErrorMsg)"; using (var dbOperator = new DbOperator(Provider, ConnectionString)) { dbOperator.AddParameter("OrderId", record.OrderId); dbOperator.AddParameter("ApplyformId", record.ApplyformId); dbOperator.AddParameter("BusinessType", (byte)record.BusinessType); dbOperator.AddParameter("PayTradeNo", record.PayTradeNo); dbOperator.AddParameter("RefundTime", record.RefundTime); dbOperator.AddParameter("ErrorMsg", record.RefundFailedInfo); dbOperator.ExecuteNonQuery(sql); } }
internal static void ProcessTradeRefundemnt(RefundFailedRecord refundInfo) { //if(refundInfo.BusinessType == RefundBusinessType.PayTimeout) { // var order = OrderQueryService.QueryOrder(refundInfo.OrderId); // if(order != null) { // TradeRefund(order, refundInfo.PayTradeNo); // } // return; //} var refundBill = DistributionQueryService.QueryNormalRefundBill(refundInfo.ApplyformId); if (refundBill != null) { var refundResult = TradeRefund(refundBill, refundInfo.BusinessType); if (refundResult != null && refundResult.Success) { DistributionProcessService.NormalRefundSuccess(refundBill, new[] { refundResult }); using (var command = Order.Repository.Factory.CreateCommand()) { command.BeginTransaction(); try { var distributionRepository = Order.Repository.Factory.CreateDistributionRepository(command); distributionRepository.UpdateRefundBillForRefundSuccess(refundBill); command.CommitTransaction(); } catch (Exception ex) { command.RollbackTransaction(); LogService.SaveExceptionLog(ex, "交易退款"); throw; } var order = OrderQueryService.QueryOrder(refundInfo.OrderId); //发取消出票退款成功通知 var notifier = new Order.Notify.OrderNotifier(order); notifier.SendRefundSuccessNotify(); } } } }