Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
                    string  trade_no     = Request.QueryString["trade_no"];                  //支付宝交易号
                    int     order_no     = Int32.Parse(Request.QueryString["out_trade_no"]); //获取订单号
                    decimal total_fee    = decimal.Parse(Request.QueryString["total_fee"]);  //获取总金额
                    string  subject      = Request.QueryString["subject"];                   //商品名称、订单名称
                    string  body         = Request.QueryString["body"];                      //商品描述、订单备注、描述
                    string  buyer_email  = Request.QueryString["buyer_email"];               //买家支付宝账号
                    string  trade_status = Request.QueryString["trade_status"];              //交易状态

                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, order_no, total_fee, trade_status);

                        //对分销充值订单支付返回,对绑定订单进行处理确认
                        var handdata = OrderJsonData.agentorderpay_Hand(order_no);

                        diveticketcode.InnerText = ("您已成功支付" + total_fee.ToString() + "元!");
                    }
                    else
                    {
                        diveticketcode.InnerText = ("支付返回错误:" + Request.QueryString["trade_status"]);
                    }
                }
                else
                {
                    //支付宝验证失败,应该是微信支付返回成功
                    int     out_trade_no = Request["out_trade_no"].ConvertTo <int>(0);
                    B2b_pay wxpay        = new B2bPayData().GetSUCCESSPayById(out_trade_no);
                    if (wxpay != null)
                    {
                        diveticketcode.InnerText = ("您已成功支付" + wxpay.Total_fee + "元!");
                    }
                }
            }
            else
            {
                diveticketcode.InnerText = ("无返回参数");
            }
        }
Exemplo n.º 2
0
        public static string shougongqueren(string trade_no, int order_no, decimal total_fee)
        {
            try
            {
                B2bFinanceData fdate = new B2bFinanceData();
                var            list  = fdate.huoqupayorder(order_no, total_fee);
                if (list == 0)
                {
                    return(JsonConvert.SerializeObject(new { type = 1, totalCount = 0, msg = "没有此订单" }));
                }
                else
                {
                    string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, order_no, total_fee, "TRADE_SUCCESS");

                    return(JsonConvert.SerializeObject(new { type = 100, msg = retunstr }));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new { type = 1, totalCount = 0, msg = ex.Message }));

                throw;
            }
        }
Exemplo n.º 3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Dictionary <string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify    = new Notify();
            bool   verifyResult = aliNotify.VerifyNotify(sPara, Request.Form["sign"]);



            if (verifyResult)//验证成功
            {
                //XML解析notify_data数据
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(sPara["notify_data"]);
                    //商户订单号
                    string order_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText;
                    //支付宝交易号
                    string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText;
                    //交易状态
                    string  trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText;
                    decimal total_fee    = decimal.Parse(xmlDoc.SelectSingleNode("/notify/total_fee").InnerText);

                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                        //B2bPayData datapay = new B2bPayData();
                        //B2b_pay modelb2pay = datapay.GetPayByoId(Int32.Parse(order_no));
                        //if (modelb2pay != null)
                        //{
                        //    total_fee = modelb2pay.Total_fee;
                        //}

                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, Int32.Parse(order_no), total_fee, trade_status);

                        Response.Write("success");  //请不要修改或删除

                        #region 赠送保险
                        OrderJsonData.ZengsongBaoxian(Int32.Parse(order_no));
                        #endregion
                    }
                    else
                    {
                        Response.Write(trade_status);
                    }
                }
                catch (Exception exc)
                {
                    Response.Write(exc.ToString());
                }



                //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                Response.Write("fail");
            }
        }
        else
        {
            Response.Write("无通知参数");
        }
    }
Exemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //获取访问的商户COMID
            if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
            {
                comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl));
            }
            else
            {
                B2b_company_info companyinfo = B2bCompanyData.GetComId(RequestUrl);
                if (companyinfo != null)
                {
                    comid = companyinfo.Com_id;
                }
            }
            #region 获得财付通支付参数 tenpay_id,tenpay_key
            //根据产品判断商家是否含有自己的财付通支付:
            //a.含有的话支付到商家;
            //b.没有的话支付到平台财付通账户(易城账户,公司id=106)
            string tenpay_id          = "";
            string tenpay_key         = "";
            B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(comid);
            if (model != null)
            {
                //商家财付通支付的所有参数都存在
                if (model.Tenpay_id != "" && model.Tenpay_key != "")
                {
                    tenpay_id  = model.Tenpay_id;
                    tenpay_key = model.Tenpay_key;
                }
                else
                {
                    model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                    if (model == null)
                    {
                        Response.Write("商户财付通信息设置不完全!");
                        Response.End();
                        return;
                    }
                    else
                    {
                        //商家财付通支付的所有参数都存在
                        if (model.Tenpay_id != "" && model.Tenpay_key != "")
                        {
                            tenpay_id  = model.Tenpay_id;
                            tenpay_key = model.Tenpay_key;
                        }
                        else
                        {
                            Response.Write("商户财付通信息设置不完全!!");
                            Response.End();
                            return;
                        }
                    }
                }
            }
            else
            {
                model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                if (model == null)
                {
                    Response.Write("商户财付通信息设置不完全!");
                    Response.End();
                    return;
                }
                else
                {
                    //商家财付通支付的所有参数都存在
                    if (model.Tenpay_id != "" && model.Tenpay_key != "")
                    {
                        tenpay_id  = model.Tenpay_id;
                        tenpay_key = model.Tenpay_key;
                    }
                    else
                    {
                        Response.Write("商户财付通信息设置不完全!!");
                        Response.End();
                        return;
                    }
                }
            }

            #endregion


            //创建ResponseHandler实例
            ResponseHandler resHandler = new ResponseHandler(Context);
            resHandler.setKey(tenpay_key);

            //判断签名
            if (resHandler.isTenpaySign())
            {
                ///通知id
                string notify_id = resHandler.getParameter("notify_id");
                //通过通知ID查询,确保通知来至财付通
                //创建查询请求
                RequestHandler queryReq = new RequestHandler(Context);
                queryReq.init();
                queryReq.setKey(tenpay_key);
                queryReq.setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
                queryReq.setParameter("partner", tenpay_id);
                queryReq.setParameter("notify_id", notify_id);

                //通信对象
                TenpayHttpClient httpClient = new TenpayHttpClient();
                httpClient.setTimeOut(5);
                //设置请求内容
                httpClient.setReqContent(queryReq.getRequestURL());
                //后台调用
                if (httpClient.call())
                {
                    //设置结果参数
                    ClientResponseHandler queryRes = new ClientResponseHandler();
                    queryRes.setContent(httpClient.getResContent());
                    queryRes.setKey(tenpay_key);
                    //判断签名及结果
                    //只有签名正确,retcode为0,trade_state为0才是支付成功
                    if (queryRes.isTenpaySign())
                    {
                        //取结果参数做业务处理
                        string out_trade_no = queryRes.getParameter("out_trade_no");
                        //财付通订单号
                        string transaction_id = queryRes.getParameter("transaction_id");
                        //金额,以分为单位
                        string total_fee = queryRes.getParameter("total_fee");
                        //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                        string discount = queryRes.getParameter("discount");
                        //支付结果
                        string trade_state = resHandler.getParameter("trade_state");
                        //交易模式,1即时到帐 2中介担保
                        string trade_mode = resHandler.getParameter("trade_mode");
                        #region
                        //判断签名及结果
                        if ("0".Equals(queryRes.getParameter("retcode")))
                        {
                            //Response.Write("id验证成功");

                            if ("1".Equals(trade_mode))
                            {       //即时到账
                                if ("0".Equals(trade_state))
                                {
                                    //------------------------------
                                    //即时到账处理业务开始
                                    //------------------------------

                                    //处理数据库逻辑
                                    //注意交易单不要重复处理
                                    //注意判断返回金额

                                    //------------------------------
                                    //即时到账处理业务完毕
                                    //------------------------------
                                    string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(notify_id, Int32.Parse(out_trade_no), total_fee.ConvertTo <decimal>(), "TRADE_SUCCESS");

                                    //对分销充值订单支付返回,对绑定订单进行处理确认
                                    var handdata = OrderJsonData.agentorderpay_Hand(Int32.Parse(out_trade_no));


                                    //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                                    Response.Write("success");
                                }
                                else
                                {
                                    Response.Write("即时到账支付失败");
                                }
                            }
                            else if ("2".Equals(trade_mode))
                            { //中介担保
                              //------------------------------
                              //中介担保处理业务开始
                              //------------------------------
                              //处理数据库逻辑
                              //注意交易单不要重复处理
                              //注意判断返回金额

                                int iStatus = Convert.ToInt32(trade_state);
                                switch (iStatus)
                                {
                                case 0:                 //付款成功

                                    break;

                                case 1:                 //交易创建

                                    break;

                                case 2:                 //收获地址填写完毕

                                    break;

                                case 4:                 //卖家发货成功

                                    break;

                                case 5:                 //买家收货确认,交易成功

                                    break;

                                case 6:                 //交易关闭,未完成超时关闭

                                    break;

                                case 7:                 //修改交易价格成功

                                    break;

                                case 8:                 //买家发起退款

                                    break;

                                case 9:                 //退款成功

                                    break;

                                case 10:        //退款关闭

                                    break;
                                }


                                //------------------------------
                                //中介担保处理业务开始
                                //------------------------------


                                //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                                Response.Write("success");
                            }
                        }
                        else
                        {
                            //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                            //通知财付通处理失败,需要重新通知
                            Response.Write("查询验证签名失败或id验证失败");
                            Response.Write("retcode:" + queryRes.getParameter("retcode"));
                        }
                        #endregion
                    }
                    else
                    {
                        Response.Write("通知ID查询签名验证失败");
                    }
                }
                else
                {
                    //通知财付通处理失败,需要重新通知
                    Response.Write("后台调用通信失败");
                    //写错误日志
                    Response.Write("call err:" + httpClient.getErrInfo() + "<br>" + httpClient.getResponseCode() + "<br>");
                }
            }
            else
            {
                Response.Write("签名验证失败");
            }
            Response.End();
        }
Exemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            ResponseHandler resHandler = new ResponseHandler(Context);

            resHandler.init();

            string RequestUrl = Request.ServerVariables["SERVER_NAME"].ToLower();

            string u = Request.ServerVariables["HTTP_USER_AGENT"];

            //bool bo = detectmobilebrowser.HttpUserAgent(u);//判断是否是手机访问
            //if (bo)
            //{
            if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式
            {
                //先通过正则表达式获取COMid
                int comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl).ToString());
                B2b_finance_paytype modelfinance = new B2b_finance_paytypeData().GetFinancePayTypeByComid(comid);
                resHandler.setKey(modelfinance.Wx_partnerkey, modelfinance.Wx_paysignkey);
            }
            else
            {
                Response.Write("获取商家支付参数失败");
                return;
            }
            //}



            //判断签名
            if (resHandler.isTenpaySign())
            {
                if (resHandler.isWXsign())
                {
                    //商户在收到后台通知后根据通知ID向财付通发起验证确认,采用后台系统调用交互模式
                    string notify_id = resHandler.getParameter("notify_id");
                    //取结果参数做业务处理
                    string out_trade_no = resHandler.getParameter("out_trade_no");
                    //财付通订单号
                    string transaction_id = resHandler.getParameter("transaction_id");
                    //金额,以分为单位
                    string total_fee = resHandler.getParameter("total_fee");
                    //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                    string discount = resHandler.getParameter("discount");
                    //支付结果
                    string trade_state = resHandler.getParameter("trade_state");

                    //即时到账
                    if ("0".Equals(trade_state))
                    {
                        //------------------------------
                        //处理业务开始
                        //------------------------------
                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(notify_id, int.Parse(out_trade_no), decimal.Parse(total_fee) / 100, "TRADE_SUCCESS", transaction_id);


                        //对分销充值订单支付返回,对绑定订单进行处理确认
                        var handdata = OrderJsonData.agentorderpay_Hand(int.Parse(out_trade_no));


                        //处理数据库逻辑
                        //注意交易单不要重复处理
                        //注意判断返回金额

                        //------------------------------
                        //处理业务完毕
                        //------------------------------

                        //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                        Response.Write("success 后台通知成功");
                    }
                    else
                    {
                        Response.Write("支付失败");
                        return;
                    }
                    //回复服务器处理成功
                    Response.Write("success");
                }

                else
                {//SHA1签名失败
                    Response.Write("fail -SHA1 failed");
                    Response.Write(resHandler.getDebugInfo());
                    return;
                }
            }

            else
            {//md5签名失败
                Response.Write("fail -md5 failed");
                Response.Write(resHandler.getDebugInfo());
                return;
            }
        }
Exemplo n.º 6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0) //判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

                if (verifyResult) //验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
                    string  trade_no     = Request.QueryString["trade_no"];                  //支付宝交易号
                    int     order_no     = Int32.Parse(Request.QueryString["out_trade_no"]); //获取订单号
                    decimal total_fee    = decimal.Parse(Request.QueryString["total_fee"]);  //获取总金额
                    string  subject      = Request.QueryString["subject"];                   //商品名称、订单名称
                    string  body         = Request.QueryString["body"];                      //商品描述、订单备注、描述
                    string  buyer_email  = Request.QueryString["buyer_email"];               //买家支付宝账号
                    string  trade_status = Request.QueryString["trade_status"];              //交易状态



                    //获取访问的商户COMID
                    if (Domain_def.Domain_yanzheng(RequestUrl)) //如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
                    {
                        comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl));
                    }
                    else
                    {
                        B2b_company_info companyinfo = B2bCompanyData.GetComId(RequestUrl);
                        if (companyinfo != null)
                        {
                            comid = companyinfo.Com_id;
                        }
                    }


                    //获取电话
                    B2b_order orderdate = new B2bOrderData().GetOrderById(order_no);
                    if (orderdate != null)
                    {
                        var saleset = B2bCompanySaleSetData.GetDirectSellByComid(orderdate.Comid.ToString());
                        if (saleset != null)
                        {
                            phone = saleset.Service_Phone;
                        }

                        var comdata = B2bCompanyData.GetCompany(orderdate.Comid);
                        if (saleset != null)
                        {
                            comname = comdata.Com_name;
                        }
                    }


                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, order_no, total_fee, trade_status);
                        //对分销充值订单支付返回,对绑定订单进行处理确认
                        var handdata = OrderJsonData.agentorderpay_Hand(order_no);


                        title = ("您已成功支付" + total_fee.ToString() + "元!");
                    }
                    else
                    {
                        title = ("支付返回错误:" + Request.QueryString["trade_status"]);
                    }
                }
                else
                {
                    title = ("验证错误");
                }
            }
            else
            {
                title = ("无返回参数");
            }
        }
