/// <summary> /// 更新model /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <bool> UpdateDoubleModelAsync(FaqsQuestionModel model, TransactionFlowingModel transactionFlowingModel) { return(await MySqlHelper.TransactionAsync(async (conn, trans) => { if ((await conn.UpdateAsync(model)) < 1) { return false; } if ((await conn.UpdateAsync(transactionFlowingModel)) < 1) { return false; } return true; })); }
/// <summary> /// 支付前调用方法 /// </summary> /// <param name="requestDto"></param> /// <returns></returns> public async Task <GetWeiXinPaymentBeforeResponseDto> GetPaymentBeforeAsync(string userId, GetWeiXinPaymentBeforeRequestDto requestDto) { //商品订单 string outTradeNo = $"GDSPDD_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}"; //交易流水 string TransactionNumber = $"GDJYLS_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}"; //随机字符串 string nonceStr = GetRandomString(16, false, true, true, false, string.Empty); TransactionFlowingModel model = new TransactionFlowingModel(); model.Amount = 1; model.OrgGuid = string.Empty; model.CreatedBy = userId; model.LastUpdatedBy = userId; model.TransactionFlowingGuid = Guid.NewGuid().ToString("N"); model.OutTradeNo = outTradeNo; model.TransactionNumber = TransactionNumber; model.TransactionStatus = "WaitForPayment"; model.Channel = "微信支付"; UnifiedorderResult unifie = await UnifiedorderAsync(outTradeNo, nonceStr, requestDto); if (unifie.IsReturnCodeSuccess()) { model.ChannelNumber = unifie.prepay_id; model.Insert(); GetWeiXinPaymentBeforeResponseDto result = new GetWeiXinPaymentBeforeResponseDto { appId = this.AppID, nonceStr = nonceStr, timeStamp = Convert.ToInt32(GetTimeSpan().TotalSeconds), package = $"prepay_id={unifie.prepay_id}" }; string sign = TenPayV3.GetJsPaySign(result.appId, result.timeStamp.ToString(), result.nonceStr, result.package, MerchantSecret, "MD5"); result.sign = sign; result.signType = "MD5"; return(result); } else { } return(null); }
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)); }