Ejemplo n.º 1
0
        protected override XResp Execute()
        {
            var od = new x_order()
            {
                ctime   = DateTime.Now,
                user_id = cu.user_id,
                no      = Secret.MD5(Guid.NewGuid().ToString(), 0),
                status  = 1
            };

            var et = cu.etime > DateTime.Now ? (DateTime)cu.etime : DateTime.Now;

            od.etime  = et.AddMonths(mo);
            od.amount = mo * 10;//(decimal)0.01;

            od.desc = "业主房源服务续费到" + od.etime.Value.ToString("yyyy-MM-dd HH:mm:ss");

            DB.x_order.InsertOnSubmit(od);
            SubmitDBChanges();

            var co = Wx.Pay.MdOrder(od.desc, od.no, ((int)(od.amount * 100)).ToString(), "http://" + cfg.domain + "/wx/bw/notify-" + od.no + ".html", opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey);

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T预付款号为空");
            }

            od.wx_no = co.prepay_id;
            SubmitDBChanges();

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                ns   = ps["nonceStr"],
                ts   = ps["timeStamp"],
                pkg  = ps["package"],
                sign = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }
Ejemplo n.º 2
0
        private XResp balancePay()
        {
            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("T当前订单正在处理中,请稍后...");
            }

            CacheHelper.Save("pay." + cu.id, "1");
            var od = cu.x_order.FirstOrDefault(o => o.order_id == id);

            if (od.pay_amount > 0)
            {
                throw new XExcep("T当前订单已经支付,请不要重复支付");
            }
            if (od.status != 1)
            {
                throw new XExcep("T当前订单状态不正确");
            }

            if (od.pay_way == 2)
            {
                return new od()
                       {
                           amount = od.yf_amount.Value.ToString("F2"), id = od.order_id
                       }
            }
            ;

            CacheHelper.Remove("pay." + cu.id);


            //对订单状态的处理不通过回掉进行
            if (cu.balance < od.amount)
            {
                throw new XExcep("T账户余额不足");
            }
            cu.balance   -= od.amount;
            od.pay_time   = DateTime.Now;
            od.pay_amount = od.yf_amount;
            od.status     = 2;
            SubmitDBChanges();

            var r = new od()
            {
                id     = od.order_id,
                amount = od.yf_amount.Value.ToString("F2"),
            };

            return(r);
        }
Ejemplo n.º 3
0
        protected override XResp Execute()
        {
            if (amount > cfg.max_deposit || amount < cfg.min_deposit)
            {
                throw new XExcep("0x0056");
            }

            var depositLog = new x_charge();

            depositLog.amount       = amount;
            depositLog.ctime        = DateTime.Now;
            depositLog.audit_status = 1;//1为待审核
            cu.x_charge.Add(depositLog);
            SubmitDBChanges();

            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("0x0048");
            }

            CacheHelper.Save("pay." + cu.id, "1");
            var co = Wx.Pay.MdOrder(cu.nickname + "_" + cu.id + "充值" + amount, "chg_" + depositLog.charge_id + "", (int)(amount * 100) + "", "http://" + cfg.domain + "/wx/notify-2-" + depositLog.charge_id + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);
            SubmitDBChanges();

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des + "," + depositLog.charge_id);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("0x0051");
            }

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + co.prepay_id);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id          = depositLog.charge_id,
                amount      = depositLog.amount.Value,
                ns          = ps["nonceStr"],
                ts          = ps["timeStamp"],
                pkg         = ps["package"],
                sign        = Wx.ToSign(ps, false, cfg.wx_paykey),
                fromDeposit = 2
            };

            return(r);
        }
Ejemplo n.º 4
0
        protected override XResp Execute()
        {
            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("T当前订单正在处理中,请稍后...");
            }

            CacheHelper.Save("pay." + cu.id, "1");
            var od = cu.x_order.FirstOrDefault(o => o.order_id == id);

            if (od.pay_amount > 0)
            {
                throw new XExcep("T当前订单已经支付,请不要重复支付");
            }
            if (od.status != 1)
            {
                throw new XExcep("T当前订单状态不正确");
            }

            if (od.pay_way == 2)
            {
                return new od()
                       {
                           amount = od.yf_amount.Value.ToString("F2"), id = od.order_id
                       }
            }
            ;

            var co = Wx.Pay.MdOrder(od.no, od.order_id + "", ((int)(od.yf_amount * 100)).ToString(), "http://" + cfg.domain + "/wx/notify-" + od.no + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);

            if (co.return_code == "FAIL")
            {
                throw new XExcep(co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep(co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T预付款号为空");
            }

            od.wx_no = co.prepay_id;

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id     = od.order_id,
                amount = od.yf_amount.Value.ToString("F2"),
                ns     = ps["nonceStr"],
                ts     = ps["timeStamp"],
                pkg    = ps["package"],
                sign   = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }
Ejemplo n.º 5
0
        private XResp wechatPay()
        {
            var c = CacheHelper.Get <string>("pay." + cu.id);

            if (!string.IsNullOrEmpty(c))
            {
                throw new XExcep("T当前已经有操作正在进行");
            }

            var od = cu.x_order.FirstOrDefault(o => o.order_id == id);

            if (od.iscancel == true)
            {
                throw new XExcep("T订单已经取消");
            }
            if (od.pay_amount > 0)
            {
                throw new XExcep("T当前订单已经支付");
            }
            if (od.status != 1)
            {
                throw new XExcep("T订单当前状态不能支付");
            }

            CacheHelper.Save("pay." + cu.id, "1");

            var co = Wx.Pay.MdOrder(od.no, od.no + "", "1" /*((int)(od.yf_amount * 100)).ToString()*/, "http://" + cfg.domain + "/wx/notify-1-" + od.order_id + ".html", cu.wx_opid, cfg.wx_appid, cfg.wx_mch_id, cfg.wx_paykey, false);

            CacheHelper.Remove("pay." + cu.id);

            if (co.return_code == "FAIL")
            {
                throw new XExcep("T微信支付失败", co.return_msg);
            }
            if (co.result_code == "FAIL")
            {
                throw new XExcep("T微信支付失败", co.err_code + "," + co.err_code_des);
            }
            if (string.IsNullOrEmpty(co.prepay_id))
            {
                throw new XExcep("T微信支付预付ID为空");
            }

            od.wx_no = co.prepay_id;

            var ps = new Dictionary <string, string>();

            ps.Add("appId", cfg.wx_appid);
            ps.Add("timeStamp", Tools.GetGreenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            ps.Add("nonceStr", Tools.GetRandRom(24, 3));
            ps.Add("package", "prepay_id=" + od.wx_no);
            ps.Add("signType", "MD5");

            var r = new od()
            {
                id     = od.order_id,
                amount = od.yf_amount.Value.ToString("F2"),
                ns     = ps["nonceStr"],
                ts     = ps["timeStamp"],
                pkg    = ps["package"],
                sign   = Wx.ToSign(ps, false, cfg.wx_paykey)
            };

            return(r);
        }