Exemplo n.º 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string u = Request.ServerVariables["HTTP_USER_AGENT"];

            bo = detectmobilebrowser.HttpUserAgent(u);


            Dictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.VerifyReturn(sPara, Request.QueryString["sign"]);

                string trade_no = Request["trade_no"];                  //支付宝交易号
                int    order_no = Int32.Parse(Request["out_trade_no"]); //获取订单号
                orderid = order_no;
                decimal total_fee = 0;                                  //获取总金额
                if (verifyResult)                                       //验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //获取访问的商户COMID
                    if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
                    {
                        comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl));
                    }
                    else
                    {
                        B2b_company_info companyinfo = B2bCompanyData.GetComId(RequestUrl);
                        if (companyinfo != null)
                        {
                            comid = companyinfo.Com_id;
                        }
                    }



                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                    ////商户订单号
                    //string out_trade_no = Request.QueryString["out_trade_no"];

                    ////支付宝交易号
                    //string trade_no = Request.QueryString["trade_no"];

                    B2bPayData datapay    = new B2bPayData();
                    B2b_pay    modelb2pay = datapay.GetPayByoId(order_no);

                    md5 = EncryptionHelper.ToMD5(order_no.ToString() + "lixh1210", "UTF-8");

                    B2b_order orderdate = new B2bOrderData().GetOrderById(order_no);
                    if (orderdate != null)
                    {
                        order_type = orderdate.Order_type;

                        var saleset = B2bCompanySaleSetData.GetDirectSellByComid(orderdate.Comid.ToString());
                        if (saleset != null)
                        {
                            phone = saleset.Service_Phone;
                        }

                        var comdata = B2bCompanyData.GetCompany(orderdate.Comid);
                        if (saleset != null)
                        {
                            comname = comdata.Com_name;
                        }


                        //根据产品id得到产品信息
                        B2bComProData datapro     = new B2bComProData();
                        B2b_com_pro   modelcompro = datapro.GetProById(orderdate.Pro_id.ToString(), orderdate.Speciid, orderdate.channelcoachid);

                        if (modelcompro != null)
                        {
                            servertype = modelcompro.Server_type;
                        }
                    }

                    if (modelb2pay != null)
                    {
                        total_fee = modelb2pay.Total_fee;
                    }

                    ////交易状态
                    string result = Request.QueryString["result"];


                    //判断是否在商户网站中已经做过了这次通知返回的处理
                    //如果没有做过处理,那么执行商户的业务程序
                    //如果有做过处理,那么不执行商户的业务程序

                    //打印页面
                    //Response.Write("验证成功<br />");订单支付 成功!
                    string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, order_no, total_fee, result);
                    title = "订单支付 成功!";

                    //对分销充值订单支付返回,对绑定订单进行处理确认
                    var handdata = OrderJsonData.agentorderpay_Hand(order_no);

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    //Response.Write("验证失败");
                    title = "订单支付 出现错误";
                }
            }
            else
            {
                //Response.Write("无返回参数");
                title = "订单 没有 支付";
            }
        }
