/// <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); }