Example #1
0
        public ActionResult MeterRecharge(string totalfee)
        {
            object objResult    = "";
            string strTotal_fee = totalfee;
            string strFee       = (double.Parse(strTotal_fee) * 100).ToString();

            //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数
            jsApiPay.openid    = Session["openid"].ToString();
            jsApiPay.total_fee = int.Parse(strFee);

            //JSAPI支付预处理
            try
            {
                string    strBody            = "菲爱仕支付";                        //商品描述
                WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(strBody);
                WxPayData wxJsApiParam       = jsApiPay.GetJsApiParameters2(); //获取H5调起JS API参数,注意,这里引用了官方的demo的方法,由于原方法是返回string的,所以,要对原方法改为下面的代码,代码在下一段

                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = wxJsApiParam.GetValue("appId").ToString(),
                    nonceStr     = wxJsApiParam.GetValue("nonceStr").ToString(),
                    packageValue = wxJsApiParam.GetValue("package").ToString(),
                    paySign      = wxJsApiParam.GetValue("paySign").ToString(),
                    timeStamp    = wxJsApiParam.GetValue("timeStamp").ToString(),
                    msg          = "成功下单,正在接入微信支付."
                };
                objResult = aOrder;
            }
            catch (Exception ex)
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员."
                };
                objResult = aOrder;
            }
            return(Json(objResult));
        }
Example #2
0
        public ActionResult MeterRecharge(string orderNo)
        {
            object objResult = "";

            if (string.IsNullOrWhiteSpace(orderNo))
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员."
                };
                objResult = aOrder;
                return(Json(objResult));
            }

            var checkSession = RediToLogin(1);

            if (checkSession.Code == 110)
            {
                return(Json(checkSession));
            }
            int userId = 0;

            int.TryParse(Session[SessionKeys.USERID].ToString(), out userId);

            var user = MembershipService.GetUserById(userId);

            if (user == null)
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员1."
                };
                objResult = aOrder;
                return(Json(objResult));
            }

            var account = AccountService.GetByUserId(user.Id);

            if (account == null)
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员2."
                };
                objResult = aOrder;
                return(Json(objResult));
            }
            var orderNoRec = IOrderService.GetOrderNo(orderNo);

            if (orderNoRec == null)
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员3."
                };
                objResult = aOrder;
                return(Json(objResult));
            }

            //if (orderNoRec.amount + orderNoRec.freight != totalfee)
            //{
            //    ModelForOrder aOrder = new ModelForOrder()
            //    {
            //        appId = "",
            //        nonceStr = "",
            //        packageValue = "",
            //        paySign = "",
            //        timeStamp = "",
            //        msg = "下单失败,金额不正确,请重试,若多次失败,请联系管理员."
            //    };
            //    objResult = aOrder;
            //    return Json(objResult);
            //}


            //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数
            if (string.IsNullOrWhiteSpace(account.openID))
            {
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "你还没有授权,请重新登录授权"
                };
                objResult = aOrder;
                return(Json(objResult));
            }
            jsApiPay.openid    = account.openID;
            jsApiPay.total_fee = (int)(orderNoRec.amount + orderNoRec.freight * 100);

            //JSAPI支付预处理
            try
            {
                WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(orderNo);
                WxPayData wxJsApiParam       = jsApiPay.GetJsApiParameters2();//获取H5调起JS API参数,注意,这里引用了官方的demo的方法,由于原方法是返回string的,所以,要对原方法改为下面的代码,代码在下一段

                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = wxJsApiParam.GetValue("appId").ToString(),
                    nonceStr     = wxJsApiParam.GetValue("nonceStr").ToString(),
                    packageValue = wxJsApiParam.GetValue("package").ToString(),
                    paySign      = wxJsApiParam.GetValue("paySign").ToString(),
                    timeStamp    = wxJsApiParam.GetValue("timeStamp").ToString(),
                    msg          = "成功下单,正在接入微信支付."
                };
                objResult = aOrder;
                WxPayAPI.Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam + ",openid:" + jsApiPay.openid + ",orderNo:" + orderNo + ",appId:" + aOrder.appId + ",nonceStr:" + aOrder.nonceStr + ",packageValue:" + aOrder.packageValue + ",paySign:" + aOrder.paySign + ",timeStamp:" + aOrder.timeStamp);
            }
            catch (Exception ex)
            {
                WxPayAPI.Log.Error(this.GetType().ToString(), ex.Message.ToString());
                ModelForOrder aOrder = new ModelForOrder()
                {
                    appId        = "",
                    nonceStr     = "",
                    packageValue = "",
                    paySign      = "",
                    timeStamp    = "",
                    msg          = "下单失败,请重试,若多次失败,请联系管理员."
                };
                objResult = aOrder;
            }
            return(Json(objResult));
        }