Exemplo n.º 8
0
        public void ProcessNotify(WxPayConfig config, B2b_finance_paytype model)
        {
            WxPayData notifyData = new Notify(this).GetNotifyData(config);

            Log.Info(this.GetType().ToString(), "The Pay ResultXml:" + notifyData.ToXml(config));

            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml(config), config);
                Response.Write(res.ToXml(config));
                Response.End();
            }

            string transaction_id = notifyData.GetValue("transaction_id").ToString();
            string notify_id      = "1";
            string out_trade_no   = notifyData.GetValue("out_trade_no").ToString();
            string total_fee      = notifyData.GetValue("total_fee").ToString();

            //查询订单,判断订单真实性
            if (!QueryOrder(transaction_id, config))
            {
                //若订单查询失败,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单查询失败");
                Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml(config), config);
                Response.Write(res.ToXml(config));
                Response.End();
            }
            //查询订单成功
            else
            {
                //订单支付信息如果没有,则添加支付信息
                B2b_pay   modelb2pay    = new B2bPayData().GetPayByoId(out_trade_no.ConvertTo <int>(0));
                B2b_order modelb2border = new B2bOrderData().GetOrderById(out_trade_no.ConvertTo <int>(0));
                string    Pay_name      = "";
                string    Pay_phone     = "";
                if (modelb2border != null)
                {
                    Pay_name  = modelb2border.U_name;
                    Pay_phone = modelb2border.U_phone;
                }

                #region 订单提交支付信息

                if (modelb2pay == null)
                {
                    B2b_pay eticket = new B2b_pay()
                    {
                        Id           = 0,
                        Oid          = out_trade_no.ConvertTo <int>(0),
                        Pay_com      = "wx",
                        Pay_name     = Pay_name,
                        Pay_phone    = Pay_phone,
                        Total_fee    = decimal.Parse(total_fee) / 100,
                        Trade_no     = "",
                        Trade_status = "trade_pendpay",
                        Uip          = "",
                        comid        = model.Com_id
                    };
                    int payid = new B2bPayData().InsertOrUpdate(eticket);
                }
                else
                {
                    //对已完成支付的,再次提交支付,跳转到订单也或显示此订单已支付
                    if (modelb2pay.Trade_status != "TRADE_SUCCESS")
                    {
                        //防止金额有所改动
                        modelb2pay.comid     = model.Com_id;
                        modelb2pay.Pay_com   = "wx";
                        modelb2pay.Total_fee = decimal.Parse(total_fee) / 100;
                        new B2bPayData().InsertOrUpdate(modelb2pay);
                    }
                }
                #endregion
                //------------------------------
                //处理业务开始
                //------------------------------
                string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(notify_id, int.Parse(out_trade_no), decimal.Parse(total_fee) / 100, "TRADE_SUCCESS", transaction_id);

                //对分销充值订单支付返回,对绑定订单进行处理确认
                var handdata = OrderJsonData.agentorderpay_Hand(int.Parse(out_trade_no));

                // 赠送保险
                OrderJsonData.ZengsongBaoxian(int.Parse(out_trade_no));

                //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "SUCCESS");
                res.SetValue("return_msg", "OK");
                Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml(config), config);
                Response.Write(res.ToXml(config));
                Response.End();
            }
        }
