protected void Page_Load(object sender, EventArgs e) { BllPay bllPay = new BllPay(); payConfig = bllPay.GetPayConfig(); }
public void ProcessRequest(HttpContext context) { string scoreStr = context.Request["score"]; decimal score = Convert.ToDecimal(scoreStr); if (score == 0) { apiResp.code = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete; apiResp.msg = "积分不能为0"; bllKeyValueData.ContextResponse(context, apiResp); return; } if (CurrentUserInfo == null) { apiResp.code = (int)BLLJIMP.Enums.APIErrCode.UserIsNotLogin; apiResp.msg = "您还没有登录"; bllKeyValueData.ContextResponse(context, apiResp); return; } BllOrder bllOrder = new BllOrder(); BllPay bllPay = new BllPay(); PayConfig payConfig = bllPay.GetPayConfig(); string rechargeValue = bllKeyValueData.GetDataVaule("Recharge", "100", bllKeyValueData.WebsiteOwner); decimal rechargeFee = Convert.ToDecimal(rechargeValue); decimal totalFee = rechargeFee / 100 * score; string websiteOwner = bllKeyValueData.WebsiteOwner; OrderPay orderPay = new OrderPay(); orderPay.OrderId = bllOrder.GetGUID(TransacType.CommAdd); orderPay.InsertDate = DateTime.Now; orderPay.Status = 0; orderPay.Type = "1"; orderPay.Subject = "积分充值"; orderPay.Total_Fee = totalFee; orderPay.UserId = CurrentUserInfo.UserID; orderPay.WebsiteOwner = websiteOwner; orderPay.Ex1 = scoreStr; var non_str = Payment.WeiXin.CommonUtil.CreateNoncestr();//随机串 Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("appid", payConfig.WXAppId); dic.Add("body", "订单" + orderPay.OrderId); dic.Add("mch_id", payConfig.WXMCH_ID);//商户号 dic.Add("nonce_str", non_str); dic.Add("out_trade_no", orderPay.OrderId); dic.Add("spbill_create_ip", context.Request.UserHostAddress); dic.Add("total_fee", (totalFee * 100).ToString("F0")); dic.Add("notify_url", string.Format("http://{0}/WxPayNotify/DoPayWxNotify.aspx", context.Request.Url.Authority)); dic.Add("trade_type", "NATIVE"); dic.Add("product_id", orderPay.OrderId); string strtemp = Payment.WeiXin.CommonUtil.FormatBizQueryParaMap(dic, false); string sign = Payment.WeiXin.MD5SignUtil.Sign(strtemp, payConfig.WXPartnerKey); dic = (from entry in dic orderby entry.Key ascending select entry).ToDictionary(pair => pair.Key, pair => pair.Value); dic.Add("sign", sign); string postData = Payment.WeiXin.CommonUtil.ArrayToXml(dic); string url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(postData); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = requestBytes.Length; Stream requestStream = req.GetRequestStream(); requestStream.Write(requestBytes, 0, requestBytes.Length); requestStream.Close(); System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8); string backStr = sr.ReadToEnd(); sr.Close(); res.Close(); var result = System.Xml.Linq.XDocument.Parse(backStr); var return_code = result.Element("xml").Element("return_code").Value; if (!return_code.ToUpper().Equals("SUCCESS")) { apiResp.code = (int)BLLJIMP.Enums.APIErrCode.OperateFail; apiResp.msg = "预支付失败"; apiResp.result = new { return_msg = result.Element("xml").Element("return_msg").Value, post_data = postData }; bllKeyValueData.ContextResponse(context, apiResp); return; } var rusult_code = result.Element("xml").Element("result_code").Value; if (return_code.ToUpper().Equals("SUCCESS") && (rusult_code.ToUpper().Equals("SUCCESS"))) { var prepay_id = result.Element("xml").Element("prepay_id").Value; var code_url = result.Element("xml").Element("code_url").Value; orderPay.Trade_No = prepay_id; bllOrder.Add(orderPay); apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsSuccess; apiResp.msg = "预支付完成"; apiResp.status = true; apiResp.result = new { orderId = orderPay.OrderId, prepay_id = prepay_id, code_url = code_url }; } else { apiResp.code = (int)BLLJIMP.Enums.APIErrCode.OperateFail; apiResp.result = result.Element("xml").Element("err_code_des").Value; apiResp.msg = "预支付失败"; } bllKeyValueData.ContextResponse(context, apiResp); }
protected void Page_Load(object sender, EventArgs e) { try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Request.InputStream); try { xmlDoc.Save(string.Format("C:\\WXPay\\Notify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff"))); } catch (Exception) { } //全部参数 Dictionary <string, string> parametersAll = new Dictionary <string, string>(); foreach (XmlElement item in xmlDoc.DocumentElement.ChildNodes) { string key = item.Name; string value = item.InnerText; if ((!string.IsNullOrEmpty(key)) && (!string.IsNullOrEmpty(value))) { parametersAll.Add(key, value); } } parametersAll = (from entry in parametersAll orderby entry.Key ascending select entry).ToDictionary(pair => pair.Key, pair => pair.Value);//全部参数排序 BllOrder bllOrder = new BllOrder(); BLLJIMP.Model.OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"], "", bllOrder.WebsiteOwner); BllPay bllPay = new BllPay(); PayConfig payConfig = bllPay.GetPayConfig(); if (bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))//验证签名 { if (orderPay == null) { Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); return; } if (orderPay.Status == 1) { Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"); return; } orderPay.Status = 1; if (bllOrder.Update(orderPay)) { BLLUser bllUser = new BLLUser(); if (orderPay.Type == "1") { int score = 0; int.TryParse(orderPay.Ex1, out score); BLLKeyValueData bllKeyValueData = new BLLKeyValueData(); string ScoreDispalyName = bllKeyValueData.GetDataVaule("ScoreDispalyName", "1", bllKeyValueData.WebsiteOwner); string msg = "消费" + orderPay.Total_Fee + "元,充值" + score + ScoreDispalyName; if (bllUser.AddUserScoreDetail(orderPay.UserId, EnumStringHelper.ToString(ScoreDefineType.Recharge), bllUser.WebsiteOwner, score, msg)) { Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"); } else { Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); } //BLLSystemNotice bllSystemNotice = new BLLSystemNotice(); //bllSystemNotice.SendNotice(BLLSystemNotice.NoticeType.SystemMessage, null, null, orderPay.UserId, msg); } else if (orderPay.Type == "2") { string invoiceMsg; if (orderPay.Ex1 == "1") { invoiceMsg = "带发票,"; } else { invoiceMsg = "无发票,"; } string msg = "充值VIP," + invoiceMsg + "消费" + orderPay.Total_Fee.ToString() + "元"; BLLKeyValueData bllKeyValueData = new BLLKeyValueData(); string VIPDatelong = bllKeyValueData.GetDataVaule("VIPDatelong", "1", bllKeyValueData.WebsiteOwner); if (string.IsNullOrWhiteSpace(VIPDatelong)) { VIPDatelong = "12"; } int datelong = Convert.ToInt32(VIPDatelong); BLLUserExpand bllUserExpand = new BLLUserExpand(); UserExpand userVip = bllUserExpand.GetUserExpand(BLLJIMP.Enums.UserExpandType.UserIsVip, orderPay.UserId); string userVipEndDate; if (userVip == null || DateTime.Parse(userVip.DataValue) < DateTime.Now) { userVipEndDate = DateTime.Now.AddMonths(datelong).ToString("yyyy-MM-dd"); } else { userVipEndDate = DateTime.Parse(userVip.DataValue).AddMonths(datelong).ToString("yyyy-MM-dd"); } bllUserExpand.UpdateUserExpand(BLLJIMP.Enums.UserExpandType.UserIsVip, orderPay.UserId, userVipEndDate); //更新用户字段 UserScoreDetailsInfo scoreModel = new UserScoreDetailsInfo(); scoreModel.AddNote = msg; scoreModel.AddTime = DateTime.Now; scoreModel.Score = 0; scoreModel.UserID = orderPay.UserId; scoreModel.ScoreType = "RechargeVIP"; UserInfo currUser = bllUser.GetUserInfo(orderPay.UserId); scoreModel.TotalScore = currUser.TotalScore; scoreModel.WebSiteOwner = currUser.WebsiteOwner; if (bllUser.Add(scoreModel)) { BLLSystemNotice bllSystemNotice = new BLLSystemNotice(); bllSystemNotice.SendNotice(BLLSystemNotice.NoticeType.SystemMessage, null, null, orderPay.UserId, msg); Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"); } else { Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); } } return; } else { Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); return; } } Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); } catch (Exception) { Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); } }
public void ProcessRequest(HttpContext context) { BLLJIMP.BLLDistributionOffLine bll = new BLLJIMP.BLLDistributionOffLine(); BllPay bllPay = new BllPay(); BLLWeixin bllWeixin = new BLLWeixin(); string ids = context.Request["ids"]; string moduleName = "积分"; if (!string.IsNullOrWhiteSpace(context.Request["module_name"])) { moduleName = context.Request["module_name"]; } int total = 0; if (string.IsNullOrWhiteSpace(ids)) { apiResp.msg = "请选中申请"; apiResp.code = (int)APIErrCode.IsNotFound; bll.ContextResponse(context, apiResp); return; } var sourceList = bll.QueryWithdrawCashList(1, int.MaxValue, null, out total, "0", context.Request["type"], ids); if (sourceList.Count == 0) { apiResp.msg = "选中的申请无待审核申请"; apiResp.code = (int)APIErrCode.IsNotFound; bll.ContextResponse(context, apiResp); return; } string websiteOwner = bll.WebsiteOwner; string ip = System.Web.HttpContext.Current.Request.UserHostAddress; int snum = 0; foreach (var p in sourceList) { UserInfo pu = bllUser.GetUserInfo(p.UserId, websiteOwner); if (pu == null || string.IsNullOrWhiteSpace(pu.WXOpenId)) { apiResp.status = snum > 0; apiResp.msg = string.Format("编号:{0},审核出错,用户信息有误", p.AutoID); apiResp.code = (int)APIErrCode.OperateFail; bll.ContextResponse(context, apiResp); return; } //通知 BLLJIMP.Model.SystemNotice notice = new BLLJIMP.Model.SystemNotice(); notice.Ncontent = string.Format("申请提现通过审核,编号:{0}", p.AutoID); notice.UserId = currentUserInfo.UserID; notice.Receivers = pu.UserID; notice.SendType = 2; notice.Title = "申请提现通过审核"; notice.NoticeType = 1; notice.WebsiteOwner = websiteOwner; notice.InsertTime = DateTime.Now; BLLTransaction tran = new BLLTransaction(); bool result = bll.Update(p, string.Format("Status=2,LastUpdateDate=getdate()"), string.Format("AutoID={0}", p.AutoID), tran) > 0; if (!result) { tran.Rollback(); apiResp.status = snum > 0; apiResp.msg = string.Format("编号:{0},审核出错", p.AutoID); apiResp.code = snum > 0 ? (int)APIErrCode.IsSuccess : (int)APIErrCode.OperateFail; bll.ContextResponse(context, apiResp); return; } string msg = ""; if (bllPay.WeixinTransfers(p.AutoID.ToString(), p.RealAmount, pu.WXOpenId, ip, out msg, "提现")) { //发送微信模板消息 bllWeixin.SendTemplateMessageNotifyComm(pu, "您提现的佣金已经到账", string.Format("提现金额:{0}元。请查看微信钱包", p.RealAmount)); //发送微信模板消息 //发送通知 notice.SerialNum = bllUser.GetGUID(TransacType.SendSystemNotice); bll.Add(notice); //发送通知 } else//打款失败 { tran.Rollback(); apiResp.status = snum > 0; apiResp.msg = string.Format("编号:{0},微信打款出错 : {1}", p.AutoID, msg); apiResp.code = snum > 0 ? (int)APIErrCode.IsSuccess : (int)APIErrCode.OperateFail; bll.ContextResponse(context, apiResp); return; } tran.Commit(); snum++; } if (snum == 0) { apiResp.code = (int)APIErrCode.OperateFail; apiResp.msg = "审核失败"; } else { apiResp.status = true; apiResp.code = (int)APIErrCode.IsSuccess; apiResp.msg = string.Format("审核完成"); } bll.ContextResponse(context, apiResp); }