Example #1
0
        public ApiMessage <OutPayModel> CkeckData(PayModel pm, CurrentUser user)
        {
            var res = new ApiMessage <OutPayModel>();

            res.Success = false;
            res.Msg     = "数据有误";
            var oData = new OutPayModel();

            if (pm.Type == "order")
            {
                var oModel  = odal.Get(pm.OrderNo);
                var oModeld = odal.GetOrder(pm.OrderNo).rows;
                if (oModel.Money != pm.Money)
                {
                    return(res);
                }

                oData.Subject = "购买商品";
                foreach (var item in oModeld)
                {
                    oData.Body = oData.Body + item.ProductName + "/" + item.UnitName + " ";
                }
                oData.TotalAmount = pm.Money;
                Random rd = new Random();
                oModel.PayOrderNo = oModel.OrderNo + rd.Next(1000, 10000);
                oModel.Update();
                oData.OutTradeNo = oModel.PayOrderNo;
            }
            else
            {
                var sModel = sdal.GetOptByType("member").FirstOrDefault(n => n.ID == pm.OrderNo);
                if (sModel.OptionValue2 != pm.Money.ToString())
                {
                    return(res);
                }
                oData.Subject     = "购买会员";
                oData.Body        = sModel.OptionValue1;
                oData.TotalAmount = Convert.ToDecimal(sModel.OptionValue2);
                var payNo = CodeNo.Get(CodeType.VIP);
                oData.OutTradeNo = payNo;
                var mb = new member();
                mb.Money   = oData.TotalAmount;
                mb.ID      = Guid.NewGuid().ToString();
                mb.State   = "待支付";
                mb.UserID  = user.Id;
                mb.ProName = sModel.OptionValue1;

                mb.ProID      = sModel.ID;
                mb.CreateDate = DateTime.Now;
                mb.PMoney     = 0;
                mb.OrderNo    = payNo;
                mb.PayOrderNo = payNo;
                mb.Insert();
            }
            res.Data    = oData;
            res.Msg     = "";
            res.Success = true;
            LogHelper.WriteLog("支付请求:" + JsonConvert.SerializeObject(res.Data), LogHelper.LogType.Info);
            return(res);
        }
Example #2
0
        public ApiMessage <object> CkeckWxData(OutPayModel pm, CurrentUser user)
        {
            var res = new ApiMessage <object>();

            res.Success = false;
            res.Msg     = "数据有误";
            var requestXml = WeiXinUtil.BuildRequest(pm.OutTradeNo, pm.Subject, pm.TotalAmount, pm.IP);

            var resultXml = WeiXinUtil.Post("https://api.mch.weixin.qq.com/pay/unifiedorder", requestXml);

            var dic = WeiXinUtil.FromXml(resultXml);

            string returnCode;

            dic.TryGetValue("return_code", out returnCode);

            if (returnCode == "SUCCESS")
            {
                var prepay_id = WeiXinUtil.GetValueFromDic <string>(dic, "prepay_id");
                if (!string.IsNullOrEmpty(prepay_id))
                {
                    var payInfo   = JsonConvert.DeserializeObject <WeiXinUtil.WxPayModel>(WeiXinUtil.BuildAppPay(prepay_id));
                    var orderinfo = new
                    {
                        payInfo.appid,
                        payInfo.partnerid,
                        payInfo.prepayid,
                        payInfo.package,
                        payInfo.noncestr,
                        payInfo.timestamp,
                        payInfo.sign,
                        code = 0,
                        msg  = "成功"
                    };
                    res.Success = true;
                    res.Data    = orderinfo;
                    res.Msg     = "";
                }
                else
                {
                    res.Msg = "支付错误:" + WeiXinUtil.GetValueFromDic <string>(dic, "err_code_des");

                    return(res);
                }
            }
            else
            {
                res.Msg = "配置错误";
                return(res);
            }
            return(res);
        }