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); }
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); }
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); }
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); }
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); }