protected void Save_B_Click(object sender, EventArgs e) { M_PayPlat wxpay = B_PayPlat.GetModelForWx(); if (wxpay == null) { wxpay = new M_PayPlat(); } wxpay.PayPlatName = "微信支付"; wxpay.payType = AppID_T.Text; wxpay.PayPlatinfo = Secret_T.Text; wxpay.AccountID = MchID_T.Text; wxpay.PayClass = 21; wxpay.MD5Key = Key_T.Text; if (wxpay.PayPlatID == 0) { bll.insert(wxpay); } else { bll.UpdateByID(wxpay); } WxPayConfig.UpdateByMod(wxpay); function.WriteSuccessMsg("保存成功!"); }
public void WechatPlat_Submit(M_PayPlat model) { M_PayPlat info = B_PayPlat.GetModelForWx(); info.APPID = model.APPID; info.Secret = model.Secret; info.AccountID = model.AccountID; info.MD5Key = model.MD5Key; platBll.UpdateByID(info); WriteOK("操作成功", "WechatPlat"); }
public void MyBind() { M_PayPlat wxpay = B_PayPlat.GetModelForWx(); if (wxpay != null) { AppID_T.Text = wxpay.payType; //appid Secret_T.Text = wxpay.PayPlatinfo; //Secret MchID_T.Text = wxpay.AccountID; Key_T.Text = wxpay.MD5Key; // Cert_T.Text = wxpay.SellerEmail;//证书路径 //CertPWD_T.Text = wxpay.leadtoGroup;//证书密码 } }
//=======【基本信息设置】===================================== /* 微信公众号信息配置 * APPID:绑定支付的APPID(必须配置) * MCHID:商户号(必须配置) * KEY:商户支付密钥,参考开户邮件设置(必须配置) * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置) */ static WxPayConfig() { UpdateByMod(B_PayPlat.GetModelForWx()); }
protected void Page_Load(object sender, EventArgs e) { Call.SetBreadCrumb(Master, "<li>商城管理</li><li>店铺订单</li><li>订单详情</li>"); B_PayPlat paybll = new B_PayPlat(); DataTable pay = paybll.GetPayPlatByClassid(1); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的//////////////////////////// ZoomLa.Model.M_Alipay_config con = new ZoomLa.Model.M_Alipay_config(); string input_charset = con.Input_charset; string sign_type = con.Sign_type; ///////////////////////请求参数///////////////////////////////////////////////////////////////////// //--------------必填参数-------------- //支付宝交易号。它是登录支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:20100419XXXXXXXXXX) string trade_no = Request.QueryString["trade_no"]; //物流公司名称 string logistics_name = Request.QueryString["logistics_name"]; //物流发货单号 string invoice_no = Request.QueryString["invoice_no"]; //物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS) string transport_type = Request.QueryString["transport_type"]; int id = Convert.ToInt32(Request.QueryString["id"] + ""); String Email = Request.QueryString["email"]; //卖家本地电脑IP地址 string seller_ip = ""; //构造请求函数 B_Alipay_shipments_service aliService = new B_Alipay_shipments_service( pay.Rows[0]["AccountID"].ToString(), trade_no, logistics_name, invoice_no, transport_type, seller_ip, pay.Rows[0]["MD5Key"].ToString(), input_charset, sign_type); /***********************含XML远程解析***********************/ //注意:远程解析XML出错,与IIS服务器配置有关 string url = aliService.Create_url(); XmlTextReader Reader = new XmlTextReader(url); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Reader); //解析XML,获取XML返回的数据,如:请求处理是否成功、商家网站唯一订单号、支付宝交易号、发货时间等 string nodeIs_success = xmlDoc.SelectSingleNode("/alipay/is_success").InnerText; string nodeOut_trade_no = ""; string nodeTrade_no = ""; string nodeTrade_status = ""; string nodeLast_modified_time = ""; string nodeError = ""; if (nodeIs_success == "T") { nodeOut_trade_no = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/out_trade_no").InnerText; nodeTrade_no = xmlDoc.SelectSingleNode("/alipay/request").ChildNodes[2].InnerText; nodeTrade_status = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/trade_status").InnerText; nodeLast_modified_time = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/last_modified_time").InnerText; fahuo(id, Email); } else { nodeError = xmlDoc.SelectSingleNode("/alipay/error").InnerText; } //打印页面 StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<table boder='2' class=border width=350 cellpadding=5 cellspacing=0>"); sbHtml.Append("<tr><td align=center colspan=2>发货结果</td></tr>"); String successInfo = nodeIs_success == "T" ? "成功" : "失败"; sbHtml.Append("<tr><td align=right>请求处理是否成功:</td><td = align=left>" + successInfo + "</td></tr>"); if (nodeIs_success == "T") { sbHtml.Append("<tr><td align=right>商户网站订单号:</td><td class=font_content align=left>" + nodeOut_trade_no + "</td></tr>"); sbHtml.Append("<tr><td align=right>交易状态:</td><td = align=left>" + nodeTrade_status + "</td></tr>"); sbHtml.Append("<tr><td align=right>发货时间等:</td><td = align=left>" + nodeLast_modified_time + "</td></tr>"); } else { String errorInfo = String.Empty; switch (nodeError) { case "ILLEGAL_ARGUMENT": errorInfo = @"参数不正确:<br> 1)、承运公司名称(logistics_name)长度1到64,承运单号码(invoice_no)长度1到32。<br> 2)、IP不正确。<br> 3)、货运方式(transport_type),交易创建时的货运方式(create_transport_type)错误。<br> 4)、交易号(trade_no)不能为空<br>。 5)、物流名称(logistics_name)错误。"; break; case "TRADE_NOT_EXIST": errorInfo = @"外部交易不存在:<br> 1)、交易号不正确。<br> 2)、非平台商的交易。"; break; case "GENERIC_FAILURE": errorInfo = "执行命令错误"; break; default: errorInfo = "未知错误"; break; } sbHtml.Append("<tr><td align=right valign=top>错误:</td><td align=left>" + errorInfo + "</td></tr>"); } sbHtml.Append("</table>"); LblXml.Text = sbHtml.ToString(); //////////////////////////////////////////////////////////////////////////////////////////////////// //请在此处编写商户发货成功后的业务逻辑程序代码,以便把商户网站里的该笔订单与支付宝的订单信息同步。 /////////////////////////////////////////////////////////////////////////////////////////////////// }
public IActionResult WechatPlat() { M_PayPlat model = B_PayPlat.GetModelForWx(); return(View(model)); }
/// <summary> /// 异步回调后-->验证支付单状态-->如果正常,更新订单状态 /// 多张订单在外层循环,这里只处理单订单 /// </summary> /// <param name="mod">订单模型</param> /// <param name="paylogMod">订单支付日志模型</param> public static void FinalStep(M_Payment pinfo, M_OrderList mod, M_Order_PayLog paylogMod) { //B_Order_PayLog paylogBll = new B_Order_PayLog(); B_PayPlat platBll = new B_PayPlat(); B_Payment payBll = new B_Payment(); B_User buser = new B_User(); //[*]特殊处理,预付与尾款逻辑 { #region if (pinfo.PayType == (int)M_OrderList.PayTypeEnum.PrePay) { M_PrePayinfo preInfo = new M_PrePayinfo(pinfo.PrePayInfo); preInfo.money_pre_payed = pinfo.MoneyTrue; preInfo.pre_payno = pinfo.PayNo; preInfo.pre_payMethod = platBll.GetPayPlatName(pinfo); pinfo.PrePayInfo = JsonConvert.SerializeObject(preInfo); DBCenter.UpdateSQL(pinfo.TbName, "PrePayInfo=@preInfo", "PayMentID=" + pinfo.PaymentID, new List <SqlParameter>() { new SqlParameter("preInfo", pinfo.PrePayInfo) }); } else if (pinfo.PayType == (int)M_OrderList.PayTypeEnum.AfterPay) { try { M_OrderList realOrder = orderBll.SelModelByOrderNo(mod.Ordermessage); M_Payment preMod = payBll.SelModelByPayNo(realOrder.PaymentNo); //修改订单与支付单信息 M_PrePayinfo preInfo = new M_PrePayinfo(preMod.PrePayInfo); preInfo.money_after_payed = pinfo.MoneyTrue; preInfo.status = (int)ZLEnum.ConStatus.Audited; preInfo.after_payno = pinfo.PayNo; preInfo.after_payMethod = platBll.GetPayPlatName(pinfo); //修改二张订单与二张支付单的状态 realOrder.IsCount = true; realOrder.Ordersamount += pinfo.MoneyTrue; realOrder.Receivablesamount += pinfo.MoneyTrue; orderBll.UpdateByID(realOrder); mod.OrderStatus = 99; mod.Paymentstatus = 1; mod.PaymentNo = pinfo.PayNo; orderBll.UpdateByID(mod); DBCenter.UpdateSQL(preMod.TbName, "PrePayInfo=@preInfo", "PayMentID=" + preMod.PaymentID, new List <SqlParameter>() { new SqlParameter("preInfo", JsonConvert.SerializeObject(preInfo)) }); return; } catch (Exception ex) { ZLLog.L(Model.ZLEnum.Log.pay, new M_Log() { Action = "支付尾款异常", Message = "订单号:" + mod.OrderNo + ",支付单:" + pinfo.PayNo + ",原因:" + ex.Message }); return; } } #endregion } //订单已处理,避免重复(如已处理过,则继续处理下一张订单) if (mod.OrderStatus >= 99) { ZLLog.L(Model.ZLEnum.Log.pay, new M_Log() { Action = "支付回调异常,订单状态已为99", Message = "订单号:" + mod.OrderNo + ",支付单:" + pinfo.PayNo }); return; } //已经收到钱了,所以先执行(如多订单,则为订单金额) if (mod.Receivablesamount <= 0) { //DD201701112113293112618,DD201701112113293754790 int orderNum = pinfo.PaymentNum.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Length; if (orderNum == 1) { mod.Receivablesamount = pinfo.MoneyTrue; } else { //订单需要改进,支持优惠后的金额等,不能只以支付单中的为准,每张订单需要计算出自己的优惠额与积分支付额 mod.Receivablesamount = mod.Ordersamount; } } orderBll.UpOrderinfo("Paymentstatus=1,Receivablesamount=" + mod.Receivablesamount, mod.id); //if (mod.Ordertype == (int)M_OrderList.OrderEnum.Domain)//域名订单 //{ // orderBll.UpOrderinfo("OrderStatus=1,PaymentNo='" + pinfo.PayNo + "'", mod.id); // //Response.Redirect("~/Plugins/Domain/DomReg2?OrderNo=" + mod.OrderNo); //} //else if (mod.Ordertype == (int)M_OrderList.OrderEnum.IDC)//IDC服务 //{ // B_Order_IDC idcBll = new B_Order_IDC(); // orderBll.FinishOrder(mod.id, pinfo); // idcBll.UpdateEndTimeByNo(mod.OrderNo); //} //else if ((mod.Ordertype == (int)M_OrderList.OrderEnum.IDCRen))//IDC服务续费 //{ // B_Order_IDC idcBll = new B_Order_IDC(); // orderBll.FinishOrder(mod.id, pinfo); // idcBll.RennewTime(mod); //} if (mod.Ordertype == (int)M_OrderList.OrderEnum.Purse)//余额充值,不支持银币 { buser.AddMoney(mod.Userid, mod.Ordersamount, M_UserExpHis.SType.Purse, "余额充值,订单号:" + mod.OrderNo); //检测是否采用了充值赠送规则 if (DataConvert.CLng(mod.Money_code) > 0) { B_Shop_MoneyRegular regBll = new B_Shop_MoneyRegular(); M_Shop_MoneyRegular regMod = regBll.SelReturnModel(DataConvert.CLng(mod.Money_code)); if (regMod.Purse > 0) { buser.AddMoney(mod.Userid, regMod.Purse, M_UserExpHis.SType.Purse, "余额充值--余额赠送,订单号:" + mod.OrderNo); } if (regMod.Sicon > 0) { buser.AddMoney(mod.Userid, regMod.Sicon, M_UserExpHis.SType.SIcon, "余额充值--银币赠送,订单号:" + mod.OrderNo); } if (regMod.Point > 0) { buser.AddMoney(mod.Userid, regMod.Point, M_UserExpHis.SType.Point, "余额充值--积分赠送,订单号:" + mod.OrderNo); } } orderBll.FinishOrder(mod.id, pinfo); //成功的订单 } else if (mod.Ordertype == (int)M_OrderList.OrderEnum.Cloud) //虚拟商品订单 { orderBll.FinishOrder(mod.id, pinfo); } else//其他旅游订单等,只更新状态 { orderBll.FinishOrder(mod.id, pinfo);//成功的订单 } //-------支付成功处理,快照并写入日志 SaveSnapShot(mod); //paylogMod.Remind += "订单" + mod.OrderNo + "购买生效"; //paylogMod.UserID = mod.Userid; //paylogMod.OrderID = mod.id; //paylogMod.PayMoney = mod.Ordersamount; //paylogMod.PayMethod = (int)M_Order_PayLog.PayMethodEnum.Other;//外部指定 //paylogMod.PayPlatID = pinfo.PayPlatID; //paylogBll.insert(paylogMod); //------商品是否赠送积分 //{//好酒多积分不直接入账 // DataTable prodt = DBCenter.JoinQuery("A.ProID,A.Pronum,B.PointVal", "ZL_CartPro", "ZL_Commodities", "A.ProID=B.ID", "A.OrderListID=" + mod.id); // foreach (DataRow dr in prodt.Rows) // { // double point = DataConvert.CDouble(dr["PointVal"])*Convert.ToInt32(dr["Pronum"]); // if (point > 0) // { // buser.AddMoney(mod.Userid, point, M_UserExpHis.SType.Point, "购买商品[" + dr["ProID"] + "],赠送积分"); // } // } //} if (OrderFinish_Event != null) { OrderFinish_Event(mod, pinfo); } }