/// <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(); } }
public async Task <IActionResult> FAQsWechatPayAsync([FromBody] FAQsWechatPayRequest request) { Common.Helper.Logger.Debug($"FAQsWechatPayRequest-传入参数-UserID-{UserID}-{JsonConvert.SerializeObject(request)}"); var fdPayBiz = new FangDiPayBiz(); var userBiz = new UserBiz(); var userModel = userBiz.GetUser(UserID); if (userModel == null) { return(Failed(ErrorCode.DataBaseError, "无法获取用户信息!")); } //if (string.IsNullOrWhiteSpace(request.Code)) //{ // if (string.IsNullOrWhiteSpace(userModel.WechatOpenid)) // { // return Failed(ErrorCode.DataBaseError, "用户OpenId为空,请传Code参数!"); // } //} //else //{ // var fdResponse = await fdPayBiz.GetOpenID(new GetOpenIDRequestDto { Code = request.Code }); // if (string.IsNullOrWhiteSpace(fdResponse.Open_Id)) // { // return Failed(ErrorCode.DataBaseError, "无法获取用户OpenID!"); // } // Common.Helper.Logger.Debug($"FAQsWechatPayRequest-获取openid-UserID-{UserID}-获取的openid({fdResponse.Open_Id})-用户表的openid({userModel.WechatOpenid})"); // if (string.IsNullOrWhiteSpace(fdResponse.Open_Id) || !userModel.WechatOpenid.Equals(fdResponse.Open_Id)) // { // userModel.WechatOpenid = fdResponse.Open_Id; // await userBiz.UpdateAsync(userModel); // } //} if (string.IsNullOrWhiteSpace(userModel.WechatOpenid)) { return(Failed(ErrorCode.DataBaseError, "用户无OpenID!")); } var questionBiz = new FaqsQuestionBiz(); var questionModel = await questionBiz.GetModelAsync(request.QuestionGuid); if (questionModel == null) { return(Failed(ErrorCode.DataBaseError, "QuestionGuid无法找到数据,请检查!")); } //交易流水数据 var newTFModel = new TransactionFlowingModel { TransactionFlowingGuid = Guid.NewGuid().ToString("N"), //流水号 TransactionNumber = $"FAQSSN_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}", //微信标识订单流水号 OutTradeNo = $"FAQSPQ_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}", Channel = "微信支付", ChannelNumber = "2", PayAccount = userModel.WechatOpenid, Amount = questionModel.RewardIntergral, OutRefundNo = string.Empty, TransactionStatus = TransactionStatusEnum.WaitForPayment.ToString(), Remarks = string.Empty, OrgGuid = string.Empty, CreatedBy = UserID, LastUpdatedBy = UserID, }; var isSuccess = await new TransactionFlowingBiz().UpdateFlowingAndQuestionAsync(newTFModel, questionModel); if (!isSuccess) { return(Failed(ErrorCode.DataBaseError, "流水生成失败!")); } //await PayCallBackTestAsync(newTFModel.OutTradeNo); var fdXDResponsed = await fdPayBiz.OrdersPay(new OrdersPayRequestDto { Trade_No = newTFModel.OutTradeNo, Amount = (Convert.ToInt32(newTFModel.Amount)).ToString(), Open_Id = userModel.WechatOpenid }); return(Success(fdXDResponsed)); }