예제 #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);
        }
예제 #2
0
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="requestDto"></param>
        /// <returns></returns>
        public async Task <OrderQueryResult> OrderQuery(GetWeiXinPaymentBeforeRequestDto requestDto)
        {
            TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(AppID, MerchantNumber, "wx0818171559664608e39c01920461325676", GetRandomString(16, false, true, true, false, string.Empty), "GDSPDD_IKJRMNLCCJ20190408181709", MerchantSecret);

            return(TenPayV3.OrderQuery(data));
        }
예제 #3
0
        /// <summary>
        /// 统一下单
        /// </summary>
        /// <param name="order_no">order_no</param>
        /// <returns></returns>
        public async Task <UnifiedorderResult> UnifiedorderAsync(string outTradeNo, string nonceStr, GetWeiXinPaymentBeforeRequestDto requestDto)
        {
            TenPayV3UnifiedorderRequestData data = new TenPayV3UnifiedorderRequestData(AppID, MerchantNumber, "医疗用品", outTradeNo, 1, "", "http://api-test.ghysjt.com/api/v1/mallpay/MallWeiXinPay/PaymentBackFunction", Senparc.Weixin.TenPay.TenPayV3Type.JSAPI, requestDto.openId, MerchantSecret, nonceStr, "WEB", DateTime.Now, DateTime.Now.AddHours(1), "商品列表", "国丹医疗", "CNY", null, null, false);

            data.SignType = "MD5";
            return(await TenPayV3.UnifiedorderAsync(data));
        }
예제 #4
0
 public async Task <IActionResult> GetPaymentBefore(GetWeiXinPaymentBeforeRequestDto requestDto)
 {
     return(Success <GetWeiXinPaymentBeforeResponseDto>(await new WeiXinPayBiz().GetPaymentBeforeAsync(this.UserID, requestDto)));
 }