Exemplo n.º 1
0
 /// <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;
     }));
 }
Exemplo n.º 2
0
        /// <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));
        }