Exemplo n.º 9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //获取访问的商户COMID
            if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
            {
                comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl));
            }
            else
            {
                B2b_company_info companyinfo = B2bCompanyData.GetComId(RequestUrl);
                if (companyinfo != null)
                {
                    comid = companyinfo.Com_id;
                }
            }


            #region 获得财付通支付参数 tenpay_id,tenpay_key
            //根据产品判断商家是否含有自己的财付通支付:
            //a.含有的话支付到商家;
            //b.没有的话支付到平台财付通账户(易城账户,公司id=106)
            string tenpay_id          = "";
            string tenpay_key         = "";
            B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(comid);
            if (model != null)
            {
                //商家财付通支付的所有参数都存在
                if (model.Tenpay_id != "" && model.Tenpay_key != "")
                {
                    tenpay_id  = model.Tenpay_id;
                    tenpay_key = model.Tenpay_key;
                }
                else
                {
                    model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                    if (model == null)
                    {
                        Response.Write("商户财付通信息设置不完全!");
                        Response.End();
                        return;
                    }
                    else
                    {
                        //商家财付通支付的所有参数都存在
                        if (model.Tenpay_id != "" && model.Tenpay_key != "")
                        {
                            tenpay_id  = model.Tenpay_id;
                            tenpay_key = model.Tenpay_key;
                        }
                        else
                        {
                            Response.Write("商户财付通信息设置不完全!!");
                            Response.End();
                            return;
                        }
                    }
                }
            }
            else
            {
                model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                if (model == null)
                {
                    Response.Write("商户财付通信息设置不完全!");
                    Response.End();
                    return;
                }
                else
                {
                    //商家财付通支付的所有参数都存在
                    if (model.Tenpay_id != "" && model.Tenpay_key != "")
                    {
                        tenpay_id  = model.Tenpay_id;
                        tenpay_key = model.Tenpay_key;
                    }
                    else
                    {
                        Response.Write("商户财付通信息设置不完全!!");
                        Response.End();
                        return;
                    }
                }
            }

            #endregion


            //创建ResponseHandler实例
            ResponseHandler resHandler = new ResponseHandler(Context);
            resHandler.setKey(tenpay_key);

            //判断签名
            if (resHandler.isTenpaySign())
            {
                ///通知id
                string notify_id = resHandler.getParameter("notify_id");
                //商户订单号
                string out_trade_no = resHandler.getParameter("out_trade_no");
                //财付通订单号
                string transaction_id = resHandler.getParameter("transaction_id");
                //金额,以分为单位
                string total_fee = resHandler.getParameter("total_fee");
                //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                string discount = resHandler.getParameter("discount");
                //支付结果
                string trade_state = resHandler.getParameter("trade_state");
                //交易模式,1即时到账,2中介担保
                string trade_mode = resHandler.getParameter("trade_mode");

                if ("1".Equals(trade_mode))
                {       //即时到账
                    if ("0".Equals(trade_state))
                    {
                        B2bPayData datapay    = new B2bPayData();
                        B2b_pay    modelb2pay = datapay.GetPayByoId(out_trade_no.ConvertTo <int>(0));

                        B2b_order orderdate = new B2bOrderData().GetOrderById(out_trade_no.ConvertTo <int>(0));
                        if (orderdate != null)
                        {
                            var saleset = B2bCompanySaleSetData.GetDirectSellByComid(orderdate.Comid.ToString());
                            if (saleset != null)
                            {
                                phone = saleset.Service_Phone;
                            }

                            var comdata = B2bCompanyData.GetCompany(orderdate.Comid);
                            if (saleset != null)
                            {
                                comname = comdata.Com_name;
                            }
                        }

                        if (modelb2pay != null)
                        {
                            total_fee = modelb2pay.Total_fee.ToString();
                        }

                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(notify_id, out_trade_no.ConvertTo <int>(), total_fee.ConvertTo <decimal>(), "TRADE_SUCCESS");
                        title = "订单支付 成功!";

                        //Response.Write("即时到帐付款成功");
                        //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                    }
                    else
                    {
                        title = "即时到账支付失败";
                        //Response.Write("即时到账支付失败");
                    }
                }
                else if ("2".Equals(trade_mode))
                {    //中介担保
                    if ("0".Equals(trade_state))
                    {
                        title = "中介担保付款成功";
                        //Response.Write("中介担保付款成功");
                        //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                    }
                    else
                    {
                        title = "trade_state=" + trade_state;
                        //Response.Write("trade_state=" + trade_state);
                    }
                }
            }
            else
            {
                title = "认证签名失败";
                //Response.Write("认证签名失败");
            }

            //获取debug信息,建议把debug信息写入日志,方便定位问题
            string debuginfo = resHandler.getDebugInfo();
            //Response.Write("<br/>debuginfo:" + debuginfo + "<br/>");
        }
Exemplo n.º 10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request["notify_id"], Request["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                    string  trade_no     = Request["trade_no"];                  //支付宝交易号
                    int     order_no     = Int32.Parse(Request["out_trade_no"]); //获取订单号
                    decimal total_fee    = decimal.Parse(Request["total_fee"]);  //获取总金额
                    string  subject      = Request["subject"];                   //商品名称、订单名称
                    string  body         = Request.Form["body"];                 //商品描述、订单备注、描述
                    string  buyer_email  = Request["buyer_email"];               //买家支付宝账号
                    string  trade_status = Request["trade_status"];              //交易状态

                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        #region
                        //查询支付,并修改为支付成功
                        //B2bPayData datapay = new B2bPayData();
                        //B2b_pay modelb2pay = datapay.GetPayByoId(order_no);

                        //if (modelb2pay.Trade_status != "TRADE_SUCCESS")//判断原状态是否为不成功
                        //{
                        //    if (modelb2pay.Total_fee == total_fee)//判断支付金额是否相同
                        //    {
                        //        //B2b_pay payinfo = new B2b_pay()
                        //        //{
                        //        //    Id = modelb2pay.Id,
                        //        //    Trade_no = trade_no,
                        //        //    Trade_status = "TRADE_SUCCESS",
                        //        //};

                        //        modelb2pay.Trade_no = trade_no;
                        //        modelb2pay.Trade_status = "TRADE_SUCCESS";
                        //        int payid = datapay.InsertOrUpdate(modelb2pay);//修改支付状态


                        //        //根据订单id得到订单信息
                        //        B2bOrderData dataorder = new B2bOrderData();
                        //        B2b_order modelb2border = dataorder.GetOrderById(order_no);

                        //        //---------------新增1begin--------------//
                        //        modelb2border.Pay_state = (int)PayStatus.HasPay;
                        //        modelb2border.Order_state = (int)OrderStatus.HasPay;
                        //        //修改此订单的支付状态为“支付成功” ,订单状态为“已付款”
                        //        dataorder.InsertOrUpdate(modelb2border);
                        //        //---------------新增1end--------------//

                        //        //根据产品id得到产品信息
                        //        B2bComProData datapro = new B2bComProData();
                        //        B2b_com_pro modelcompro = datapro.GetProById(modelb2border.Pro_id.ToString());

                        //        //得到商家信息,账户余额
                        //        B2b_company modelcom = B2bCompanyData.GetCompany(modelcompro.Com_id);
                        //        decimal Over_money = modelcom.Imprest + total_fee;

                        //        //得到支付方式,如果是支付到自己的支付宝账户则需要增加退出记录
                        //        B2bFinanceData datefin = new B2bFinanceData();
                        //        B2b_Finance modelfin = datefin.FinancePayType(modelcompro.Com_id);
                        //        int Paytype_int = 1;//支付款到 易城=1 支付到自己=2

                        //        if (modelfin != null)
                        //        {
                        //            Paytype_int = modelfin.Paytype;
                        //        }


                        //        //增加财务记录
                        //        B2bFinanceData Financed = new B2bFinanceData();
                        //        B2b_Finance Financeinfo = new B2b_Finance()
                        //        {

                        //            Id = 0,
                        //            Com_id = modelcompro.Com_id,
                        //            Agent_id = 0,           //分销编号(默认为0)
                        //            Eid = 0,                //易城账户(默认为0,0=没有交易,1=和易城交易)
                        //            Order_id = modelcompro.Id,           //订单号(默认为0)
                        //            Servicesname = modelcompro.Pro_name,       //交易名称/内容
                        //            SerialNumber = DateTime.Now.ToString("yyyyMMddhhmmssfff"),       //财务流水号
                        //            Money = total_fee,              //金额
                        //            Payment = 0,            //收支(0=收款,1=支出)
                        //            Payment_type = "直销收款",       //类型(充值,商家提现,直销收款,消费(验票),商家退款,直销退票,手续费,商家返点)
                        //            Money_come = "支付宝",         //资金来源(网上支付,银行收款等)
                        //            Over_money = Over_money,       //余额(根据商家,分销,易城,编号显示相应余额)
                        //            Paytype = Paytype_int

                        //        };
                        //        int finaceid = Financed.InsertOrUpdate(Financeinfo);


                        //        //如果是支付到商户的支付宝则增加一笔支出操作与上面做平
                        //        if (Paytype_int == 2)
                        //        {
                        //            B2b_Finance Financebackinfo = new B2b_Finance()
                        //            {
                        //                Id = 0,
                        //                Com_id = modelcompro.Com_id,
                        //                Agent_id = 0,           //分销编号(默认为0)
                        //                Eid = 0,                //易城账户(默认为0,0=没有交易,1=和易城交易)
                        //                Order_id = modelcompro.Id,           //订单号(默认为0)
                        //                Servicesname = modelcompro.Pro_name,       //交易名称/内容
                        //                SerialNumber = DateTime.Now.ToString("yyyyMMddhhmmssfff"),       //财务流水号
                        //                Money = 0 - total_fee,              //金额
                        //                Payment = 1,            //收支(0=收款,1=支出)
                        //                Payment_type = "提现-商家支付宝",       //类型(充值,商家提现,直销收款,消费(验票),商家退款,直销退票,手续费,商家返点)
                        //                Money_come = "支付宝",         //资金来源(网上支付,银行收款等)
                        //                Over_money = Over_money - total_fee       //余额(根据商家,分销,易城,编号显示相应余额)
                        //            };
                        //            int finacebackid = Financed.InsertOrUpdate(Financebackinfo);

                        //        }

                        //        //---------------------------生成电子票并发送-------------------------------
                        //        //如果订单“已付款”则执行发码操作,否则跳过
                        //        if ((int)modelb2border.Order_state == (int)OrderStatus.HasPay)
                        //        {

                        //            //生成电子码
                        //            int u_num = modelb2border.U_num;
                        //            int comid = modelcompro.Com_id;
                        //            RandomCodeData datarandomcode = new RandomCodeData();
                        //            RandomCode modelrandomcode = datarandomcode.GetRandomCode();//得到未用随机码对象


                        //            //设置取出的电子码状态为1(已使用)
                        //            modelrandomcode.State = 1;
                        //            int randomcodeid = datarandomcode.InsertOrUpdate(modelrandomcode);
                        //            string eticketcode = "9" + comid.ToString() + modelrandomcode.Code.ToString();
                        //            string sendstr = "";

                        //            //录入电子票列表
                        //            B2bEticketData eticketdata = new B2bEticketData();
                        //            B2b_eticket eticket = new B2b_eticket()
                        //            {

                        //                Id = 0,
                        //                Com_id = comid,
                        //                Pro_id = modelcompro.Id,
                        //                Agent_id = 0,//直销
                        //                Pno = eticketcode,
                        //                E_type = (int)EticketCodeType.ShuZiMa,
                        //                Pnum = modelb2border.U_num,
                        //                Use_pnum = modelb2border.U_num,
                        //                E_proname = modelcompro.Pro_name,
                        //                E_face_price = modelcompro.Face_price,
                        //                E_sale_price = modelcompro.Advise_price,
                        //                E_cost_price = modelcompro.Agentsettle_price,
                        //                V_state = (int)EticketCodeStatus.NotValidate,
                        //                Send_state = (int)EticketCodeSendStatus.NotSend,
                        //                Subdate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
                        //            };
                        //            int eticketid = eticketdata.InsertOrUpdate(eticket);
                        //            if (eticketid > 0)
                        //            {
                        //                //生成电子码短信,稍后可单独写类或写到数据库中
                        //                //diveticketcode.InnerText = "电子码生成成功:" + eticketcode;
                        //                sendstr = "感谢您订购" + modelcompro.Pro_name + modelb2border.U_num + "张" + ",电子码:" + eticketcode + " 有效期至:" + modelcompro.Pro_end.ToString("yyyy-MM-dd") + "二维码:http://" + RequestUrl + "/qr.ashx?p=" + eticketcode + "【微旅行】";

                        //                //电子票发送日志表,创建发送记录
                        //                B2bEticketSendLogData eticketsnedlog = new B2bEticketSendLogData();
                        //                B2b_eticket_send_log eticketlog = new B2b_eticket_send_log()
                        //                {
                        //                    Id = 0,
                        //                    Eticket_id = eticketid,
                        //                    Pnotext = sendstr,
                        //                    Phone = modelb2border.U_phone,
                        //                    Sendstate = 0,
                        //                    Sendtype = 1,
                        //                    Senddate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
                        //                };
                        //                int insertsendEticketid = eticketsnedlog.InsertOrUpdate(eticketlog);


                        //                //发送电子码
                        //                string msg = "";
                        //                int sendstate = 0;//发送状态 1=成功,2=失败 0=未发送
                        //                int sendback = SendSmsHelper.SendSms(modelb2border.U_phone, sendstr, out msg);
                        //                if (sendback > 0)
                        //                {
                        //                    //labelmsg.InnerText = "发送成功" + sendback;
                        //                    sendstate = 1;
                        //                    //修改电子票发送日志表的发码状态为成功
                        //                    B2b_eticket_send_log eticketlogup = new B2b_eticket_send_log()
                        //                    {
                        //                        Id = insertsendEticketid,
                        //                        Sendstate = 1,
                        //                        Senddate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
                        //                    };
                        //                    int upsendEticket = eticketsnedlog.InsertOrUpdate(eticketlogup);
                        //                    //-----------------新增2 begin-------------------------//
                        //                    modelb2border.Send_state = (int)SendCodeStatus.HasSend;
                        //                    modelb2border.Order_state = (int)OrderStatus.HasSendCode;
                        //                    modelb2border.Ticketcode = eticketid;
                        //                    //修改订单中发码状态为“已发码”,订单状态为"已发码",电子码id输入
                        //                    dataorder.InsertOrUpdate(modelb2border);
                        //                    //------------------新增2 end---------------------------//
                        //                }
                        //                else
                        //                {
                        //                    //labelmsg.InnerText = "发送错误" + msg;

                        //                    sendstate = 2;
                        //                }

                        //                //记录短信日志表
                        //                B2bSmsMobileSendDate smsmobilelog = new B2bSmsMobileSendDate();
                        //                B2b_smsmobilesend smslog = new B2b_smsmobilesend()
                        //                {
                        //                    Mobile = modelb2border.U_phone,
                        //                    Content = sendstr,
                        //                    Flag = sendstate,
                        //                    Text = msg,
                        //                    Delaysendtime = "",
                        //                    Realsendtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
                        //                    Smsid = sendback,
                        //                    Sendeticketid = insertsendEticketid
                        //                };
                        //                int insertsendmobileid = smsmobilelog.InsertOrUpdate(smslog);

                        //            }
                        //            else
                        //            {
                        //                //diveticketcode.InnerText = "电子码生成ERROR";

                        //            }

                        //        }



                        //    }

                        //}
                        #endregion


                        string retunstr = new PayReturnSendEticketData().PayReturnSendEticket(trade_no, order_no, total_fee, trade_status);

                        //对分销充值订单支付返回,对绑定订单进行处理确认
                        var handdata = OrderJsonData.agentorderpay_Hand(order_no);
                    }


                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    Response.Write("success");  //请不要修改或删除

                    #region 赠送保险
                    OrderJsonData.ZengsongBaoxian(order_no);
                    #endregion

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
Exemplo n.º 11
0
 protected void Page_Load(object sender, EventArgs e)
 {
     order_no = Int32.Parse(Request["id"]);
     string retunstr = new PayReturnSendEticketData().ShougongReturnSendEticket(order_no);
 }