Пример #1
0
        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("保存成功!");
        }
Пример #2
0
        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");
        }
Пример #3
0
        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;//证书密码
            }
        }
Пример #4
0
        //=======【基本信息设置】=====================================

        /* 微信公众号信息配置
         * APPID:绑定支付的APPID(必须配置)
         * MCHID:商户号(必须配置)
         * KEY:商户支付密钥,参考开户邮件设置(必须配置)
         * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
         */
        static WxPayConfig()
        {
            UpdateByMod(B_PayPlat.GetModelForWx());
        }
Пример #5
0
        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();

            ////////////////////////////////////////////////////////////////////////////////////////////////////
            //请在此处编写商户发货成功后的业务逻辑程序代码,以便把商户网站里的该笔订单与支付宝的订单信息同步。

            ///////////////////////////////////////////////////////////////////////////////////////////////////
        }
Пример #6
0
        public IActionResult WechatPlat()
        {
            M_PayPlat model = B_PayPlat.GetModelForWx();

            return(View(model));
        }
Пример #7
0
 /// <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);
     }
 }