/// <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();
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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());
        }
예제 #4
0
        public async Task <IActionResult> OrderRefundAsync([FromBody] DoRefundRequestDto requestDto)
        {
            var response = await new FangDiPayBiz().RefundAsync(requestDto);

            return(Success(response));
        }