コード例 #1
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);
        }