protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { try { companyID = Request.QueryString["companyID"].ToString(); money = Request.QueryString["money"].ToString(); productID = Request.QueryString["productID"].ToString(); mechineID = Request.QueryString["mechineID"].ToString(); dgOrderDetailID = Request.QueryString["dgOrderDetailID"].ToString(); type = Request.QueryString["type"].ToString(); // money = "1"; Util.Debuglog("companyID=" + companyID + ";money=" + money + ";productID=" + productID + ";mechineID=" + mechineID + ";dgOrderDetailID=" + dgOrderDetailID + ";type=" + type, "_聚合支付支付宝.txt"); SybWxPayService sybService = new SybWxPayService(companyID); string url = "https://wx.bingoseller.com/pay/JHNotify.aspx"; string data = ""; string sql = "select *from asm_product where productID=" + productID; DataTable dt = DbHelperSQL.Query(sql).Tables[0]; Dictionary <String, String> rsp = sybService.pay(long.Parse((double.Parse(money) * 100).ToString()), DateTime.Now.ToFileTime().ToString(), "A01", dt.Rows[0]["proName"].ToString(), "商品消费", "", "", url, ""); data = OperUtil.SerializeDictionaryToJsonString(rsp); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "_聚合支付支付宝.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); string payinfoUrl = jo["payinfo"].ToString(); Util.Debuglog("payinfoUrl=" + payinfoUrl, "_聚合支付支付宝.txt"); string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,statu,reqsn,type,payType,trxamt,createTime,mechineID,productID,companyID,dgOrderDetailID,orderType) values('" + appid + "','" + cusid + "','" + trxid + "','0','" + reqsn + "',2,2," + double.Parse(money) * 100 + ",'" + DateTime.Now + "','" + mechineID + "','" + productID + "','" + companyID + "','" + dgOrderDetailID + "','" + type + "')"; Util.Debuglog("insertSQL=" + insertSQL, "_聚合支付支付宝.txt"); DbHelperSQL.ExecuteSql(insertSQL); Response.Write("<script>window.location.href='" + payinfoUrl + "';</script>"); // //插入预订单信息 } } catch (Exception ex) { Util.Debuglog("Exception=" + ex.Message, "_聚合支付支付宝.txt"); } } }
protected void Page_Load(object sender, EventArgs e) { var userid = Vincent._Request.GetString("userid"); var user_name = Vincent._Request.GetString("user_name"); string openid = ""; SybWxPayService sybService = new SybWxPayService(); Vincent._Weixin.WeixinPay weixinpay = new Vincent._Weixin.WeixinPay("sAppID", "sAppSecret", "sPartner", "sPartnerKey", "sReturnUrl"); openid = Vincent._Weixin.WeixinUtility.GetOpendId(); if (openid != "" && Vincent._Convert.ToInt(userid) > 0) { BLL.users bll = new BLL.users(); Model.users model = bll.GetModel(Vincent._Convert.ToInt(userid)); model.safe_question = openid; if (bll.Update(model)) { Vincent._Log.SaveMessage("alinpay.aspx----->openid写入数据库成功userid=" + userid + " ------> openid=" + openid); } } Vincent._Log.SaveMessage("test.aspx获取openid=" + openid); long pro_price = Vincent._Convert.ToInt64(Vincent._WebConfig.GetAppSettingsString("pro_price"), 1); try { Random ran = new Random(); var num = ran.Next(1000); Dictionary <String, String> rsp = sybService.pay(pro_price, user_name + "_" + num, "W02", "VIP会员一年有效期", "门川家居", openid, "", "http://shop.mc-house.com/WeixinPay/return_url.aspx", ""); printRsp(rsp); } catch (Exception ex) { Vincent._Log.SaveMessage("收银宝支付异常:" + ex.Message); } }
public static Object ok(string billno, string pwd, string companyID) { //首先验证二级退款密码是否正确 string sql12 = "select * from asm_company where id=" + companyID; DataTable dd1 = DbHelperSQL.Query(sql12).Tables[0]; if (dd1.Rows.Count > 0) { if (pwd == dd1.Rows[0]["pwd2"].ToString()) { //查询该笔订单信息 string sql1 = "select * from asm_pay_info where trxid='" + billno + "'"; DataTable dt1 = DbHelperSQL.Query(sql1).Tables[0]; if (dt1.Rows.Count > 0) { //查询订单信息 string sqlOrder = "select * from asm_sellDetail where billno='" + billno + "'"; DataTable Dorder = DbHelperSQL.Query(sqlOrder).Tables[0]; if (Dorder.Rows.Count <= 0) { return(new { result = 0, msg = "该笔订单查询失败" }); } //判断出货状态如果是料道错误或者是交易序列号相同给退款 零售的怎么来怎么退 订购的退到钱包 if (!string.IsNullOrEmpty(Dorder.Rows[0]["code"].ToString())) { //订购的 if (Dorder.Rows[0]["bz"].ToString() == "料道错误" || Dorder.Rows[0]["bz"].ToString() == "交易序列号相同" || Dorder.Rows[0]["bz"].ToString() == "料道故障" || Dorder.Rows[0]["bz"].ToString() == "校验错误" || Dorder.Rows[0]["bz"].ToString() == "出货失败") { string sql = "select * from asm_sellDetail where billno='" + billno + "'"; DataTable dd = DbHelperSQL.Query(sql).Tables[0]; if (dd.Rows.Count > 0) { //更新会员钱包 并插入资金变动记录 string update = "update asm_member set AvailableMoney=AvailableMoney+" + dd.Rows[0]["totalMoney"].ToString() + " where id=" + dd.Rows[0]["memberID"].ToString(); int a = DbHelperSQL.ExecuteSql(update); string sqlm = "select * from asm_member where id=" + dd.Rows[0]["memberID"].ToString(); DataTable dt = DbHelperSQL.Query(sqlm).Tables[0]; if (a > 0) { string sqlu = "update asm_sellDetail set bz='退款成功' where billno='" + billno + "'"; DbHelperSQL.ExecuteSql(sqlu); Util.insertNotice(dt.Rows[0]["id"].ToString(), "出货异常退款", "您于" + Dorder.Rows[0]["orderTime"].ToString() + "取货异常退还金额:" + dd.Rows[0]["totalMoney"].ToString() + ";请查收钱包"); Util.moneyChange(dt.Rows[0]["id"].ToString(), dd.Rows[0]["totalMoney"].ToString(), dt.Rows[0]["AvailableMoney"].ToString(), "退款通知", "7", "", "取货异常退还金额:" + dd.Rows[0]["totalMoney"].ToString()); return(new { result = 0, msg = "退款成功,成功到会员钱包中" }); } } } } else { //零售的 if (Dorder.Rows[0]["bz"].ToString() == "料道错误" || Dorder.Rows[0]["bz"].ToString() == "交易序列号相同" || Dorder.Rows[0]["bz"].ToString() == "料道故障" || Dorder.Rows[0]["bz"].ToString() == "校验错误" || Dorder.Rows[0]["bz"].ToString() == "出货失败") { if (Dorder.Rows[0]["payType"].ToString() == "3") { //退到钱包 string sql = "select * from asm_sellDetail where billno='" + billno + "'"; DataTable dd = DbHelperSQL.Query(sql).Tables[0]; if (dd.Rows.Count > 0) { //更新会员钱包 并插入资金变动记录 string update = "update asm_member set AvailableMoney=AvailableMoney+" + dd.Rows[0]["totalMoney"].ToString() + " where id=" + dd.Rows[0]["memberID"].ToString(); int a = DbHelperSQL.ExecuteSql(update); string sqlm = "select * from asm_member where id=" + dd.Rows[0]["memberID"].ToString(); DataTable dt = DbHelperSQL.Query(sqlm).Tables[0]; if (a > 0) { string update1 = "update asm_pay_info set statu=2,fintime='" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' where trxid='" + billno + "'"; DbHelperSQL.ExecuteSql(update1); string sqlu = "update asm_sellDetail set bz='退款成功' where billno='" + billno + "'"; DbHelperSQL.ExecuteSql(sqlu); Util.insertNotice(dt.Rows[0]["id"].ToString(), "出货异常退款", "您于" + Dorder.Rows[0]["orderTime"].ToString() + "购买商品出货异常退还金额:" + dd.Rows[0]["totalMoney"].ToString() + ";请查收钱包"); Util.moneyChange(dt.Rows[0]["id"].ToString(), dd.Rows[0]["totalMoney"].ToString(), dt.Rows[0]["AvailableMoney"].ToString(), "退款通知", "7", "", "取货异常退还金额:" + dd.Rows[0]["totalMoney"].ToString()); return(new { result = 0, msg = "退款成功,成功到会员钱包中" }); } } } else if (Dorder.Rows[0]["payType"].ToString() == "1" || Dorder.Rows[0]["payType"].ToString() == "2") { //退到1微信或者2支付宝 string sql = "select * from asm_pay_info where trxid='" + billno + "'"; DataTable dd = DbHelperSQL.Query(sql).Tables[0]; if (dd.Rows.Count > 0 && dd.Rows[0]["statu"].ToString() == "1") { SybWxPayService sybService = new SybWxPayService(Dorder.Rows[0]["mechineID"].ToString()); long fen = long.Parse(dd.Rows[0]["trxamt"].ToString()); Random rd = new Random(); int rand = rd.Next(10000, 99999); string reqsn = ConvertDateTimeToInt(DateTime.Now).ToString() + rand; string oldtrxid = dd.Rows[0]["trxid"].ToString(); string oldreqsn = dd.Rows[0]["reqsn"].ToString(); Dictionary <String, String> rsp = sybService.cancel(fen, reqsn, oldtrxid, oldreqsn); string data = OperUtil.SerializeDictionaryToJsonString(rsp); Util.Debuglog("微信支付链接data=" + data, "_退款.txt"); //插入预处理订单信息 string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("微信支付链接json=" + json, "_退款.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string cusid = jo["cusid"].ToString(); //商户号 string trxid = jo["trxid"].ToString(); //交易单号 string fintime = jo["fintime"].ToString(); //交易完成时间 string reqsn1 = jo["reqsn"].ToString(); //商户订单号 string trxstatus = jo["trxstatus"].ToString(); //交易状态 //更新asm_pay_info if (trxstatus == "0000") { string update = "update asm_pay_info set statu=2,tkreqsn='" + reqsn1 + "',fintime='" + fintime + "',trxstatus='" + trxstatus + "',errmsg='' where trxid='" + oldtrxid + "'"; DbHelperSQL.ExecuteSql(update); string sqlu = "update asm_sellDetail set bz='退款成功' where billno='" + billno + "'"; DbHelperSQL.ExecuteSql(sqlu); return(new { result = 0, msg = "退款成功,已经退到会员的微信或支付宝" }); } else { string errmsg = jo["errmsg"].ToString();//交易失败信息 string update = "update asm_pay_info set tkreqsn='" + reqsn1 + "',fintime='" + fintime + "',trxstatus='" + trxstatus + "',errmsg='" + errmsg + "' where trxid='" + oldtrxid + "'"; DbHelperSQL.ExecuteSql(update); if (trxstatus == "3008") { return(new { result = 0, msg = errmsg }); } else { return(new { result = 0, msg = "退款失败" }); } } } else { return(new { result = 0, msg = "退款失败" }); } } } } } } else { return(new { result = 0, msg = "该笔订单查询失败" }); } } else { return(new { result = 0, msg = "退款密码错误" });//密码错误 } } return(new { result = 0, msg = "退款失败" }); }
private string QueryOrder(DataRow row) { #region 获取基本参数 string OrderSN = string.Empty; if (row.Table.Columns.Contains("OrderSN")) { OrderSN = row["OrderSN"].ToString(); } string CommunityId = string.Empty; if (row.Table.Columns.Contains("CommunityId")) { CommunityId = row["CommunityId"].ToString(); } var community = GetCommunity(CommunityId); if (community == null) { return(JSONHelper.FromString(false, "未查询到小区信息")); } int CommID = AppGlobal.StrToInt(community.CommID); PubConstant.hmWyglConnectionString = GetConnectionStr(community); #endregion #region 查询数据库订单信息 using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { dynamic OrderInfo = conn.QueryFirstOrDefault("SELECT * FROM Tb_Payment_Order WITH(NOLOCK) WHERE OrderSN = @OrderSN", new { OrderSN }); if (null == OrderInfo) { return(new ApiResult(false, "支付订单不存在").toJson()); } dynamic tbNotice = conn.QueryFirstOrDefault("SELECT * FROM Tb_Notice WITH(NOLOCK) WHERE Id = @Id", new { Id = OrderInfo.NoticeId }); if (null == tbNotice) { return(new ApiResult(false, "交易订单不存在").toJson()); } CommID = Convert.ToString(tbNotice.CommID); } #region 获取对应支付配置 AllinConfig allinConfig; using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { dynamic tb_Payment_Config = conn.QueryFirstOrDefault <dynamic>("SELECT * FROM Tb_Payment_Config WITH(NOLOCK) WHERE CommID = @CommID", new { CommID }); if (null == tb_Payment_Config) { return(new ApiResult(false, "该项目未开通对应支付方式,请联系管理员").toJson()); } try { allinConfig = JsonConvert.DeserializeObject <AllinConfig>(tb_Payment_Config.Config); if (null == allinConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误,请联系管理员").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误,请联系管理员").toJson()); } } #endregion #endregion #region 请求通联查询 Dictionary <string, string> param; try { param = SybWxPayService.Query(OrderSN, "", allinConfig.orgid, allinConfig.appid, allinConfig.custid, allinConfig.appkey); return(new ApiResult(true, param).toJson()); } catch (Exception ex) { GetLog().Error("OnPay", ex); return(new ApiResult(false, ex.Message).toJson()); } #endregion }
private string OnPay(DataRow row) { #region 获取基本参数 string CommunityId = string.Empty; if (row.Table.Columns.Contains("CommunityId")) { CommunityId = row["CommunityId"].ToString(); } string RoomID = string.Empty; if (row.Table.Columns.Contains("RoomID")) { RoomID = row["RoomID"].ToString(); } string CustID = string.Empty; if (row.Table.Columns.Contains("CustID")) { CustID = row["CustID"].ToString(); } string OpenID = string.Empty; if (row.Table.Columns.Contains("OpenID")) { OpenID = row["OpenID"].ToString(); } if (!row.Table.Columns.Contains("PayChannel") || string.IsNullOrEmpty(row["PayChannel"].ToString())) { return(new ApiResult(false, "参数PayChannel有误").toJson()); } var community = GetCommunity(CommunityId); if (community == null) { return(JSONHelper.FromString(false, "未查询到小区信息")); } int CommID = AppGlobal.StrToInt(community.CommID); PubConstant.hmWyglConnectionString = GetConnectionStr(community); var payChannel = row["PayChannel"].ToString(); var payType = 0; switch (payChannel.ToLower()) { case PayChannelString.Alipay: payType = 1; break; case PayChannelString.WechatPay: payType = 2; break; case PayChannelString.AllInPay_Alipay: payType = 1; break; case PayChannelString.AllInPay_WechatPay: payType = 2; break; default: return(new ApiResult(false, "参数payChannel有误").toJson()); } if (payType == 2) { if (payChannel.ToLower().Equals(PayChannelString.AllInPay_WechatPay) && string.IsNullOrEmpty(OpenID)) { return(new ApiResult(false, "参数OpenID不能为空").toJson()); } } #endregion using (IDbConnection erpConn = new SqlConnection(PubConstant.hmWyglConnectionString)) { dynamic tb_Payment_Config = erpConn.QueryFirstOrDefault <dynamic>("SELECT * FROM Tb_Payment_Config WITH(NOLOCK) WHERE CommID = @CommID", new { CommID }); if (null == tb_Payment_Config) { return(new ApiResult(false, "该项目未开通对应支付方式").toJson()); } // 旧方式获取对应支付配置 AllinConfig allinConfig = null; // 新方式获取支付配置 PaymentConfig paymentConfig = null; if (payChannel == PayChannelString.AllInPay_Alipay || payChannel == PayChannelString.AllInPay_WechatPay) { try { allinConfig = JsonConvert.DeserializeObject <AllinConfig>(tb_Payment_Config.Config); if (null == allinConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } else { // 新的方式,Config存储多个配置 try { // ERP的配置表,要求存储一个Json数组,用于配置支持不同支付方式 // 配置项要求存储一个 List <PaymentConfig> configs = JsonConvert.DeserializeObject <List <PaymentConfig> >(tb_Payment_Config.Config); if (null == configs || configs.Count <= 0) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } if (payChannel == PayChannelString.Alipay) { paymentConfig = configs.Find(item => item.type == "AliPay"); } if (payChannel == PayChannelString.WechatPay) { paymentConfig = configs.Find(item => item.type == "WChatPay"); } if (null == paymentConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } catch (Exception) { } } #region 计算金额 if (!row.Table.Columns.Contains("PayData") || string.IsNullOrEmpty(row["PayData"].ToString())) { return(new ApiResult(false, "缺少参数PayData").toJson()); } string PayData = row["PayData"].ToString(); if (!CheckPayData(Global_Fun.BurstConnectionString(CommID, Global_Fun.BURST_TYPE_CHARGE), Convert.ToInt64(CustID), Convert.ToInt64(RoomID), PayData, out decimal Amt, out string errMsg, true, false, !"1940".Equals(Global_Var.LoginCorpID))) { return(new ApiResult(false, errMsg).toJson()); } if (Amt <= 0.00M) { return(new ApiResult(false, "金额必须大于0").toJson()); } #endregion JObject PayDataObj = JObject.Parse(PayData); int Type = (int)PayDataObj["Type"]; #region 查询项目名称和房屋编号,拼接费用备注 string FeesMemo = string.Empty; string RoomSign = string.Empty; if (Type == 1) { FeesMemo = "物业综合费用缴纳"; string CommName = erpConn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = erpConn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } else { FeesMemo = "物业综合费用预存"; string CommName = erpConn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = erpConn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } #endregion string NoticeId = Guid.NewGuid().ToString(); // 生成订单 if (erpConn.Execute("INSERT INTO Tb_Notice(Id, CommID, RoomID, CustID, PayData, CreateTime) VALUES(@Id, @CommID, @RoomID, @CustID, @PayData, @CreateTime)", new { Id = NoticeId, CommID, RoomID, CustID, PayData, CreateTime = DateTime.Now.ToString() }) <= 0) { return(new ApiResult(false, "创建收款订单失败,请重试").toJson()); } string ChargeMode = "业主APP缴费"; if (payChannel == PayChannelString.AllInPay_Alipay) { ChargeMode = "通联_业主APP(支付宝)"; } else if (payChannel == PayChannelString.AllInPay_WechatPay) { ChargeMode = "通联_业主APP(微信)"; } else { ChargeMode = "通联_业主APP"; } #region 修改收款方式 if (erpConn.QueryFirstOrDefault <int>("SELECT COUNT(1) FROM syscolumns WHERE id=object_id('Tb_Notice') AND name = 'ChargeMode'") > 0) { erpConn.Execute("UPDATE Tb_Notice SET ChargeMode = @ChargeMode WHERE Id = @Id", new { ChargeMode, Id = NoticeId }); } #endregion DateTime dateNow = DateTime.Now; string OrderSN = dateNow.ToString("yyyyMMddHHmmssfff") + Utils.BuildRandomStr(3); string PaymentNotifyUrl = string.Empty; Dictionary <string, string> param = null; if (payChannel == PayChannelString.AllInPay_Alipay || payChannel == PayChannelString.AllInPay_WechatPay) { #region 请求通联支付 #region 获取对应类型的下账地址 if (Type == 1) { PaymentNotifyUrl = AppGlobal.GetAppSetting("AllinPay_Notify_Url") + "?CommID=" + CommID; } else { PaymentNotifyUrl = AppGlobal.GetAppSetting("AllinPay_Prec_Notify_Url") + "?CommID=" + CommID; } #endregion try { param = SybWxPayService.Pay(Convert.ToInt64(Amt * 100), OrderSN, payChannel == PayChannelString.AllInPay_Alipay ? "A01" : "W06", FeesMemo, RoomSign, OpenID, "", PaymentNotifyUrl, "", "", "", "", allinConfig.orgid, allinConfig.appid, allinConfig.custid, allinConfig.appkey, allinConfig.subbranch); if (param == null || !param.ContainsKey("payinfo")) { GetLog().Error("OnPay:" + JsonConvert.SerializeObject(param)); return(new ApiResult(false, "生成支付订单失败,请重试").toJson()); } } catch (Exception ex) { GetLog().Error("OnPay", ex); return(new ApiResult(false, "生成支付订单失败,请重试").toJson()); } if (erpConn.Execute(@"INSERT INTO Tb_Payment_Order(PayType, OrderSN, NoticeId, Amt, CreateTime) VALUES(@PayType, @OrderSN, @NoticeId, @Amt, @CreateTime)", new { PayType = payType, OrderSN = OrderSN, NoticeId = NoticeId, Amt = Amt, CreateTime = dateNow }) <= 0) { return(new ApiResult(false, "生成支付订单失败,请重试(1003)").toJson()); } return(new ApiResult(true, new { OrderSN = OrderSN, QrCode = param["payinfo"].ToString() }).toJson()); #endregion } if (payChannel == PayChannelString.Alipay) { AliConfig aliConfig = null; try { aliConfig = Config.GetConfig <AliConfig>(paymentConfig.config); if (null == aliConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } #region 请求支付宝官方支付 #region 获取对应类型的下账地址 PaymentNotifyUrl = AppGlobal.GetAppSetting("AliPay_Notify_Url"); #endregion AlipayTradeAppPayResponse response = null; try { JObject BizContent = new JObject(); //要求15分钟内支付 BizContent.Add("timeout_express", "15m"); BizContent.Add("total_amount", Amt); BizContent.Add("body", FeesMemo); BizContent.Add("subject", FeesMemo); BizContent.Add("out_trade_no", OrderSN); IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", aliConfig.appid, aliConfig.app_private_key, "json", "1.0", "RSA2", aliConfig.alipay_public_key, "UTF-8", false); AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest { BizContent = JsonConvert.SerializeObject(BizContent), }; request.SetNotifyUrl(PaymentNotifyUrl); response = client.SdkExecute(request); } catch (Exception ex) { Log(ex.Message, "AliPayLogs\\"); GetLog().Error(ex.Message + Environment.CommandLine + ex.StackTrace); return(new ApiResult(false, "请求订单失败,请重试").toJson()); } if (erpConn.Execute("INSERT INTO Tb_Payment_Order(PayType, OrderSN, NoticeId, Amt, CreateTime) VALUES(@PayType, @OrderSN, @NoticeId, @Amt, @CreateTime)", new { PayType = 1, OrderSN, NoticeId = NoticeId, Amt = Amt, CreateTime = dateNow }) <= 0) { return(new ApiResult(false, "生成订单失败").toJson()); } return(new ApiResult(true, new { OrderSN = OrderSN, QrCode = response.Body }).toJson()); #endregion } if (payChannel == PayChannelString.WechatPay) { WxConfig wxConfig = null; try { wxConfig = Config.GetConfig <WxConfig>(paymentConfig.config); if (null == wxConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } #region 请求微信官方支付 #region 获取对应类型的下账地址 PaymentNotifyUrl = AppGlobal.GetAppSetting("WxPay_Notify_Url"); #endregion WxPayData wxPayData = new WxPayData(); wxPayData.SetValue("appid", wxConfig.appid); wxPayData.SetValue("body", FeesMemo); wxPayData.SetValue("mch_id", wxConfig.mch_id); wxPayData.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); wxPayData.SetValue("notify_url", PaymentNotifyUrl); wxPayData.SetValue("out_trade_no", OrderSN); wxPayData.SetValue("spbill_create_ip", "8.8.8.8"); wxPayData.SetValue("total_fee", Convert.ToInt32(Amt * 100)); wxPayData.SetValue("trade_type", "APP"); wxPayData.SetValue("sign_type", wxpay.utils.WxPayData.SIGN_TYPE_HMAC_SHA256); wxPayData.SetValue("sign", wxPayData.MakeSign(wxConfig.appkey)); try { wxPayData = WxPayApi.UnifiedOrder(wxPayData); } catch (Exception) { return(new ApiResult(false, "请求超时,请重试").toJson()); } if (!wxPayData.IsSet("return_code") || !"SUCCESS".Equals(wxPayData.GetValue("return_code").ToString())) { return(new ApiResult(false, "请求支付订单失败").toJson()); } if (!wxPayData.IsSet("result_code") || !"SUCCESS".Equals(wxPayData.GetValue("result_code").ToString())) { return(new ApiResult(false, "请求支付订单失败").toJson()); } if (!wxPayData.IsSet("prepay_id")) { return(new ApiResult(false, "请求支付订单失败").toJson()); } string prepay_id = wxPayData.GetValue("prepay_id").ToString(); if (erpConn.Execute("INSERT INTO Tb_Payment_Order(PayType, OrderSN, NoticeId, Amt, CreateTime) VALUES(@PayType, @OrderSN, @NoticeId, @Amt, @CreateTime)", new { PayType = 2, OrderSN, NoticeId = NoticeId, Amt = Amt, CreateTime = dateNow }) <= 0) { return(new ApiResult(false, "生成订单失败").toJson()); } WxPayData result = new WxPayData(); result.SetValue("appid", wxPayData.GetValue("appid").ToString()); result.SetValue("partnerid", wxPayData.GetValue("mch_id").ToString()); result.SetValue("prepayid", prepay_id); result.SetValue("package", "Sign=WXPay"); result.SetValue("noncestr", wxPayData.GetValue("nonce_str").ToString()); result.SetValue("timestamp", WxPayApi.GenerateTimeStamp()); result.SetValue("sign", result.MakeSign(wxpay.utils.WxPayData.SIGN_TYPE_HMAC_SHA256, wxConfig.appkey)); JObject jObj = JObject.Parse(result.ToJson()); return(new ApiResult(true, new { OrderSN = OrderSN, QrCode = jObj }).toJson()); #endregion } return(new ApiResult(false, "不支持的支付方式").toJson()); } }
private string ScanPay(DataRow row) { #region 获取基本参数 string CommID = string.Empty; if (row.Table.Columns.Contains("CommID")) { CommID = row["CommID"].ToString(); } string RoomID = string.Empty; if (row.Table.Columns.Contains("RoomID")) { RoomID = row["RoomID"].ToString(); } string CustID = string.Empty; if (row.Table.Columns.Contains("CustID")) { CustID = row["CustID"].ToString(); } string AuthCode = string.Empty; if (row.Table.Columns.Contains("AuthCode")) { AuthCode = row["AuthCode"].ToString(); } #endregion #region 获取对应支付配置 AllinConfig allinConfig; using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { dynamic tb_Payment_Config = conn.QueryFirstOrDefault <dynamic>("SELECT * FROM Tb_Payment_Config WITH(NOLOCK) WHERE CommID = @CommID", new { CommID }); if (null == tb_Payment_Config) { return(new ApiResult(false, "该项目未开通对应支付方式,请联系管理员").toJson()); } try { allinConfig = JsonConvert.DeserializeObject <AllinConfig>(tb_Payment_Config.Config); if (null == allinConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误,请联系管理员").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误,请联系管理员").toJson()); } } #endregion #region 计算金额 if (!row.Table.Columns.Contains("PayData") || string.IsNullOrEmpty(row["PayData"].ToString())) { return(new ApiResult(false, "缺少参数PayData").toJson()); } string PayData = row["PayData"].ToString(); if (!CheckPayData(Global_Fun.BurstConnectionString(AppGlobal.StrToInt(CommID), Global_Fun.BURST_TYPE_CHARGE), Convert.ToInt64(CustID), Convert.ToInt64(RoomID), PayData, out decimal Amt, out string errMsg, true, false, !"1940".Equals(Global_Var.LoginCorpID))) { return(new ApiResult(false, errMsg).toJson()); } if (Amt <= 0.00M) { return(new ApiResult(false, "金额必须大于0").toJson()); } #endregion JObject PayDataObj = JObject.Parse(PayData); int Type = (int)PayDataObj["Type"]; #region 查询项目名称和房屋编号,拼接费用备注 string FeesMemo = string.Empty; string RoomSign = string.Empty; if (Type == 1) { FeesMemo = "物业综合费用缴纳"; using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { string CommName = conn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = conn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } } else { using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { string CommName = conn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = conn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } } #endregion #region 生成订单 string NoticeId = Guid.NewGuid().ToString(); using (IDbConnection conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { if (conn.Execute("INSERT INTO Tb_Notice(Id, CommID, RoomID, CustID, PayData, CreateTime) VALUES(@Id, @CommID, @RoomID, @CustID, @PayData, @CreateTime)", new { Id = NoticeId, CommID, RoomID, CustID, PayData, CreateTime = DateTime.Now.ToString() }) <= 0) { return(new ApiResult(false, "创建收款订单失败,请重试").toJson()); } string ChargeMode = "前台扫码缴费"; #region 修改收款方式 if (conn.QueryFirstOrDefault <int>("SELECT COUNT(1) FROM syscolumns WHERE id=object_id('Tb_Notice') AND name = 'ChargeMode'") > 0) { conn.Execute("UPDATE Tb_Notice SET ChargeMode = @ChargeMode WHERE Id = @Id", new { ChargeMode, Id = NoticeId }); } #endregion DateTime dateNow = DateTime.Now; string OrderSN = dateNow.ToString("yyyyMMddHHmmssfff") + Utils.BuildRandomStr(3); if (conn.Execute("INSERT INTO Tb_Payment_Order(PayType, OrderSN, NoticeId, Amt, CreateTime) VALUES(@PayType, @OrderSN, @NoticeId, @Amt, @CreateTime)", new { PayType = 4, OrderSN = OrderSN, NoticeId = NoticeId, Amt = Amt, CreateTime = dateNow }) <= 0) { return(new ApiResult(false, "创建支付订单失败,请重试").toJson()); } #region 请求通联微信支付 Dictionary <string, string> param; try { param = SybWxPayService.ScanPay(Convert.ToInt64(Amt * 100), OrderSN, FeesMemo, RoomSign, AuthCode, "", "", "", "", allinConfig.orgid, allinConfig.appid, allinConfig.custid, allinConfig.appkey); } catch (Exception ex) { GetLog().Error("OnPay", ex); return(new ApiResult(false, ex.Message).toJson()); } #endregion return(new ApiResult(true, param).toJson()); } #endregion }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains("micromessenger")) { this.type.Value = "wx"; } else if (userAgent.ToLower().Contains("alipayclient")) { this.type.Value = "zfb"; } mechineID = Request.QueryString["mechineID"].ToString(); payMoney = Request.QueryString["payMoney"].ToString(); asmpayid = Request.QueryString["asmpayid"].ToString(); SybWxPayService sybService = new SybWxPayService(mechineID); string url = "http://nq.bingoseller.com/pay/Notify.aspx"; string data = ""; if (this.type.Value == "wx") { long f = long.Parse((double.Parse(payMoney) * 100).ToString()); Dictionary <String, String> rsp = sybService.pay(f, DateTime.Now.ToFileTime().ToString(), "W01", "", "", "", "", url, ""); data = OperUtil.SerializeDictionaryToJsonString(rsp); //插入预处理订单信息 string json = (new JavaScriptSerializer()).Serialize(rsp); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); string payinfo = jo["payinfo"].ToString(); string update = "update asm_pay_info set appid='" + appid + "',cusid='" + cusid + "',trxid='" + trxid + "',statu='0',reqsn='" + reqsn + "',type='2',payType='1',trxamt=" + (double.Parse(payMoney) * 100) + " where asmpayid='" + asmpayid + "'"; url = payinfo; DbHelperSQL.ExecuteSql(update); Response.Write("<script>top.location.href='" + payinfo + "';</script>"); } } else if (this.type.Value == "zfb") { Dictionary <String, String> rsp = sybService.pay(long.Parse((double.Parse(payMoney) * 100).ToString()), DateTime.Now.ToFileTime().ToString(), "A01", "", "", "", "", url, ""); data = OperUtil.SerializeDictionaryToJsonString(rsp); string json = (new JavaScriptSerializer()).Serialize(rsp); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); string payinfo = jo["payinfo"].ToString(); string update = "update asm_pay_info set appid='" + appid + "',cusid='" + cusid + "',trxid='" + trxid + "',statu='0',reqsn='" + reqsn + "',type='2',payType='2',trxamt=" + (double.Parse(payMoney) * 100) + " where asmpayid='" + asmpayid + "'"; DbHelperSQL.ExecuteSql(update); Response.Redirect(payinfo); } } else { Response.Write("请选择微信或者支付宝打开"); } } }
public static async System.Threading.Tasks.Task paycall(Dictionary <String, String> reqParams) { string json = (new JavaScriptSerializer()).Serialize(reqParams); JObject jo = (JObject)JsonConvert.DeserializeObject(json); string sql = "select * from asm_pay_info where statu=0 and trxid='" + jo["trxid"].ToString() + "'"; Util.Debuglog("sql=" + sql, "出货信息.txt"); DataTable dt = DbHelperSQL.Query(sql).Tables[0]; if (dt.Rows.Count > 0) { string pickupdate = "update asm_product_pick set payStatus=3,payTime='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where reqsnNo='" + dt.Rows[0]["reqsn"].ToString() + "' "; Util.Debuglog("sqlInsert=" + pickupdate, "获取预生成订单号.txt"); DbHelperSQL.ExecuteSql(pickupdate); //获取appid查询这个appid的 的appkey string sql2 = "select * from asm_company where tl_APPID='" + dt.Rows[0]["appid"].ToString() + "'"; Util.Debuglog("sql2=" + sql2, "出货信息.txt"); DataTable d2 = DbHelperSQL.Query(sql2).Tables[0]; //AppUtil.validSign(reqParams, d2.Rows[0]["tl_APPKEY"].ToString(), d2.Rows[0]["id"].ToString()) if (dt.Rows[0]["statu"].ToString() == "0")//验签成功 { string trxidInfo = RedisHelper.GetRedisModel <string>(jo["trxid"].ToString()); if (string.IsNullOrEmpty(trxidInfo)) { //退到1微信或者2支付宝 SybWxPayService sybService = new SybWxPayService(dt.Rows[0]["mechineID"].ToString()); long fen = long.Parse(dt.Rows[0]["trxamt"].ToString()); Random rd = new Random(); int rand = rd.Next(10000, 99999); string reqsn = Util.ConvertDateTimeToInt(DateTime.Now).ToString() + rand; string oldtrxid = dt.Rows[0]["trxid"].ToString(); string oldreqsn = dt.Rows[0]["reqsn"].ToString(); Dictionary <String, String> rsp = sybService.cancel(fen, reqsn, oldtrxid, oldreqsn); string data = OperUtil.SerializeDictionaryToJsonString(rsp); Util.Debuglog("微信支付链接data=" + data, "_退款.txt"); //插入预处理订单信息 string returnJson = (new JavaScriptSerializer()).Serialize(rsp); JObject returnjo = (JObject)JsonConvert.DeserializeObject(returnJson); if (returnjo["retcode"].ToString() == "SUCCESS") { string cusid = returnjo["cusid"].ToString(); //商户号 string trxid = returnjo["trxid"].ToString(); //交易单号 string fintime = returnjo["fintime"].ToString(); //交易完成时间 string reqsn1 = returnjo["reqsn"].ToString(); //商户订单号 string trxstatus = returnjo["trxstatus"].ToString(); //交易状态 if (trxstatus == "0000") { //更新asm_pay_info string update = "update asm_pay_info set statu=2,tkreqsn='" + reqsn1 + "',fintime='" + fintime + "',trxstatus='" + trxstatus + "' where trxid='" + oldtrxid + "'"; DbHelperSQL.ExecuteSql(update); string sqlm = "select * from asm_member where openID='" + dt.Rows[0]["acct"].ToString() + "'"; DataTable sqlmdt = DbHelperSQL.Query(sqlm).Tables[0]; if (sqlmdt.Rows.Count > 0) { Util.insertNotice(sqlmdt.Rows[0]["id"].ToString(), "出货异常退款", "您于" + dt.Rows[0]["createTime"].ToString() + "购买商品出货异常退还金额:" + double.Parse(dt.Rows[0]["trxamt"].ToString()) / 100 + ";请查收微信或支付宝", dt.Rows[0]["mechineID"].ToString()); Util.moneyChange(sqlmdt.Rows[0]["id"].ToString(), (double.Parse(fen.ToString()) / 100).ToString("0.00"), sqlmdt.Rows[0]["AvailableMoney"].ToString(), "退款通知", "7", ""); try { string company = Util.getCompany(sqlmdt.Rows[0]["companyID"].ToString()); wxHelper wx = new wxHelper(sqlmdt.Rows[0]["companyID"].ToString()); data = TemplateMessage.tk(sqlmdt.Rows[0]["openID"].ToString(), OperUtil.getMessageID(sqlmdt.Rows[0]["companyID"].ToString(), "OPENTM410089600"), "退款通知", (double.Parse(dt.Rows[0]["trxamt"].ToString()) / 100).ToString("f2"), "您购买的商品没有出货成功,钱已退还到账户"); TemplateMessage.SendTemplateMsg(wx.IsExistAccess_Token(sqlmdt.Rows[0]["companyID"].ToString()), data); } catch (Exception e) { Util.Debuglog("e=" + e.Message, "会员等级消息模板.txt"); } } } else { string errmsg = jo["errmsg"].ToString();//交易失败信息 string update = "update asm_pay_info set tkreqsn='" + reqsn1 + "',fintime='" + fintime + "',trxstatus='" + trxstatus + "',errmsg='" + errmsg + "' where trxid='" + oldtrxid + "'"; DbHelperSQL.ExecuteSql(update); } } return; } //验签成功后,进行业务处理,处理完毕返回成功 string trxdate = jo["trxdate"].ToString(); string paytime = jo["paytime"].ToString(); string acct = jo["acct"].ToString(); string chnltrxid = jo["chnltrxid"].ToString(); double trxamtY = double.Parse(jo["trxamt"].ToString()) / 100; //发送出货指令 string ldno = ""; //继续查找 bool b = true; int num = 3; while (b && num > 0) { num--; ldno = Util.getLDNO(dt.Rows[0]["mechineID"].ToString(), dt.Rows[0]["productID"].ToString()); if (!string.IsNullOrEmpty(ldno)) { b = false; } else { Thread.Sleep(1000); } } Util.Debuglog("mechineID=" + dt.Rows[0]["mechineID"].ToString() + ";productID=" + dt.Rows[0]["productID"].ToString() + ";LDNO=" + ldno, "出货信息.txt"); if (!string.IsNullOrEmpty(ldno)) { Util.chNew(ldno, dt.Rows[0]["mechineID"].ToString(), jo["trxid"].ToString(), dt.Rows[0]["payType"].ToString(), dt.Rows[0]["productID"].ToString(), trxamtY.ToString()); } Util.Debuglog("出货指令发送完成mechineID=" + dt.Rows[0]["mechineID"].ToString() + ";productID=" + dt.Rows[0]["productID"].ToString() + ";LDNO=" + ldno, "出货信息.txt"); //支付成功向asm_pay 表 更新记录 if (dt.Rows[0]["payType"].ToString() == "2") { string updateSQL = "update asm_pay_info set chLdNo='" + ldno + "', acct='" + acct + "', paytime='" + paytime + "',statu='1',trxdate='" + trxdate + "',chnltrxid='" + chnltrxid + "' where trxid='" + jo["trxid"].ToString() + "'"; Util.Debuglog("updateSQL=" + updateSQL, "出货信息.txt"); DbHelperSQL.ExecuteSql(updateSQL); } else { string updateSQL = "update asm_pay_info set chLdNo='" + ldno + "', paytime='" + paytime + "',statu='1',trxdate='" + trxdate + "',chnltrxid='" + chnltrxid + "' where trxid='" + jo["trxid"].ToString() + "'"; Util.Debuglog("updateSQL=" + updateSQL, "出货信息.txt"); DbHelperSQL.ExecuteSql(updateSQL); } //需要更新会员的消费信息 此处如果是支付宝扫码的话没法更新 if (!string.IsNullOrEmpty(dt.Rows[0]["unionID"].ToString())) { string update = "update asm_member set sumConsume=sumConsume+" + trxamtY + ",consumeCount=consumeCount+1,LastTime='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',point=point+" + trxamtY + ",mechineID='" + dt.Rows[0]["mechineID"].ToString() + "' where unionID='" + dt.Rows[0]["unionID"].ToString() + "'"; Util.Debuglog("update=" + update, "更新会员余额消费信息.txt"); DbHelperSQL.ExecuteSql(update); } string sqlM = "select * from asm_member where unionID='" + dt.Rows[0]["unionID"].ToString() + "'"; DataTable dtM = DbHelperSQL.Query(sqlM).Tables[0]; string searchSql = "select 1 from asm_firstPayRecord where mechineID=" + dt.Rows[0]["mechineID"].ToString() + " AND memberID='" + dtM.Rows[0]["id"].ToString() + "'"; DataTable searchSqldt = DbHelperSQL.Query(searchSql).Tables[0]; if (searchSqldt.Rows.Count > 0) { } else { string insertsql = "insert into asm_firstPayRecord(mechineID,memberID,firstinfo,firstbuyTime,type) values (" + dt.Rows[0]["mechineID"].ToString() + "," + dtM.Rows[0]["id"].ToString() + ",'" + jo["trxid"].ToString() + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + 2 + "') "; Util.Debuglog("sqlInsert=" + insertsql, "获取预生成订单号.txt"); DbHelperSQL.ExecuteSql(insertsql); } //此处判断如果orderType=3是半价的需要根据dgOrderDetailID修改zt为售卖完成 并且给出售人加余额 if (dt.Rows[0]["orderType"].ToString() == "3" && dt.Rows[0]["dgOrderDetailID"].ToString() != "0" && !string.IsNullOrEmpty(dt.Rows[0]["dgOrderDetailID"].ToString())) { string sqlDetail = "select * from asm_orderlistDetail where id=" + dt.Rows[0]["dgOrderDetailID"].ToString(); DataTable dtDetail = DbHelperSQL.Query(sqlDetail).Tables[0]; if (dtDetail.Rows.Count > 0) { string id = dt.Rows[0]["dgOrderDetailID"].ToString(); string memberID = dtDetail.Rows[0]["memberID"].ToString(); string productID = dt.Rows[0]["productID"].ToString(); string updateSql = "update asm_orderlistDetail set zt=6 where id=" + id; int a = DbHelperSQL.ExecuteSql(updateSql); if (a > 0) { RedisHelper.Remove(dt.Rows[0]["mechineID"].ToString() + "_SellOrderInfo"); //更新余额 string sqlPro = "select * from asm_product where productID=" + productID; DataTable dpro = DbHelperSQL.Query(sqlPro).Tables[0]; string updateMember = "update asm_member set AvailableMoney=AvailableMoney+" + dtDetail.Rows[0]["sellPrice"].ToString() + " where id=" + memberID; DbHelperSQL.ExecuteSql(updateMember); Util.chgMoney(memberID, dtDetail.Rows[0]["sellPrice"].ToString(), "售卖", "出售" + dtDetail.Rows[0]["createTime"].ToString() + "日产品", "5"); } } } //给会员升级 Util.growUpMember(dt.Rows[0]["unionID"].ToString(), ""); if (dtM.Rows.Count > 0) { if (!string.IsNullOrEmpty(dtM.Rows[0]["openID"].ToString())) { string companyID = dtM.Rows[0]["companyID"].ToString(); string openID = dtM.Rows[0]["openID"].ToString(); string sqlp = "select * from asm_product where productID=" + dt.Rows[0]["productID"].ToString(); DataTable dp = DbHelperSQL.Query(sqlp).Tables[0]; string sqlMechine = "select * from asm_mechine where id=" + dt.Rows[0]["mechineID"].ToString(); DataTable dMechine = DbHelperSQL.Query(sqlMechine).Tables[0]; wxHelper wx = new wxHelper(companyID); string data = TemplateMessage.comsume(openID, OperUtil.getMessageID(companyID, "OPENTM401313503"), "亲,你的购买的商品信息如下", "" + dp.Rows[0]["proName"].ToString() + "", trxamtY.ToString(), jo["trxid"].ToString(), dMechine.Rows[0]["mechineName"].ToString(), "“机器已出货,请尽快推开机器左下方推板取出奶品,超过1分钟未取视为丢弃奶品,推板将关闭"); TemplateMessage.SendTemplateMsg(wx.IsExistAccess_Token(companyID), data); } } } } Util.Debuglog("keyif=回调结束", "_聚合支付回调参数.txt"); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { companyID = Request.QueryString["companyID"].ToString(); money = Request.QueryString["money"].ToString(); mechineID = Request.QueryString["mechineID"].ToString(); unionID = Request.QueryString["unionID"].ToString(); productID = Request.QueryString["productID"].ToString(); openID = Request.QueryString["openID"].ToString(); dgOrderDetailID = Request.QueryString["dgOrderDetailID"].ToString(); type = Request.QueryString["type"].ToString(); sftj = Request.QueryString["sftj"].ToString(); string sql1 = "select * from asm_member where unionID='" + unionID + "'"; DataTable d1 = DbHelperSQL.Query(sql1).Tables[0]; if (d1.Rows.Count > 0) { if (!Util.xgCount(productID, d1.Rows[0]["id"].ToString(), mechineID)) { Util.Debuglog("限购" + unionID, "是否限购.txt"); string url13 = "https://wx.bingoseller.com/main/xg.aspx"; //限购不让购买 Response.Write("<script>window.location.href='" + url13 + "';</script>"); return; } Util.Debuglog("memberid = " + d1.Rows[0]["id"].ToString(), "聚合微信支付.txt"); } Util.Debuglog("openID=" + openID + ";productName=" + productName + ";productID=" + productID + ";unionID=" + unionID + ";mechineID=" + mechineID, "聚合微信支付.txt"); this._money.Value = money; //JsApiPay jsApiPayGet = new JsApiPay(this); try { string ldno = Util.getLDNO(mechineID, productID); if (string.IsNullOrEmpty(ldno)) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "未获取到出货料道编号,请重试" + "</span>"); return; } long fen = 0; try { fen = long.Parse((double.Parse(money) * 100).ToString()); //fen = 1; //获取收货地址js函数入口参数 this._openID.Value = openID; string url = "https://wx.bingoseller.com/pay/JHNotify.aspx"; SybWxPayService sybService = new SybWxPayService(companyID); Dictionary <String, String> rsp = sybService.pay(fen, DateTime.Now.ToFileTime().ToString(), "W02", "购买产品", "商品消费", openID, "", url, ""); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "聚合微信支付.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,statu,reqsn,type,payType,trxamt,createTime,acct,unionID,mechineID,productID,companyID,dgOrderDetailID,orderType,sftj) values('" + appid + "','" + cusid + "','" + trxid + "','0','" + reqsn + "',2,1," + double.Parse(money) * 100 + ",'" + DateTime.Now + "','" + openID + "','" + unionID + "'," + mechineID + ",'" + productID + "','" + companyID + "','" + dgOrderDetailID + "','" + type + "','" + sftj + "')"; DbHelperSQL.ExecuteSql(insertSQL); } foreach (var item in rsp) { if (item.Key == "payinfo") { Util.Debuglog("payinfo=" + item.Value, "聚合微信支付.txt"); wxJsApiParam = item.Value; } } } catch { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "金额有误,请重试" + "</span>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { idArr = Request.QueryString["idArr"].ToString(); if (string.IsNullOrEmpty(idArr)) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "参数不全" + "</span>"); return; } this._id.Value = idArr; Util.Debuglog("_id=" + idArr, "联合支付.txt"); //根据idArr循环订单列表 string sql = "select sum(totalMoney) totalMoney from asm_order where id in (" + idArr + ") and fkzt=0"; DataTable ds = DbHelperSQL.Query(sql).Tables[0]; if (ds.Rows.Count > 0) { money = ds.Rows[0]["totalMoney"].ToString(); } JsApiPay jsApiPayGet = new JsApiPay(this); try { if (OperUtil.getCooki("vshop_openID") != "0") { this._companyID.Value = Request.QueryString["companyID"].ToString(); companyID = this._companyID.Value; this._openID.Value = OperUtil.getCooki("vshop_openID"); openID = OperUtil.getCooki("vshop_openID"); } else { string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains("micromessenger")) { Response.Redirect("WXCallback.aspx?companyID=" + OperUtil.getCooki("companyID")); return; } } double fen = 0; try { fen = double.Parse(money) * 100; //获取收货地址js函数入口参数 this._openID.Value = openID; Util.Debuglog("openID=" + openID + ":companyID=" + companyID + "fen=" + fen, "联合支付.txt"); string url = "https://wx.bingoseller.com/pay/OrderNotify.aspx"; SybWxPayService sybService = new SybWxPayService(companyID); Dictionary <String, String> rsp = sybService.pay((int)fen, DateTime.Now.ToFileTime().ToString(), "W02", "会员购物", "订单合并付款", openID, "", url, ""); Util.Debuglog("rsp=" + rsp, "联合支付.txt"); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "联合支付.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); this._trxid.Value = trxid; // //插入预订单信息 string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,acct,statu,reqsn,[type],payType,trxamt) values('" + appid + "','" + cusid + "','" + trxid + "','" + openID + "','0','" + reqsn + "',2,3," + fen + ")"; Util.Debuglog("insertSQL=" + insertSQL, "联合支付.txt"); DbHelperSQL.ExecuteSql(insertSQL); } foreach (var item in rsp) { if (item.Key == "payinfo") { wxJsApiParam = item.Value; Util.Debuglog("wxJsApiParam=" + wxJsApiParam, "联合支付.txt"); } } } catch (Exception ex) { Util.Debuglog("ex错误=" + ex.Message, "微信支付.txt"); Response.Write("<span style='color:#FF0000;font-size:20px'>" + "金额有误,请重试" + "</span>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { openID = Request.QueryString["openID"].ToString(); companyID = Request.QueryString["companyID"].ToString(); money = Request.QueryString["money"].ToString(); dzMoney = Request.QueryString["dzMoney"].ToString(); this._money.Value = money; this._dzMOney.Value = dzMoney; JsApiPay jsApiPayGet = new JsApiPay(this); try { if (OperUtil.getCooki("vshop_openID") != "0") { this._companyID.Value = Request.QueryString["companyID"].ToString(); this._openID.Value = OperUtil.getCooki("vshop_openID"); openID = OperUtil.getCooki("vshop_openID"); } else { string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains("micromessenger")) { Response.Redirect("WXCallback.aspx?companyID=" + OperUtil.getCooki("companyID")); return; } } int fen = 0; try { fen = int.Parse(money) * 100; //获取收货地址js函数入口参数 this._openID.Value = openID; string url = "https://wx.bingoseller.com/pay/Notify.aspx"; SybWxPayService sybService = new SybWxPayService(companyID); Dictionary <String, String> rsp = sybService.pay(fen, DateTime.Now.ToFileTime().ToString(), "W02", "会员充值", "备注", openID, "", url, ""); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "_充值日志.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); //插入预订单信息 为了避免插入失败循环插入5次 for (int i = 0; i < 10; i++) { string sql = "select * from asm_pay_info where trxid='" + trxid + "'"; DataTable ds = DbHelperSQL.Query(sql).Tables[0]; if (ds.Rows.Count <= 0) { string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,acct,statu,reqsn,[type],payType,trxamt,dzMoney) values('" + appid + "','" + cusid + "','" + trxid + "','" + openID + "','0','" + reqsn + "',1,3," + fen + "," + dzMoney + ")"; Util.Debuglog("insertSQL=" + insertSQL, "_充值日志.txt"); DbHelperSQL.ExecuteSql(insertSQL); } else { break; } Thread.Sleep(300); } } foreach (var item in rsp) { if (item.Key == "payinfo") { wxJsApiParam = item.Value; } } } catch { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "金额有误,请重试" + "</span>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //支付信息 this._orderNO.Value = Request.QueryString["orderNO"].ToString(); this._syMoney.Value = Request.QueryString["syMoney"].ToString(); this._need_money.Value = Request.QueryString["need_money"].ToString();//实际花费 this._zq.Value = Request.QueryString["zq"].ToString(); this._productID.Value = Request.QueryString["productID"].ToString(); this._yhfs.Value = Request.QueryString["yhfs"].ToString(); this._mechineID.Value = Request.QueryString["mechineID"].ToString(); string sql = "select * from asm_mechine where id=" + this._mechineID.Value; DataTable dt = DbHelperSQL.Query(sql).Tables[0]; companyID = dt.Rows[0]["companyID"].ToString(); money = this._need_money.Value; string sqlpro = "select * from asm_product where productID=" + this._productID.Value; proname = DbHelperSQL.Query(sqlpro).Tables[0].Rows[0]["proName"].ToString(); JsApiPay jsApiPayGet = new JsApiPay(this); try { if (OperUtil.getCooki("vshop_openID") != "0") { this._companyID.Value = OperUtil.getCooki("companyID"); this._openID.Value = OperUtil.getCooki("vshop_openID"); openID = OperUtil.getCooki("vshop_openID"); } else { string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains("micromessenger")) { Response.Redirect("WXCallback.aspx?companyID=" + OperUtil.getCooki("companyID")); return; } } double fen = 0; try { fen = (double.Parse(money) - double.Parse(this._syMoney.Value)) * 100; //获取收货地址js函数入口参数 this._openID.Value = openID; string url = "https://wx.bingoseller.com/pay/dhpayNotify.aspx"; SybWxPayService sybService = new SybWxPayService(companyID); Dictionary <String, String> rsp = sybService.pay((int)fen, DateTime.Now.ToFileTime().ToString(), "W02", "会员商品兑换", proname, openID, "", url, ""); string json = (new JavaScriptSerializer()).Serialize(rsp); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); this._trxid.Value = trxid; // //插入预订单信息 string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,acct,statu,reqsn,[type],payType,trxamt) values('" + appid + "','" + cusid + "','" + trxid + "','" + openID + "','0','" + reqsn + "',2,3," + fen + ")"; DbHelperSQL.ExecuteSql(insertSQL); } foreach (var item in rsp) { if (item.Key == "payinfo") { wxJsApiParam = item.Value; } } } catch { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "金额有误,请重试" + "</span>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //支付信息 this.mechine_id.Value = Request.QueryString["mechine_id"].ToString(); this.product_id.Value = Request.QueryString["product_id"].ToString(); Util.Debuglog("机器id=" + this.mechine_id.Value + ";产品id=" + this.product_id.Value + ";", "会员下订单.txt"); this._pszq.Value = Request.QueryString["_pszq"].ToString(); Util.Debuglog("配送周期=" + this._pszq.Value, "会员下订单.txt"); this._qsDate.Value = Request.QueryString["_qsDate"].ToString(); Util.Debuglog("起送周期=" + this._qsDate.Value, "会员下订单.txt"); this._zdDate.Value = Request.QueryString["_zdDate"].ToString(); Util.Debuglog("止订周期=" + this._zdDate.Value, "会员下订单.txt"); this._psStr.Value = Request.QueryString["_psStr"].ToString(); Util.Debuglog("配送方式_psStr=" + this._psStr.Value, "会员下订单.txt"); this._psfs.Value = Request.QueryString["_psfs"].ToString(); Util.Debuglog("_psfs=" + this._psfs.Value, "会员下订单.txt"); //this._selDate.Value = Request.QueryString["_selDate"].ToString(); //Util.Debuglog("_selDate=" + this._selDate.Value, "会员下订单.txt"); this._orderNO.Value = Request.QueryString["_orderNO"].ToString(); Util.Debuglog("_orderNO=" + this._orderNO.Value, "会员下订单.txt"); this._createTime.Value = Request.QueryString["_createTime"].ToString(); Util.Debuglog("_createTime=" + this._createTime.Value, "会员下订单.txt"); this._fkzt.Value = Request.QueryString["_fkzt"].ToString(); Util.Debuglog("_fkzt=" + this._fkzt.Value, "会员下订单.txt"); this._totalMoney.Value = Request.QueryString["_totalMoney"].ToString(); Util.Debuglog("_totalMoney=" + this._totalMoney.Value, "会员下订单.txt"); this._yhfs.Value = Request.QueryString["_yhfs"].ToString(); Util.Debuglog("_yhfs=" + this._yhfs.Value, "会员下订单.txt"); string sql = "select * from asm_mechine where id=" + this.mechine_id.Value; DataTable dt = DbHelperSQL.Query(sql).Tables[0]; companyID = dt.Rows[0]["companyID"].ToString(); money = Request.QueryString["money"].ToString(); proname = Request.QueryString["proname"].ToString(); JsApiPay jsApiPayGet = new JsApiPay(this); try { if (OperUtil.getCooki("vshop_openID") != "0") { this._companyID.Value = Request.QueryString["companyID"].ToString(); this._openID.Value = OperUtil.getCooki("vshop_openID"); openID = OperUtil.getCooki("vshop_openID"); } else { string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains("micromessenger")) { Response.Redirect("WXCallback.aspx?companyID=" + OperUtil.getCooki("companyID")); return; } } double fen = 0; try { fen = double.Parse(money) * 100; //获取收货地址js函数入口参数 this._openID.Value = openID; Util.Debuglog("openID=" + openID + ":companyID=" + companyID + "fen=" + fen, "微信支付.txt"); string url = "https://wx.bingoseller.com/pay/OrderNotify.aspx"; SybWxPayService sybService = new SybWxPayService(companyID); Util.Debuglog("111=", "微信支付.txt"); Dictionary <String, String> rsp = sybService.pay((int)fen, DateTime.Now.ToFileTime().ToString(), "W02", "会员购物", proname, openID, "", url, ""); Util.Debuglog("rsp=" + rsp, "微信支付.txt"); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "微信支付.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); string reqsn = jo["reqsn"].ToString(); this._trxid.Value = trxid; //插入预订单信息 string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,acct,statu,reqsn,type,payType,trxamt) values('" + appid + "','" + cusid + "','" + trxid + "','" + openID + "','0','" + reqsn + "',2,3," + fen + ")"; Util.Debuglog("insertSQL=" + insertSQL, "微信支付.txt"); //根据订单编号更新 订单表 在回调方法里添加订单明细记录 string update = "update asm_order set trxID='" + trxid + "' where orderNO='" + this._orderNO.Value + "'"; Util.Debuglog("update11111=" + update, "_11.txt"); DbHelperSQL.ExecuteSql(insertSQL); DbHelperSQL.ExecuteSql(update); } foreach (var item in rsp) { if (item.Key == "payinfo") { wxJsApiParam = item.Value; Util.Debuglog("wxJsApiParam=" + wxJsApiParam, "微信下单支付_.txt"); } } } catch (Exception ex) { Util.Debuglog("ex错误=" + ex.Message, "微信支付.txt"); Response.Write("<span style='color:#FF0000;font-size:20px'>" + "金额有误,请重试" + "</span>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { try { reqsn = Request.QueryString["reqsn"].ToString(); string asm_pay_infosql = "select 1 from asm_pay_info where reqsn='" + reqsn + "' "; DataTable asm_pay_infodt = DbHelperSQL.Query(asm_pay_infosql).Tables[0]; if (asm_pay_infodt.Rows.Count > 0) { return; } string asm_product_picksql = "select * from asm_product_pick where reqsnNo='" + reqsn + "' "; DataTable asm_product_pickdt = DbHelperSQL.Query(asm_product_picksql).Tables[0]; if (asm_product_pickdt.Rows.Count > 0) { companyID = asm_product_pickdt.Rows[0]["companyID"].ToString(); productID = asm_product_pickdt.Rows[0]["productID"].ToString(); mechineID = asm_product_pickdt.Rows[0]["mechineID"].ToString(); dgOrderDetailID = asm_product_pickdt.Rows[0]["dgOrderDetailID"].ToString(); type = asm_product_pickdt.Rows[0]["type"].ToString(); //转售金额固定 } // money = "1"; Util.Debuglog("companyID=" + companyID + ";money=" + money + ";productID=" + productID + ";mechineID=" + mechineID + ";dgOrderDetailID=" + dgOrderDetailID + ";type=" + type, "_聚合支付支付宝.txt"); SybWxPayService sybService = new SybWxPayService(companyID); string url = "https://wx.bingoseller.com/pay/JHNotifyNew.aspx"; string data = ""; string sql = "select *from asm_product where productID=" + productID; DataTable dt = DbHelperSQL.Query(sql).Tables[0]; if (dgOrderDetailID != "0" && !string.IsNullOrEmpty(dgOrderDetailID)) { string sqlDetail = "select * from asm_orderlistDetail where id=" + dgOrderDetailID; DataTable dtDetail = DbHelperSQL.Query(sqlDetail).Tables[0]; if (dtDetail.Rows.Count > 0) { money = dtDetail.Rows[0]["sellPrice"].ToString(); } } else { money = Util.getNewProductPrice(productID, mechineID, "0"); } Dictionary <String, String> rsp = sybService.pay(long.Parse((double.Parse(money) * 100).ToString()), reqsn, "A01", dt.Rows[0]["proName"].ToString(), "商品消费", "", "", url, ""); data = OperUtil.SerializeDictionaryToJsonString(rsp); string json = (new JavaScriptSerializer()).Serialize(rsp); Util.Debuglog("json=" + json, "_聚合支付支付宝.txt"); JObject jo = (JObject)JsonConvert.DeserializeObject(json); if (jo["retcode"].ToString() == "SUCCESS") { string pickupdate = "update asm_product_pick set payStatus=2,sacntype='2',paytype='2',startPayTime='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where reqsnNo='" + reqsn + "' "; Util.Debuglog("sqlInsert=" + pickupdate, "获取预生成订单号.txt"); DbHelperSQL.ExecuteSql(pickupdate); string appid = jo["appid"].ToString(); string cusid = jo["cusid"].ToString(); string trxid = jo["trxid"].ToString(); RedisHelper.SetRedisModel <string>(trxid, trxid, new TimeSpan(0, 2, 0)); string reqsnNew = jo["reqsn"].ToString(); string payinfoUrl = jo["payinfo"].ToString(); Util.Debuglog("payinfoUrl=" + payinfoUrl, "_聚合支付支付宝.txt"); string insertSQL = @"insert into asm_pay_info(appid,cusid,trxid,statu,reqsn,type,payType,trxamt,createTime,mechineID,productID,companyID,dgOrderDetailID,orderType) values('" + appid + "','" + cusid + "','" + trxid + "','0','" + reqsnNew + "',2,2," + double.Parse(money) * 100 + ",'" + DateTime.Now + "','" + mechineID + "','" + productID + "','" + companyID + "','" + dgOrderDetailID + "','" + type + "')"; Util.Debuglog("insertSQL=" + insertSQL, "_聚合支付支付宝.txt"); DbHelperSQL.ExecuteSql(insertSQL); Response.Write("<script>window.location.href='" + payinfoUrl + "';</script>"); // //插入预订单信息 } } catch (Exception ex) { Util.Debuglog("Exception=" + ex.Message, "_聚合支付支付宝.txt"); } } }
public string GenerateOrder(DataRow row) { #region 获取基本参数 string CommunityId = string.Empty; if (row.Table.Columns.Contains("CommunityId")) { CommunityId = row["CommunityId"].ToString(); } string RoomID = string.Empty; if (row.Table.Columns.Contains("RoomID")) { RoomID = row["RoomID"].ToString(); } string CustID = string.Empty; if (row.Table.Columns.Contains("CustID")) { CustID = row["CustID"].ToString(); } if (!row.Table.Columns.Contains("PayChannel") || string.IsNullOrEmpty(row["PayChannel"].ToString())) { return(new ApiResult(false, "参数PayChannel有误").toJson()); } var payChannel = row["PayChannel"].ToString(); var payType = 0; if (payChannel.ToLower() == "allinpay_alipay") { payChannel = "A03"; payType = 1; } else if (payChannel.ToLower() == "allinpay_wechatpay") { payChannel = "W06"; payType = 2; } else { return(new ApiResult(false, "参数PayChannel有误").toJson()); } #endregion var community = PubInfo.GetCommunity(CommunityId); if (community == null) { return(JSONHelper.FromString(false, "未查询到小区信息")); } int CommID = AppGlobal.StrToInt(community.CommID); PubConstant.hmWyglConnectionString = PubInfo.GetConnectionStr(community); // 获取对应支付配置 AllinConfig allinConfig; using (IDbConnection erpConn = new SqlConnection(PubConstant.hmWyglConnectionString)) { dynamic tb_Payment_Config = erpConn.QueryFirstOrDefault <dynamic>("SELECT * FROM Tb_Payment_Config WITH(NOLOCK) WHERE CommID = @CommID", new { CommID }); if (null == tb_Payment_Config) { return(new ApiResult(false, "该项目未开通对应支付方式").toJson()); } try { allinConfig = JsonConvert.DeserializeObject <AllinConfig>(tb_Payment_Config.Config); if (null == allinConfig) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } } catch (Exception) { return(new ApiResult(false, "该项目支付类型对应配置有误").toJson()); } #region 计算金额 if (!row.Table.Columns.Contains("PayData") || string.IsNullOrEmpty(row["PayData"].ToString())) { return(new ApiResult(false, "缺少参数PayData").toJson()); } string PayData = row["PayData"].ToString(); if (!PubInfo.CheckPayData(Global_Fun.BurstConnectionString(CommID, Global_Fun.BURST_TYPE_CHARGE), Convert.ToInt64(CustID), Convert.ToInt64(RoomID), PayData, out decimal Amt, out string errMsg, true, false, !"1940".Equals(Global_Var.LoginCorpID))) { return(new ApiResult(false, errMsg).toJson()); } if (Amt <= 0.00M) { return(new ApiResult(false, "金额必须大于0").toJson()); } #endregion JObject PayDataObj = JObject.Parse(PayData); int Type = (int)PayDataObj["Type"]; #region 查询项目名称和房屋编号,拼接费用备注 string FeesMemo = string.Empty; string RoomSign = string.Empty; if (Type == 1) { FeesMemo = "物业综合费用缴纳"; string CommName = erpConn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = erpConn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } else { FeesMemo = "物业综合费用预存"; string CommName = erpConn.QueryFirstOrDefault <string>("SELECT CommName FROM Tb_HSPR_Community WHERE CommID = @CommID", new { CommID }); if (string.IsNullOrEmpty(CommName)) { CommName = Convert.ToString(CommID); } RoomSign = erpConn.QueryFirstOrDefault <string>("SELECT ISNULL(RoomSign,RoomName) AS RoomSign FROM Tb_HSPR_Room WHERE RoomID = @RoomID", new { RoomID }); if (string.IsNullOrEmpty(RoomSign)) { RoomSign = Convert.ToString(RoomID); } FeesMemo += string.Format("-{0}-{1}", CommName, RoomSign); } #endregion string NoticeId = Guid.NewGuid().ToString(); // 生成订单 if (erpConn.Execute("INSERT INTO Tb_Notice(Id, CommID, RoomID, CustID, PayData, CreateTime) VALUES(@Id, @CommID, @RoomID, @CustID, @PayData, @CreateTime)", new { Id = NoticeId, CommID, RoomID, CustID, PayData, CreateTime = DateTime.Now.ToString() }) <= 0) { return(new ApiResult(false, "创建收款订单失败,请重试").toJson()); } string ChargeMode = "业主APP缴费"; #region 修改收款方式 if (erpConn.QueryFirstOrDefault <int>("SELECT COUNT(1) FROM syscolumns WHERE id=object_id('Tb_Notice') AND name = 'ChargeMode'") > 0) { erpConn.Execute("UPDATE Tb_Notice SET ChargeMode = @ChargeMode WHERE Id = @Id", new { ChargeMode, Id = NoticeId }); } #endregion #region 请求通联微信支付 DateTime dateNow = DateTime.Now; string OrderSN = dateNow.ToString("yyyyMMddHHmmssfff") + Utils.BuildRandomStr(3); #region 获取对应类型的下账地址 string PaymentNotifyUrl = string.Empty; if (Type == 1) { PaymentNotifyUrl = AppGlobal.GetAppSetting("AllinPay_Notify_Url") + "?CommID=" + CommID; } else { PaymentNotifyUrl = AppGlobal.GetAppSetting("AllinPay_Prec_Notify_Url") + "?CommID=" + CommID; } #endregion Dictionary <string, string> param; try { param = SybWxPayService.Pay(Convert.ToInt64(Amt * 100), OrderSN, payChannel, FeesMemo, RoomSign, "", "", PaymentNotifyUrl, "", "", "", "", allinConfig.orgid, allinConfig.appid, allinConfig.custid, allinConfig.appkey, allinConfig.subbranch); if (param == null) { return(new ApiResult(false, "生成支付订单失败,请重试").toJson()); } } #pragma warning disable CS0168 // 声明了变量“ex”,但从未使用过 catch (Exception ex) #pragma warning restore CS0168 // 声明了变量“ex”,但从未使用过 { return(new ApiResult(false, "生成支付订单失败,请重试").toJson()); } #endregion if (erpConn.Execute(@"INSERT INTO Tb_Payment_Order(PayType, OrderSN, NoticeId, Amt, CreateTime) VALUES(@PayType, @OrderSN, @NoticeId, @Amt, @CreateTime)", new { PayType = payType, OrderSN = OrderSN, NoticeId = NoticeId, Amt = Amt, CreateTime = dateNow }) <= 0) { return(new ApiResult(false, "生成支付订单失败,请重试(1003)").toJson()); } return(new ApiResult(true, new { OrderSN = OrderSN, QrCode = param["payinfo"].ToString() }).toJson()); } }