/// <summary> /// 发起方迪支付退款 /// </summary> /// <param name="context"></param> /// <returns></returns> async Task LaunchWechatRefund(ProcessAfterSaleServiceContext context) { var afterSaleOrderDetails = context.AfterSaleDetails; var fanDiPayBiz = new FangDiPayBiz(); var refundRequest = new DoRefundRequestDto() { Refund_Fee = Convert.ToInt32(context.Request.RefundFee * 100).ToString(), Trade_No = context.TransactionFlowing.OutTradeNo, Refund_No = $"SHTKSN_{GetRandomString(10)}{DateTime.Now.ToString("yyyyMMddHHmmss")}", Reason = "售后退款" }; Logger.Info($"(LaunchWechatRefund)-方迪支付退款请求:{JsonConvert.SerializeObject(refundRequest)}"); var result = await fanDiPayBiz.RefundAsync(refundRequest); Logger.Info($"(LaunchWechatRefund)-方迪支付退款响应:{JsonConvert.SerializeObject(result)}"); context.AfterSaleRefund.OutRefundNo = refundRequest.Refund_No; if (result?.ResultCode == "-1") { context.AfterSaleRefund.Status = AfterSaleRefundStatusEnum.Failed.ToString(); } else { context.AfterSaleRefund.Status = AfterSaleRefundStatusEnum.Success.ToString(); } }
/// <summary> /// 退款 /// </summary> /// <returns></returns> public async Task <DoRefundResponseDto> RefundAsync(DoRefundRequestDto requestDto) { requestDto.Reason = System.Web.HttpUtility.UrlEncode(requestDto.Reason); string paraJson = JsonConvert.SerializeObject(requestDto); string url = string.Format(Url, "Refund"); var responseDto = await HttpPostAsync <DoRefundResponseDto>(url, paraJson); return(responseDto); }
public async Task <IActionResult> OrderListRefundAsync(bool isRun = true) { return(Success()); var modelList = await new TransactionFlowingBiz().GetModels(); modelList = modelList.Where(a => a.CreationDate > Convert.ToDateTime("2019-10-10 00:00:00")).ToList(); var count = DateTime.Now.Second; foreach (var item in modelList) { Logger.Warn($@"----{ JsonConvert.SerializeObject(item).ToString()}"); count++; if (item.Amount < 1) { item.Amount = item.Amount * 100; } var requestDto = new DoRefundRequestDto { Reason = "AsyncRefunding.......", Refund_Fee = Convert.ToInt32(item.Amount).ToString(), Refund_No = count.ToString(), Trade_No = item.OutTradeNo }; var response = await new FangDiPayBiz().RefundAsync(requestDto); if (response.ResultCode.Equals("0") && response.ResultMsg.ToLower().Equals("success")) { Logger.Warn($@"OrderListRefundAsync--退款成功--{ JsonConvert.SerializeObject(response).ToString()}"); item.TransactionStatus = TransactionStatusEnum.RefundSuccess.ToString(); item.LastUpdatedDate = DateTime.Now; item.OutRefundNo = response.Refund_No; item.Update(); } Logger.Warn($@"AsyncRefunding----{ JsonConvert.SerializeObject(response).ToString()}"); } return(Success()); }
public async Task <IActionResult> OrderRefundAsync([FromBody] DoRefundRequestDto requestDto) { var response = await new FangDiPayBiz().RefundAsync(requestDto); return(Success(response)); }