Exemple #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SystemOptions so = new SystemOptions();

        string key            = so["MemberSharing_Alipay_MD5"].ToString("");
        string return_url     = Shove._Web.Utility.GetUrl() + "/Home/Room/Receive.aspx?" + System.Web.HttpUtility.UrlEncode("BuyID=" + Request["BuyID"]); //服务器通知返回接口
        string gateway        = so["MemberSharing_Alipay_Gateway"].ToString("");                                                                          //支付接口
        string _input_charset = "utf-8";
        string service        = "user_authentication";
        string sign_type      = "MD5";
        string partner        = so["MemberSharing_Alipay_UserNumber"].ToString("");   //卖家商户号
        string ReturnUrl      = return_url;

        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();
        string aliay_url       = ap.CreatUrl(
            gateway,
            service,
            partner,
            sign_type,
            key,
            return_url,
            _input_charset,
            ReturnUrl
            );

        Response.Redirect(aliay_url, true);
    }
Exemple #2
0
    protected void AlipayPay()
    {
        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

        string aliay_url = ap.CreatUrl(
            gateway,
            service,
            partner,
            return_url,
            notify_url,
            out_trade_no,
            subject,
            payment_type,
            total_fee,
            seller_email,
            key,
            _input_charset,
            sign_type,
            "body",
            body,
            "show_url",
            show_url,
            "paymethod",
            paymethod
            );

        if (aliay_url == "")
        {
            Shove._Web.JavaScript.Alert(this.Page, "地址构建出现错误");

            return;
        }

        this.Response.Write("<script language='javascript'>window.top.location.href='" + aliay_url + "'</script>");
    }
 protected void BankClick(string BankCode)
 {
     string str = new Shove.Alipay.Alipay().CreatUrl(this.gateway, this.service, this.partner, this.return_url, this.notify_url, this.out_trade_no, this.subject, this.payment_type, this.total_fee, this.seller_email, this.key, this._input_charset, this.sign_type, new string[] { "body", this.body, "defaultbank", BankCode, "paymethod", this.paymethod });
     if (str == "")
     {
         JavaScript.Alert(this.Page, "地址构建出现错误");
     }
     else
     {
         base.Response.Write("<script language='javascript'>window.top.location.href='" + str + "'</script>");
     }
 }
Exemple #4
0
    protected void BankClick(string BankCode)
    {
        string str = new Shove.Alipay.Alipay().CreatUrl(this.gateway, this.service, this.partner, this.return_url, this.notify_url, this.out_trade_no, this.subject, this.payment_type, this.total_fee, this.seller_email, this.key, this._input_charset, this.sign_type, new string[] { "body", this.body, "defaultbank", BankCode, "paymethod", this.paymethod });

        if (str == "")
        {
            JavaScript.Alert(this.Page, "地址构建出现错误");
        }
        else
        {
            base.Response.Write("<script language='javascript'>window.top.location.href='" + str + "'</script>");
        }
    }
 protected void Page_Load(object sender, EventArgs e)
 {
     SystemOptions options = new SystemOptions();
     string key = options["MemberSharing_Alipay_MD5"].ToString("");
     string str2 = Utility.GetUrl() + "/Home/Room/Receive.aspx?" + HttpUtility.UrlEncode("BuyID=" + base.Request["BuyID"]);
     string gateway = options["MemberSharing_Alipay_Gateway"].ToString("");
     string str4 = "utf-8";
     string service = "user_authentication";
     string str6 = "MD5";
     string partner = options["MemberSharing_Alipay_UserNumber"].ToString("");
     string returnUrl = str2;
     string url = new Shove.Alipay.Alipay().CreatUrl(gateway, service, partner, str6, key, str2, str4, returnUrl);
     base.Response.Redirect(url, true);
 }
Exemple #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SystemOptions options   = new SystemOptions();
        string        key       = options["MemberSharing_Alipay_MD5"].ToString("");
        string        str2      = Utility.GetUrl() + "/Home/Room/Receive.aspx?" + HttpUtility.UrlEncode("BuyID=" + base.Request["BuyID"]);
        string        gateway   = options["MemberSharing_Alipay_Gateway"].ToString("");
        string        str4      = "utf-8";
        string        service   = "user_authentication";
        string        str6      = "MD5";
        string        partner   = options["MemberSharing_Alipay_UserNumber"].ToString("");
        string        returnUrl = str2;
        string        url       = new Shove.Alipay.Alipay().CreatUrl(gateway, service, partner, str6, key, str2, str4, returnUrl);

        base.Response.Redirect(url, true);
    }
Exemple #7
0
        public string BuildLoginUrl()
        {
            SystemOptions options   = new SystemOptions();
            string        key       = options["MemberSharing_Alipay_MD5"].ToString("");
            string        str2      = Shove._Web.Utility.GetUrl() + "/MemberSharing/Alipay/Receive.aspx";
            string        gateway   = options["MemberSharing_Alipay_Gateway"].ToString("");
            string        str4      = "utf-8";
            string        service   = "user_authentication";
            string        str6      = "MD5";
            string        partner   = options["MemberSharing_Alipay_UserNumber"].ToString("");
            string        returnUrl = Shove._Web.Utility.GetUrl() + "/MemberSharing/Alipay/Receive.aspx";

            Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
            return(alipay.CreatUrl(gateway, service, partner, str6, key, str2, str4, returnUrl));
        }
    protected void OnlinePaymentAlipayToAlipay(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        SystemOptions options = new SystemOptions();

        this.partner = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
        this.key     = options["OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut"].ToString("");
        string   email             = options["OnlinePay_Alipay_ForUserDistill_UserName"].ToString("");
        string   str2              = "深圳天维掌通技术有限公司";
        string   gateway           = "https://www.alipay.com/cooperate/gateway.do?";
        string   str4              = "utf-8";
        string   service           = "batch_trans_notify";
        string   str6              = "MD5";
        DateTime now               = DateTime.Now;
        string   str7              = now.ToString("yyyyMMdd");
        Random   random            = new Random();
        string   str8              = random.Next(1, 0x63).ToString().PadLeft(2, '0');
        string   fileName          = now.ToString("yyyyMMddhhmmss") + str8;
        string   str10             = SumMoney.ToString();
        string   str11             = Count.ToString();
        string   str12             = Body;
        string   str13             = Utility.GetUrl() + "/Admin/OnlinePayment/Alipay/AlipayNotify.aspx";
        int      returnValue       = 0;
        string   returnDescription = "";

        if (Procedures.P_UserDistillPayByAlipay(base._User.ID, fileName, UserDistillIDs, 1, ref returnValue, ref returnDescription) < 0)
        {
            Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
        }
        if (returnDescription != "")
        {
            JavaScript.Alert(this.Page, "数据更新错误:" + returnDescription);
        }
        string url = new Shove.Alipay.Alipay().CreatUrl(gateway, service, this.partner, str6, fileName, str2, str10, str11, email, str7, str12, this.key, str13, str4);

        base.Response.Redirect(url, true);
    }
    protected void OnlinePaymentAlipayToBank(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        //业务参数赋值;
        SystemOptions sysOptions = new SystemOptions();
        partner = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");//OnlinePayOut_Alipay_UserNumber		//partner		合作伙伴ID			保留字段
        key = sysOptions["OnlinePay_Alipay_ForUserDistill_MD5Key"].ToString("");   //OnlinePayOut_Alipay_MD5Key //partner账户的支付宝安全校验码

        gateway = sysOptions["MemberSharing_Alipay_Gateway"].ToString("");  //"https://www.alipay.com/cooperate/gateway.do";
        service = "bptb_pay_file";
        sign_type = "MD5";
        _input_charset = "GB2312";                                                  //编码类型
        file_digest_type = "MD5";                                                   //文件摘要算法
        biz_type = "d_sale";                                                        //业务类型

        agentID = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");// "2088001456282873";

        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

        DateTime dtNow = DateTime.Now;

        string FileName = "";
        string FileAddr = "";
        string ZipFileName = "";
        string ZipFileAddr = "";

        int i = 0;

        if ((Body != "") && (Count > 0) && (SumMoney > 0))
        {
            string strDateTime = dtNow.ToString("yyyyMMdd");

            #region     CSV文件标准格式

            //日期,总金额,总笔数,支付宝帐号(Email)
            //20080418,10,1,[email protected]
            //商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注
            //2007052801,韦吴石,6221885511000609058,工商银行,广东省,深圳市,工商银行深圳宝安分行,10,2,2132

            #endregion

            string headStr = "日期,总金额,总笔数,支付宝帐号(Email)\r\n";
            headStr += strDateTime + "," + SumMoney.ToString() + "," + Count.ToString() + "," + partner + "\r\n";
            headStr += "商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注\r\n";
            Body = headStr + Body;

            System.Random rad = new Random();
            string Num = rad.Next(1, 999).ToString();
            Num = Num + dtNow.Hour.ToString() + dtNow.Minute.ToString() + dtNow.Second.ToString();
            Num = Num.PadLeft(9, '0');

            FileName = "PAPX_" + strDateTime + "_P" + Num + ".csv".ToLower();
            FileAddr = MapPath("../App_Log/Admin/AlipayPayment/PABX/" + FileName).ToLower();
            ZipFileName = "PAPX_" + strDateTime + "_P" + Num + ".Zip".ToLower();
            ZipFileAddr = MapPath("../App_Log/Admin/AlipayPayment/PABX/" + ZipFileName).ToLower();

            if (!System.IO.File.Exists(FileAddr))
            {
                try
                {
                    //File.WriteAllText(FileAddr, Body);
                    if (!Shove._IO.File.WriteFile(FileAddr, Body))
                    {
                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入失败:" + FileAddr);

                        Shove._Web.JavaScript.Alert(this.Page, "CSV文件写入失败");

                        return;
                    }

                }
                catch
                {
                    DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入异常:" + FileAddr);
                    Shove._Web.JavaScript.Alert(this.Page, "CSV文件写入异常");

                    return;
                }
            }
            else
            {
                Shove._Web.JavaScript.Alert(this.Page, "文件写已存在");

                return;
            }

            if (System.IO.File.Exists(FileAddr))
            {
                if (!System.IO.File.Exists(ZipFileAddr))
                {
                    try
                    {
                        Shove._IO.File.Compress(FileAddr, ZipFileAddr);
                    }
                    catch
                    {

                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog("文件压缩出现异常:" + FileAddr);
                        Shove._Web.JavaScript.Alert(this.Page, "文件压缩出现异常");
                        return;
                    }
                }

            }
            else
            {

                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件不存在(1):" + FileAddr);
                Shove._Web.JavaScript.Alert(this.Page, "CSV文件不存在");

                return;
            }
        }

        if (!System.IO.File.Exists(ZipFileAddr))
        {

            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("ZIP文件不存在(2):" + FileAddr);
            Shove._Web.JavaScript.Alert(this.Page, "ZIP文件不存在");

            return;
        }

        byte[] Date = System.IO.File.ReadAllBytes(ZipFileAddr);
        digest_bptb_pay_file = Shove.Alipay.Alipay.GetMD5(Date, _input_charset);

        string[] Sortedstr = ap.GetUploadParams
            (
            service,
            _input_charset,
            partner,
            file_digest_type,
            biz_type,
            agentID
            );                                                                      //签名

        // 读文件流
        FileStream fs = new FileStream(ZipFileAddr, FileMode.Open, FileAccess.Read, FileShare.Read);

        // 这部分需要完善
        string ContentType = "application/octet-stream";
        byte[] fileBytes = new byte[fs.Length];
        fs.Read(fileBytes, 0, Convert.ToInt32(fs.Length));
        fs.Close();

        // 生成需要上传的二进制数组
        CreateBytes cb = new Shove.Alipay.CreateBytes();
        // 所有表单数据
        ArrayList bytesArray = new ArrayList();
        // 普通表单
        string[] fields = new string[Sortedstr.Length + 1];

        char[] delimiterChars = { '=' };

        for (i = 0; i < Sortedstr.Length; i++)
        {
            string fieldName = Sortedstr[i].Split(delimiterChars)[0];
            string fieldValue = Sortedstr[i].Split(delimiterChars)[1];

            bytesArray.Add(cb.CreateFieldData(fieldName, fieldValue));
            fields[i] = fieldName + "=" + fieldValue;
        }

        bytesArray.Add(cb.CreateFieldData("digest_bptb_pay_file", digest_bptb_pay_file));
        fields[i] = "digest_bptb_pay_file=" + digest_bptb_pay_file;
        sign = AlipayCommon.GetSign(fields, key).Trim();
        bytesArray.Add(cb.CreateFieldData("sign", sign));
        bytesArray.Add(cb.CreateFieldData("sign_type", "MD5"));

        // 文件表单
        bytesArray.Add(cb.CreateFieldData("bptb_pay_file", ZipFileAddr, ContentType, fileBytes));

        // 合成所有表单并生成二进制数组
        byte[] bytes = cb.JoinBytes(bytesArray);

        // 返回的内容
        byte[] responseBytes;
        // 上传到指定Url        
        bool uploaded = cb.UploadData(gateway, bytes, out responseBytes);
        if (!uploaded)
        {

            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("上传到指定Url失败:" + FileAddr);
            try
            {
                File.Delete(FileAddr);
                File.Delete(ZipFileAddr);
            }
            catch
            {
            }
            Shove._Web.JavaScript.Alert(this.Page, "上传支付数据到指定Url失败!");

            return;
        }

        string UploadResult = System.Text.Encoding.Default.GetString(responseBytes);

        if (UploadResult.IndexOf("上传成功") >= 0)
        {
            //把上传的支付明细写入数据库(FileName)和更新状态
            int returnValue = 0;
            string returnDecription = "";
            if (DAL.Procedures.P_UserDistillPayByAlipay(_User.ID, ZipFileName, UserDistillIDs, 2, ref returnValue, ref returnDecription) < 0)
            {
                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
            }
            if (returnDecription != "")
            {
                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("把上传的支付明细写入数据库(FileName)和更新状态出错:" + returnDecription);
                Shove._Web.JavaScript.Alert(this.Page, "出错:" + returnDecription);
                BindData(true);
                return;
            }

            Shove._Web.JavaScript.Alert(this.Page, UploadResult + "银行处理需要到明天才有结果,请耐心等待处理结果!");

            BindData(true);
        }
        else
        {

            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("上传支付到银行明细失败:" + UploadResult);
            Shove._Web.JavaScript.Alert(this.Page, UploadResult.Replace("\n", "").Replace("\r", ""));
        }

    }
    protected void OnlinePaymentAlipayToAlipay(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        //业务参数赋值;
        SystemOptions sysOptions = new SystemOptions();
        partner = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");		//partner		合作伙伴ID			保留字段
        key = sysOptions["OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut"].ToString("");            //partner账户的支付宝安全校验码
        //**************e******************************************
        string email = sysOptions["OnlinePay_Alipay_ForUserDistill_UserName"].ToString("");         //付款人账号

        //未知@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        string account_name = "深圳天维掌通技术有限公司"; //PublicFunction.GetOptionsAsString("OnlinePayOut_Alipay_RealityName", "");		//	账户真实姓名 

        string gateway = "https://www.alipay.com/cooperate/gateway.do?";//'支付接口'支付接口
        string _input_charset = "utf-8";
        string service = "batch_trans_notify";
        string sign_type = "MD5";

        DateTime dtNow = DateTime.Now;
        string pay_date = dtNow.ToString("yyyyMMdd");   // 付款日期   //注意格式

        //*******************************************************
        System.Random rad = new Random();
        string Num = rad.Next(1, 99).ToString();
        Num = Num.PadLeft(2, '0');
        string batch_no = dtNow.ToString("yyyyMMddhhmmss") + Num;	    //批量付款订单号 日期(20070412)+16位序列号
        string batch_fee = SumMoney.ToString();                         //总金额					0.01~50000.00
        string batch_num = Count.ToString();                            //批次号即该次付款总笔数
        //*********************************************************
        string detail_data = Body; //注意格式多条用"|" 隔开 //"0039411^[email protected]^周长军^0.01^test|0039491^[email protected]^谢凯^0.01^263"
        string notify_url = Shove._Web.Utility.GetUrl() + "/Admin/OnlinePayment/Alipay/AlipayNotify.aspx"; //服务器通知返回接口

        //把上传的支付明细写入数据库(FileName)和更新状态
        int returnValue = 0;
        string returnDecription = "";
        if (DAL.Procedures.P_UserDistillPayByAlipay(_User.ID, batch_no, UserDistillIDs, 1, ref returnValue, ref returnDecription) < 0)
        {
            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
        }
        if (returnDecription != "")
        {
            Shove._Web.JavaScript.Alert(this.Page, "数据更新错误:" + returnDecription);
        }

        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();
        string aliay_url = ap.CreatUrl(
             gateway,
             service,
             partner,
             sign_type,
             batch_no,
             account_name,
             batch_fee,
             batch_num,
             email,
             pay_date,
             detail_data,
             key,
             notify_url,
             _input_charset
            );

        Response.Redirect(aliay_url, true);                                        //可以采用表单(post)传递数据

        return;
    }
    protected void OnlinePaymentAlipayToBank(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        //业务参数赋值;
        SystemOptions sysOptions = new SystemOptions();

        partner = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString(""); //OnlinePayOut_Alipay_UserNumber		//partner		合作伙伴ID			保留字段
        key     = sysOptions["OnlinePay_Alipay_ForUserDistill_MD5Key"].ToString("");     //OnlinePayOut_Alipay_MD5Key //partner账户的支付宝安全校验码

        gateway          = sysOptions["MemberSharing_Alipay_Gateway"].ToString("");      //"https://www.alipay.com/cooperate/gateway.do";
        service          = "bptb_pay_file";
        sign_type        = "MD5";
        _input_charset   = "GB2312";                                                     //编码类型
        file_digest_type = "MD5";                                                        //文件摘要算法
        biz_type         = "d_sale";                                                     //业务类型

        agentID = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString(""); // "2088001456282873";

        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

        DateTime dtNow = DateTime.Now;

        string FileName    = "";
        string FileAddr    = "";
        string ZipFileName = "";
        string ZipFileAddr = "";

        int i = 0;

        if ((Body != "") && (Count > 0) && (SumMoney > 0))
        {
            string strDateTime = dtNow.ToString("yyyyMMdd");

            #region     CSV文件标准格式

            //日期,总金额,总笔数,支付宝帐号(Email)
            //20080418,10,1,[email protected]
            //商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注
            //2007052801,韦吴石,6221885511000609058,工商银行,广东省,深圳市,工商银行深圳宝安分行,10,2,2132

            #endregion

            string headStr = "日期,总金额,总笔数,支付宝帐号(Email)\r\n";
            headStr += strDateTime + "," + SumMoney.ToString() + "," + Count.ToString() + "," + partner + "\r\n";
            headStr += "商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注\r\n";
            Body     = headStr + Body;

            System.Random rad = new Random();
            string        Num = rad.Next(1, 999).ToString();
            Num = Num + dtNow.Hour.ToString() + dtNow.Minute.ToString() + dtNow.Second.ToString();
            Num = Num.PadLeft(9, '0');

            FileName    = "PAPX_" + strDateTime + "_P" + Num + ".csv".ToLower();
            FileAddr    = MapPath("../App_Log/Admin/AlipayPayment/PABX/" + FileName).ToLower();
            ZipFileName = "PAPX_" + strDateTime + "_P" + Num + ".Zip".ToLower();
            ZipFileAddr = MapPath("../App_Log/Admin/AlipayPayment/PABX/" + ZipFileName).ToLower();

            if (!System.IO.File.Exists(FileAddr))
            {
                try
                {
                    //File.WriteAllText(FileAddr, Body);
                    if (!Shove._IO.File.WriteFile(FileAddr, Body))
                    {
                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入失败:" + FileAddr);

                        Shove._Web.JavaScript.Alert(this.Page, "CSV文件写入失败");

                        return;
                    }
                }
                catch
                {
                    DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入异常:" + FileAddr);
                    Shove._Web.JavaScript.Alert(this.Page, "CSV文件写入异常");

                    return;
                }
            }
            else
            {
                Shove._Web.JavaScript.Alert(this.Page, "文件写已存在");

                return;
            }

            if (System.IO.File.Exists(FileAddr))
            {
                if (!System.IO.File.Exists(ZipFileAddr))
                {
                    try
                    {
                        Shove._IO.File.Compress(FileAddr, ZipFileAddr);
                    }
                    catch
                    {
                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog("文件压缩出现异常:" + FileAddr);
                        Shove._Web.JavaScript.Alert(this.Page, "文件压缩出现异常");
                        return;
                    }
                }
            }
            else
            {
                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件不存在(1):" + FileAddr);
                Shove._Web.JavaScript.Alert(this.Page, "CSV文件不存在");

                return;
            }
        }

        if (!System.IO.File.Exists(ZipFileAddr))
        {
            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("ZIP文件不存在(2):" + FileAddr);
            Shove._Web.JavaScript.Alert(this.Page, "ZIP文件不存在");

            return;
        }

        byte[] Date = System.IO.File.ReadAllBytes(ZipFileAddr);
        digest_bptb_pay_file = Shove.Alipay.Alipay.GetMD5(Date, _input_charset);

        string[] Sortedstr = ap.GetUploadParams
                             (
            service,
            _input_charset,
            partner,
            file_digest_type,
            biz_type,
            agentID
                             );                                                     //签名

        // 读文件流
        FileStream fs = new FileStream(ZipFileAddr, FileMode.Open, FileAccess.Read, FileShare.Read);

        // 这部分需要完善
        string ContentType = "application/octet-stream";
        byte[] fileBytes   = new byte[fs.Length];
        fs.Read(fileBytes, 0, Convert.ToInt32(fs.Length));
        fs.Close();

        // 生成需要上传的二进制数组
        CreateBytes cb = new Shove.Alipay.CreateBytes();
        // 所有表单数据
        ArrayList bytesArray = new ArrayList();
        // 普通表单
        string[] fields = new string[Sortedstr.Length + 1];

        char[] delimiterChars = { '=' };

        for (i = 0; i < Sortedstr.Length; i++)
        {
            string fieldName  = Sortedstr[i].Split(delimiterChars)[0];
            string fieldValue = Sortedstr[i].Split(delimiterChars)[1];

            bytesArray.Add(cb.CreateFieldData(fieldName, fieldValue));
            fields[i] = fieldName + "=" + fieldValue;
        }

        bytesArray.Add(cb.CreateFieldData("digest_bptb_pay_file", digest_bptb_pay_file));
        fields[i] = "digest_bptb_pay_file=" + digest_bptb_pay_file;
        sign      = AlipayCommon.GetSign(fields, key).Trim();
        bytesArray.Add(cb.CreateFieldData("sign", sign));
        bytesArray.Add(cb.CreateFieldData("sign_type", "MD5"));

        // 文件表单
        bytesArray.Add(cb.CreateFieldData("bptb_pay_file", ZipFileAddr, ContentType, fileBytes));

        // 合成所有表单并生成二进制数组
        byte[] bytes = cb.JoinBytes(bytesArray);

        // 返回的内容
        byte[] responseBytes;
        // 上传到指定Url
        bool uploaded = cb.UploadData(gateway, bytes, out responseBytes);
        if (!uploaded)
        {
            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("上传到指定Url失败:" + FileAddr);
            try
            {
                File.Delete(FileAddr);
                File.Delete(ZipFileAddr);
            }
            catch
            {
            }
            Shove._Web.JavaScript.Alert(this.Page, "上传支付数据到指定Url失败!");

            return;
        }

        string UploadResult = System.Text.Encoding.Default.GetString(responseBytes);

        if (UploadResult.IndexOf("上传成功") >= 0)
        {
            //把上传的支付明细写入数据库(FileName)和更新状态
            int    returnValue      = 0;
            string returnDecription = "";
            if (DAL.Procedures.P_UserDistillPayByAlipay(_User.ID, ZipFileName, UserDistillIDs, 2, ref returnValue, ref returnDecription) < 0)
            {
                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
            }
            if (returnDecription != "")
            {
                DAL.Procedures.P_UserDistillPayByAlipayWriteLog("把上传的支付明细写入数据库(FileName)和更新状态出错:" + returnDecription);
                Shove._Web.JavaScript.Alert(this.Page, "出错:" + returnDecription);
                BindData(true);
                return;
            }

            Shove._Web.JavaScript.Alert(this.Page, UploadResult + "银行处理需要到明天才有结果,请耐心等待处理结果!");

            BindData(true);
        }
        else
        {
            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("上传支付到银行明细失败:" + UploadResult);
            Shove._Web.JavaScript.Alert(this.Page, UploadResult.Replace("\n", "").Replace("\r", ""));
        }
    }
    protected void OnlinePaymentAlipayToAlipay(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        //业务参数赋值;
        SystemOptions sysOptions = new SystemOptions();

        partner = sysOptions["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");            //partner		合作伙伴ID			保留字段
        key     = sysOptions["OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut"].ToString("");      //partner账户的支付宝安全校验码
        //**************e******************************************
        string email = sysOptions["OnlinePay_Alipay_ForUserDistill_UserName"].ToString("");         //付款人账号

        //未知@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        string account_name = "深圳天维掌通技术有限公司";                                   //PublicFunction.GetOptionsAsString("OnlinePayOut_Alipay_RealityName", "");		//	账户真实姓名

        string gateway        = "https://www.alipay.com/cooperate/gateway.do?"; //'支付接口'支付接口
        string _input_charset = "utf-8";
        string service        = "batch_trans_notify";
        string sign_type      = "MD5";

        DateTime dtNow    = DateTime.Now;
        string   pay_date = dtNow.ToString("yyyyMMdd"); // 付款日期   //注意格式

        //*******************************************************
        System.Random rad = new Random();
        string        Num = rad.Next(1, 99).ToString();

        Num = Num.PadLeft(2, '0');
        string batch_no  = dtNow.ToString("yyyyMMddhhmmss") + Num;                                          //批量付款订单号 日期(20070412)+16位序列号
        string batch_fee = SumMoney.ToString();                                                             //总金额					0.01~50000.00
        string batch_num = Count.ToString();                                                                //批次号即该次付款总笔数
        //*********************************************************
        string detail_data = Body;                                                                          //注意格式多条用"|" 隔开 //"0039411^[email protected]^周长军^0.01^test|0039491^[email protected]^谢凯^0.01^263"
        string notify_url  = Shove._Web.Utility.GetUrl() + "/Admin/OnlinePayment/Alipay/AlipayNotify.aspx"; //服务器通知返回接口

        //把上传的支付明细写入数据库(FileName)和更新状态
        int    returnValue      = 0;
        string returnDecription = "";

        if (DAL.Procedures.P_UserDistillPayByAlipay(_User.ID, batch_no, UserDistillIDs, 1, ref returnValue, ref returnDecription) < 0)
        {
            DAL.Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
        }
        if (returnDecription != "")
        {
            Shove._Web.JavaScript.Alert(this.Page, "数据更新错误:" + returnDecription);
        }

        Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();
        string aliay_url       = ap.CreatUrl(
            gateway,
            service,
            partner,
            sign_type,
            batch_no,
            account_name,
            batch_fee,
            batch_num,
            email,
            pay_date,
            detail_data,
            key,
            notify_url,
            _input_charset
            );

        Response.Redirect(aliay_url, true);                                        //可以采用表单(post)传递数据

        return;
    }
Exemple #13
0
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //***************************************************************
            string _input_charset = "utf-8";
            string NotifyService  = "notify_verify";
            string SellerEmail    = so["OnlinePay_Alipay_UserName"].ToString("");//卖家支付宝名称(邮箱)

            string NotifyID = Request.QueryString["notify_id"];

            int NotifyType = 2;

            Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

            //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
            string responseTxt = ap.Get_Http(NotifyService, NotifyID, SellerEmail, _input_charset, NotifyType, 120000);

            int i;
            NameValueCollection coll;
            //Load Form variables into NameValueCollection variable.
            coll = Request.QueryString;

            // Get names of all forms into a string array.
            String[] requestarr = coll.AllKeys;

            //进行排序;
            string[] Sortedstr = Alipay.Gateway.Utility.BubbleSort(requestarr);

            //构造待md5摘要字符串 ;

            StringBuilder prestr = new StringBuilder();

            for (i = 0; i < Sortedstr.Length; i++)
            {
                if (String.IsNullOrEmpty(Sortedstr[i]))
                {
                    continue;
                }

                if (Request.QueryString[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")
                {
                    if (i == Sortedstr.Length - 1)
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);
                    }
                    else
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");
                    }
                }
            }

            string mysign            = ap.GetMD5(prestr.ToString(), SellerEmail, _input_charset);
            string sign              = Request.QueryString["sign"];
            string trade_status      = Request.QueryString["trade_status"];
            string trade_no          = Request.QueryString["trade_no"];                           //支付宝交易号
            string out_trade_no      = Request.QueryString["out_trade_no"];                       //自己交易号
            string payment_type      = Request.QueryString["payment_type"];                       //支付类型
            string subject           = Request.QueryString["subject"];                            //商品名称,用户存放用户ID
            string subject_UnEncrypt = Shove._Security.Encrypt.UnEncryptString(PF.GetCallCert(), subject);
            double total_fee         = double.Parse(Request.QueryString["total_fee"].ToString()); //支付金额
            string seller_email      = Request.QueryString["seller_email"];                       //卖家账号

            if (seller_email != so["OnlinePay_Alipay_UserName"].ToString(""))
            {
                new Log("System").Write("在线支付:收款帐号不匹配!");

                PF.GoError(ErrorNumber.Unknow, "支付用户信息验证失败", this.GetType().BaseType.FullName);

                return;
            }

            if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_FINISHED")   //验证支付发过来的消息,签名是否正确
            {
                Users user;

                if (_User == null)
                {
                    user = new Users(_Site.ID)[_Site.ID, Shove._Convert.StrToLong(subject_UnEncrypt, -1)];
                }
                else
                {
                    user = new Users(_Site.ID)[_Site.ID, _User.ID];
                }

                if (user == null)
                {
                    //PF.GoError(ErrorNumber.Unknow, "异常用户数据", this.GetType().BaseType.FullName);

                    new Log("System").Write("在线支付:异常用户数据!");

                    this.Response.Write("<script language='javascript'>window.top.location.href='" + Shove._Web.Utility.GetUrl() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");

                    return;
                }

                if (_User == null)
                {
                    _User = new Users(_Site.ID)[_Site.ID, user.ID];

                    //string ReturnDescription = "";
                    //_User.LoginDirect(ref ReturnDescription);
                }

                if (WriteUserAccount(_User, out_trade_no.ToString(), total_fee.ToString(), "系统交易号:" + out_trade_no.ToString() + ",支付宝交易号:" + trade_no.ToString()))
                {
                    this.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/OK.aspx'</script>");

                    return;
                }
                else
                {
                    new Log("System").Write("在线支付:写入返回数据出错!");

                    this.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");

                    return;
                }
            }
            else
            {
                new Log("System").Write("在线支付:系统交易号:" + out_trade_no + " 支付宝交易号:" + trade_no + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + responseTxt.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + trade_status.ToString() + " 生成校验码:" + mysign.ToString() + "返回校验码:" + sign.ToString());
                this.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");

                return;
            }
        }
        catch (Exception Ex)
        {
            new Log("System").Write("在线支付:" + Ex.Message + " -- 接收数据异常!");

            this.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");

            return;
        }
    }
        private void DownLoadResult()   //下载结果
        {
            //业务参数赋值;
            string partner        = OnlinePay_Alipay_ForUserDistill_UserNumber;       //partner		合作伙伴ID			保留字段
            string key            = OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut; //partner账户的支付宝安全校验码
            string gateway        = "https://www.alipay.com/cooperate/gateway.do";
            string service        = "bptb_result_file";
            string sign           = "";
            string _input_charset = "GB2312";                                                  //编码类型
            string biz_type       = "d_sale";                                                  //业务类型

            Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

            //获取今日之前的处理中的最大日期,按天分组
            DataTable dt = Shove.Database.MSSQL.Select(ConnectionString, " select max([DateTime]) as [DateTime] from T_UserDistillPaymentFiles where Result = 0 and datediff(Day,[DateTime],getdate())>0 group by convert(varchar(8),[DateTime],112)");

            if (dt == null)
            {
                //写日志
                log.Write("获取今日之前的处理中的最大日期,按天分组出错.");
                return;
            }

            foreach (DataRow dr in dt.Rows)
            {
                string   fileName = "";
                DateTime time     = Shove._Convert.StrToDateTime(dr["DateTime"].ToString(), DateTime.Now.ToShortDateString());

                fileName = "result" + time.ToString("yyyyMMdd");   //文件名的格式

                //string ContentType = "application/octet-stream";
                // 生成需要上传的二进制数组
                CreateBytes cb = new CreateBytes();

                // 所有表单数据
                ArrayList bytesArray = new ArrayList();

                // 普通表单
                string[] Sortedstr = ap.GetDownloadParams
                                     (
                    service,
                    _input_charset,
                    partner,
                    biz_type
                                     );

                string[] downFields = new string[Sortedstr.Length + 1];
                int      i          = 0;

                char[] delimiterChars = { '=' };

                for (i = 0; i < Sortedstr.Length; i++)
                {
                    string fieldName  = Sortedstr[i].Split(delimiterChars)[0];
                    string fieldValue = Sortedstr[i].Split(delimiterChars)[1];

                    bytesArray.Add(cb.CreateFieldData(fieldName, fieldValue));
                    downFields[i] = fieldName + "=" + fieldValue;
                }

                string date = time.ToString("yyyyMMdd");
                bytesArray.Add(cb.CreateFieldData("date", date));
                downFields[i] = "date" + "=" + date;
                sign          = AlipayCommon.GetSign(downFields, key).Trim();
                bytesArray.Add(cb.CreateFieldData("sign", sign));
                bytesArray.Add(cb.CreateFieldData("sign_type", "MD5"));

                // 合成所有表单并生成二进制数组
                byte[] bytes = cb.JoinBytes(bytesArray);

                // 返回的内容
                byte[] responseBytes;

                // 上传到指定Url
                bool uploaded = false;

                try
                {
                    uploaded = cb.UploadData(gateway, bytes, out responseBytes);
                }
                catch (Exception ex)
                {
                    log.Write("cb.UploadData出错." + ex.Message);
                    continue;
                }

                if (!uploaded)
                {
                    log.Write("cb.UploadData失败.");
                    continue;
                }

                //PathName = System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles\\" + pathname;
                string DownLoadFolder = System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles\\GetAlipayPayResultTask\\RESULT\\";


                #region 查检下载目录是否存在,不存在则创建
                if (!Directory.Exists(DownLoadFolder))
                {
                    try
                    {
                        Directory.CreateDirectory(DownLoadFolder);
                    }
                    catch
                    {
                        log.Write("创建下载文件目录失败.");
                        return;
                    }
                }
                #endregion

                //判断responseByte是否以PK开头(以PK开头说明可以下载)
                if (responseBytes[0] != 80 && responseBytes[1] != 75)
                {
                    log.Write("判断responseByte不是以PK开头");
                    continue;
                }


                try
                {
                    if (File.Exists(DownLoadFolder + fileName + ".zip"))
                    {
                        File.Delete(DownLoadFolder + fileName + ".zip");
                    }

                    using (FileStream file = new FileStream(DownLoadFolder + fileName + ".zip", FileMode.Create, FileAccess.Write, FileShare.Read))
                    {
                        file.Write(responseBytes, 0, responseBytes.Length);
                    }

                    //解压下载的结果数据包
                    UnZip(DownLoadFolder + fileName + ".zip", DownLoadFolder + fileName);

                    //解压出来的结果文件
                    string strpath = DownLoadFolder + fileName + "\\ALIPAY__RESULT.csv";

                    //保存返回结果数据
                    DataTable dtResult         = new DataTable("TableName");
                    int       dtResultColCount = 0;

                    //保存返回结果中的文件明细表
                    DataTable dtResultFileDetail         = new DataTable("dtResultFileDetail");
                    int       dtResultFileDetailColCount = 0;


                    string   strline;
                    string[] aryline;

                    System.IO.StreamReader mysr = new System.IO.StreamReader(strpath, Encoding.GetEncoding("GB2312"));
                    int resultFileRow           = 0;

                    #region 构建返回结果表 和 返回结果中的文件列表数据表
                    while ((strline = mysr.ReadLine()) != null)
                    {
                        aryline = strline.Split(new char[] { ',' });

                        if (resultFileRow < 2) //构建返回结果表(2行,第1行为标题,第2行为对应的数据)   头部2行
                        {
                            if (resultFileRow == 0)
                            {
                                dtResultColCount = aryline.Length;
                                for (int j = 0; j < aryline.Length; j++)
                                {
                                    DataColumn newCol = new DataColumn(aryline[j]);//付款日期,批次数,已处理批次个数,处理中批次个数
                                    dtResult.Columns.Add(newCol);
                                }
                            }

                            if (resultFileRow == 1)
                            {
                                DataRow newRow = dtResult.NewRow();
                                for (int j = 0; j < dtResultColCount; j++)
                                {
                                    newRow[j] = aryline[j];
                                }
                                dtResult.Rows.Add(newRow);
                            }
                        }
                        else  //构建文件列表数据表
                        {
                            if (resultFileRow == 2) //结果文件的行2:  批次名称,处理状态,处理成功笔数,处理失败笔数,成功付款总金额,失败付款总金额,处理日期,支付宝帐号,备注
                            {
                                dtResultFileDetailColCount = aryline.Length;
                                for (int j = 0; j < aryline.Length; j++)
                                {
                                    DataColumn newCol = new DataColumn(aryline[j]);
                                    dtResultFileDetail.Columns.Add(newCol);
                                }
                            }

                            if (resultFileRow >= 3) //获取:papx_20090416_p623225643.csv,已处理,2,0,2.00,0.00,20090417,[email protected],处理完成
                            {
                                DataRow newResultFileDetailRow = dtResultFileDetail.NewRow();
                                for (int j = 0; j < dtResultFileDetailColCount; j++)
                                {
                                    try
                                    {
                                        newResultFileDetailRow[j] = aryline[j];
                                    }
                                    catch
                                    {
                                        newResultFileDetailRow[j] = "";
                                    }
                                }
                                dtResultFileDetail.Rows.Add(newResultFileDetailRow);
                            }
                        }

                        resultFileRow++;
                    }
                    #endregion 结束  构建返回结果表 和 返回结果中的文件列表数据表


                    #region 循环处理返回结果中的文件列表的文件,以更新提款状态
                    foreach (DataRow curResultFileDetailRow in dtResultFileDetail.Rows) //循环每个提交的文件
                    {
                        string CSVFile = curResultFileDetailRow[0].ToString();          //获取文件名
                        CSVFile = CSVFile.Substring(0, CSVFile.IndexOf(".")) + ".zip".ToLower();

                        if ((curResultFileDetailRow[1].ToString() == "已处理") && (curResultFileDetailRow[8].ToString() == "处理完成"))
                        {
                            string FilePath = DownLoadFolder + fileName + "\\" + curResultFileDetailRow[0].ToString();

                            DataTable dtCSVDetail = GetDetail(FilePath);    //获取当前处理的文件的提款记录明细数据

                            //循环处理当前CSV文件中的所有明细
                            foreach (DataRow drCSVDetail in dtCSVDetail.Rows)
                            {
                                if (drCSVDetail[9].ToString().ToLower() == "s")//成功标记
                                {
                                    //派款成功,更新状态标记
                                    long   distillID         = Shove._Convert.StrToLong(drCSVDetail[0].ToString(), -1);
                                    int    returnValue       = 0;
                                    string returnDescription = "";

                                    if (DAL.Procedures.P_UserDistillPayByAlipaySuccess(ConnectionString, 1, distillID, 0, ref returnValue, ref returnDescription) < 0)
                                    {
                                        log.Write("派款成功,P_UserDistillPayByAlipaySuccessAndUpdate状态更新失败.");
                                        continue;
                                    }
                                    if (returnValue < 0)
                                    {
                                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog(ConnectionString, "出错!提款ID:" + distillID + "派款成功,但状态更新失败:" + returnDescription);
                                        continue;
                                    }
                                }
                                else
                                {
                                    //支付没有成功,返还会员提款的金额
                                    long   distillID = Shove._Convert.StrToLong(drCSVDetail[0].ToString(), -1);
                                    string memo      = "批量付款到银行卡失败:";//失败原因
                                    try
                                    {
                                        memo += drCSVDetail[12].ToString();
                                        memo  = memo.Length > 50 ? memo.Substring(0, 50) : memo;
                                    }
                                    catch { }

                                    int    returnValue       = 0;
                                    string returnDescription = "";

                                    if (DAL.Procedures.P_UserDistillPayByAlipayUnsuccess(ConnectionString, 1, distillID, memo, ref returnValue, ref returnDescription) < 0)
                                    {
                                        log.Write("派款失败,P_UserDistillPayByAlipayUnsuccessAndQuash状态更新失败.");
                                        continue;
                                    }
                                    if (returnValue < 0)
                                    {
                                        log.Write("派款成功,但状态更新失败:" + returnDescription);
                                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog(ConnectionString, "出错!提款ID:" + distillID + "派款成功,但状态更新失败:" + returnDescription);
                                        continue;
                                    }
                                }
                            }//end foreach (DataRow drCSVDetail in dtCSVDetail.Rows)


                            if (Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, "Update T_UserDistillPaymentFiles set [Result] = 1 where  Lower([FileName]) = '" + CSVFile + "'") < 0)
                            {
                                log.Write("更新T_UserDistillPaymentFiles出错.");
                            }
                        }//end if ((curResultFileDetailRow[1].ToString() == "已处理") && (curResultFileDetailRow[8].ToString() == "处理完成"))
                        else if (curResultFileDetailRow[1].ToString() == "处理中")
                        {
                            continue;
                        }
                        else
                        {
                            //文件格式错误的处理
                            log.Write("文件格式错误的处理,未知处理结果状态.");
                        }
                    }//foreach (DataRow curResultFileDetailRow in dtResultFileDetail.Rows)
                    #endregion 循环处理返回结果中的文件列表的文件,以更新提款状态
                }
                catch (Exception ex)
                {
                    log.Write("未知异常3:" + ex.Message);
                }
            } //end foreach (DataRow dr in dt.Rows)
        }
    protected void OnlinePaymentAlipayToBank(int Count, double SumMoney, string Body, string UserDistillIDs)
    {
        SystemOptions options = new SystemOptions();

        this.partner          = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
        this.key              = options["OnlinePay_Alipay_ForUserDistill_MD5Key"].ToString("");
        this.gateway          = options["MemberSharing_Alipay_Gateway"].ToString("");
        this.service          = "bptb_pay_file";
        this.sign_type        = "MD5";
        this._input_charset   = "GB2312";
        this.file_digest_type = "MD5";
        this.biz_type         = "d_sale";
        this.agentID          = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
        Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
        DateTime            now    = DateTime.Now;
        string str      = "";
        string path     = "";
        string fileName = "";
        string str4     = "";
        int    index    = 0;

        if (((Body != "") && (Count > 0)) && (SumMoney > 0.0))
        {
            string str5 = now.ToString("yyyyMMdd");
            string str7 = "日期,总金额,总笔数,支付宝帐号(Email)\r\n";
            Body = (str7 + str5 + "," + SumMoney.ToString() + "," + Count.ToString() + "," + this.partner + "\r\n") + "商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注\r\n" + Body;
            Random random = new Random();
            string str8   = (random.Next(1, 0x3e7).ToString() + now.Hour.ToString() + now.Minute.ToString() + now.Second.ToString()).PadLeft(9, '0');
            str      = "PAPX_" + str5 + "_P" + str8 + ".csv".ToLower();
            path     = base.MapPath("../App_Log/Admin/AlipayPayment/PABX/" + str).ToLower();
            fileName = "PAPX_" + str5 + "_P" + str8 + ".Zip".ToLower();
            str4     = base.MapPath("../App_Log/Admin/AlipayPayment/PABX/" + fileName).ToLower();
            if (!System.IO.File.Exists(path))
            {
                try
                {
                    if (!Shove._IO.File.WriteFile(path, Body))
                    {
                        Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入失败:" + path);
                        JavaScript.Alert(this.Page, "CSV文件写入失败");
                        return;
                    }
                    if (System.IO.File.Exists(path))
                    {
                        if (System.IO.File.Exists(str4))
                        {
                            goto Label_0388;
                        }
                        try
                        {
                            Shove._IO.File.Compress(path, str4);
                            goto Label_0388;
                        }
                        catch
                        {
                            Procedures.P_UserDistillPayByAlipayWriteLog("文件压缩出现异常:" + path);
                            JavaScript.Alert(this.Page, "文件压缩出现异常");
                            return;
                        }
                    }
                    Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件不存在(1):" + path);
                    JavaScript.Alert(this.Page, "CSV文件不存在");
                    return;
                }
                catch
                {
                    Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入异常:" + path);
                    JavaScript.Alert(this.Page, "CSV文件写入异常");
                    return;
                }
            }
            JavaScript.Alert(this.Page, "文件写已存在");
            return;
        }
Label_0388:
        if (!System.IO.File.Exists(str4))
        {
            Procedures.P_UserDistillPayByAlipayWriteLog("ZIP文件不存在(2):" + path);
            JavaScript.Alert(this.Page, "ZIP文件不存在");
        }
        else
        {
            byte[] buffer4;
            byte[] date = System.IO.File.ReadAllBytes(str4);
            this.digest_bptb_pay_file = Shove.Alipay.Alipay.GetMD5(date, this._input_charset);
            string[]   strArray4   = alipay.GetUploadParams(this.service, this._input_charset, this.partner, this.file_digest_type, this.biz_type, this.agentID);
            FileStream stream      = new FileStream(str4, FileMode.Open, FileAccess.Read, FileShare.Read);
            string     contentType = "application/octet-stream";
            byte[]     buffer      = new byte[stream.Length];
            stream.Read(buffer, 0, Convert.ToInt32(stream.Length));
            stream.Close();
            CreateBytes bytes      = new CreateBytes();
            ArrayList   byteArrays = new ArrayList();
            string[]    fields     = new string[strArray4.Length + 1];
            char[]      separator  = new char[] { '=' };
            index = 0;
            while (index < strArray4.Length)
            {
                string fieldName  = strArray4[index].Split(separator)[0];
                string fieldValue = strArray4[index].Split(separator)[1];
                byteArrays.Add(bytes.CreateFieldData(fieldName, fieldValue));
                fields[index] = fieldName + "=" + fieldValue;
                index++;
            }
            byteArrays.Add(bytes.CreateFieldData("digest_bptb_pay_file", this.digest_bptb_pay_file));
            fields[index] = "digest_bptb_pay_file=" + this.digest_bptb_pay_file;
            this.sign     = AlipayCommon.GetSign(fields, this.key).Trim();
            byteArrays.Add(bytes.CreateFieldData("sign", this.sign));
            byteArrays.Add(bytes.CreateFieldData("sign_type", "MD5"));
            byteArrays.Add(bytes.CreateFieldData("bptb_pay_file", str4, contentType, buffer));
            byte[] buffer3 = bytes.JoinBytes(byteArrays);
            if (!bytes.UploadData(this.gateway, buffer3, out buffer4))
            {
                Procedures.P_UserDistillPayByAlipayWriteLog("上传到指定Url失败:" + path);
                try
                {
                    System.IO.File.Delete(path);
                    System.IO.File.Delete(str4);
                }
                catch
                {
                }
                JavaScript.Alert(this.Page, "上传支付数据到指定Url失败!");
            }
            else
            {
                string str12 = Encoding.Default.GetString(buffer4);
                if (str12.IndexOf("上传成功") >= 0)
                {
                    int    returnValue       = 0;
                    string returnDescription = "";
                    if (Procedures.P_UserDistillPayByAlipay(base._User.ID, fileName, UserDistillIDs, 2, ref returnValue, ref returnDescription) < 0)
                    {
                        Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
                    }
                    if (returnDescription != "")
                    {
                        Procedures.P_UserDistillPayByAlipayWriteLog("把上传的支付明细写入数据库(FileName)和更新状态出错:" + returnDescription);
                        JavaScript.Alert(this.Page, "出错:" + returnDescription);
                        this.BindData(true);
                    }
                    else
                    {
                        JavaScript.Alert(this.Page, str12 + "银行处理需要到明天才有结果,请耐心等待处理结果!");
                        this.BindData(true);
                    }
                }
                else
                {
                    Procedures.P_UserDistillPayByAlipayWriteLog("上传支付到银行明细失败:" + str12);
                    JavaScript.Alert(this.Page, str12.Replace("\n", "").Replace("\r", ""));
                }
            }
        }
    }
 protected void OnlinePaymentAlipayToBank(int Count, double SumMoney, string Body, string UserDistillIDs)
 {
     SystemOptions options = new SystemOptions();
     this.partner = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
     this.key = options["OnlinePay_Alipay_ForUserDistill_MD5Key"].ToString("");
     this.gateway = options["MemberSharing_Alipay_Gateway"].ToString("");
     this.service = "bptb_pay_file";
     this.sign_type = "MD5";
     this._input_charset = "GB2312";
     this.file_digest_type = "MD5";
     this.biz_type = "d_sale";
     this.agentID = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
     Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
     DateTime now = DateTime.Now;
     string str = "";
     string path = "";
     string fileName = "";
     string str4 = "";
     int index = 0;
     if (((Body != "") && (Count > 0)) && (SumMoney > 0.0))
     {
         string str5 = now.ToString("yyyyMMdd");
         string str7 = "日期,总金额,总笔数,支付宝帐号(Email)\r\n";
         Body = (str7 + str5 + "," + SumMoney.ToString() + "," + Count.ToString() + "," + this.partner + "\r\n") + "商户流水号,收款银行户名,收款银行帐号,收款开户银行,收款银行所在省份,收款银行所在市,收款支行名称,金额,对公对私标志,备注\r\n" + Body;
         Random random = new Random();
         string str8 = (random.Next(1, 0x3e7).ToString() + now.Hour.ToString() + now.Minute.ToString() + now.Second.ToString()).PadLeft(9, '0');
         str = "PAPX_" + str5 + "_P" + str8 + ".csv".ToLower();
         path = base.MapPath("../App_Log/Admin/AlipayPayment/PABX/" + str).ToLower();
         fileName = "PAPX_" + str5 + "_P" + str8 + ".Zip".ToLower();
         str4 = base.MapPath("../App_Log/Admin/AlipayPayment/PABX/" + fileName).ToLower();
         if (!System.IO.File.Exists(path))
         {
             try
             {
                 if (!Shove._IO.File.WriteFile(path, Body))
                 {
                     Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入失败:" + path);
                     JavaScript.Alert(this.Page, "CSV文件写入失败");
                     return;
                 }
                 if (System.IO.File.Exists(path))
                 {
                     if (System.IO.File.Exists(str4))
                     {
                         goto Label_0388;
                     }
                     try
                     {
                         Shove._IO.File.Compress(path, str4);
                         goto Label_0388;
                     }
                     catch
                     {
                         Procedures.P_UserDistillPayByAlipayWriteLog("文件压缩出现异常:" + path);
                         JavaScript.Alert(this.Page, "文件压缩出现异常");
                         return;
                     }
                 }
                 Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件不存在(1):" + path);
                 JavaScript.Alert(this.Page, "CSV文件不存在");
                 return;
             }
             catch
             {
                 Procedures.P_UserDistillPayByAlipayWriteLog("CSV文件写入异常:" + path);
                 JavaScript.Alert(this.Page, "CSV文件写入异常");
                 return;
             }
         }
         JavaScript.Alert(this.Page, "文件写已存在");
         return;
     }
     Label_0388:
     if (!System.IO.File.Exists(str4))
     {
         Procedures.P_UserDistillPayByAlipayWriteLog("ZIP文件不存在(2):" + path);
         JavaScript.Alert(this.Page, "ZIP文件不存在");
     }
     else
     {
         byte[] buffer4;
         byte[] date = System.IO.File.ReadAllBytes(str4);
         this.digest_bptb_pay_file = Shove.Alipay.Alipay.GetMD5(date, this._input_charset);
         string[] strArray4 = alipay.GetUploadParams(this.service, this._input_charset, this.partner, this.file_digest_type, this.biz_type, this.agentID);
         FileStream stream = new FileStream(str4, FileMode.Open, FileAccess.Read, FileShare.Read);
         string contentType = "application/octet-stream";
         byte[] buffer = new byte[stream.Length];
         stream.Read(buffer, 0, Convert.ToInt32(stream.Length));
         stream.Close();
         CreateBytes bytes = new CreateBytes();
         ArrayList byteArrays = new ArrayList();
         string[] fields = new string[strArray4.Length + 1];
         char[] separator = new char[] { '=' };
         index = 0;
         while (index < strArray4.Length)
         {
             string fieldName = strArray4[index].Split(separator)[0];
             string fieldValue = strArray4[index].Split(separator)[1];
             byteArrays.Add(bytes.CreateFieldData(fieldName, fieldValue));
             fields[index] = fieldName + "=" + fieldValue;
             index++;
         }
         byteArrays.Add(bytes.CreateFieldData("digest_bptb_pay_file", this.digest_bptb_pay_file));
         fields[index] = "digest_bptb_pay_file=" + this.digest_bptb_pay_file;
         this.sign = AlipayCommon.GetSign(fields, this.key).Trim();
         byteArrays.Add(bytes.CreateFieldData("sign", this.sign));
         byteArrays.Add(bytes.CreateFieldData("sign_type", "MD5"));
         byteArrays.Add(bytes.CreateFieldData("bptb_pay_file", str4, contentType, buffer));
         byte[] buffer3 = bytes.JoinBytes(byteArrays);
         if (!bytes.UploadData(this.gateway, buffer3, out buffer4))
         {
             Procedures.P_UserDistillPayByAlipayWriteLog("上传到指定Url失败:" + path);
             try
             {
                 System.IO.File.Delete(path);
                 System.IO.File.Delete(str4);
             }
             catch
             {
             }
             JavaScript.Alert(this.Page, "上传支付数据到指定Url失败!");
         }
         else
         {
             string str12 = Encoding.Default.GetString(buffer4);
             if (str12.IndexOf("上传成功") >= 0)
             {
                 int returnValue = 0;
                 string returnDescription = "";
                 if (Procedures.P_UserDistillPayByAlipay(base._User.ID, fileName, UserDistillIDs, 2, ref returnValue, ref returnDescription) < 0)
                 {
                     Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
                 }
                 if (returnDescription != "")
                 {
                     Procedures.P_UserDistillPayByAlipayWriteLog("把上传的支付明细写入数据库(FileName)和更新状态出错:" + returnDescription);
                     JavaScript.Alert(this.Page, "出错:" + returnDescription);
                     this.BindData(true);
                 }
                 else
                 {
                     JavaScript.Alert(this.Page, str12 + "银行处理需要到明天才有结果,请耐心等待处理结果!");
                     this.BindData(true);
                 }
             }
             else
             {
                 Procedures.P_UserDistillPayByAlipayWriteLog("上传支付到银行明细失败:" + str12);
                 JavaScript.Alert(this.Page, str12.Replace("\n", "").Replace("\r", ""));
             }
         }
     }
 }
 protected void OnlinePaymentAlipayToAlipay(int Count, double SumMoney, string Body, string UserDistillIDs)
 {
     SystemOptions options = new SystemOptions();
     this.partner = options["OnlinePay_Alipay_ForUserDistill_UserNumber"].ToString("");
     this.key = options["OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut"].ToString("");
     string email = options["OnlinePay_Alipay_ForUserDistill_UserName"].ToString("");
     string str2 = "深圳天维掌通技术有限公司";
     string gateway = "https://www.alipay.com/cooperate/gateway.do?";
     string str4 = "utf-8";
     string service = "batch_trans_notify";
     string str6 = "MD5";
     DateTime now = DateTime.Now;
     string str7 = now.ToString("yyyyMMdd");
     Random random = new Random();
     string str8 = random.Next(1, 0x63).ToString().PadLeft(2, '0');
     string fileName = now.ToString("yyyyMMddhhmmss") + str8;
     string str10 = SumMoney.ToString();
     string str11 = Count.ToString();
     string str12 = Body;
     string str13 = Utility.GetUrl() + "/Admin/OnlinePayment/Alipay/AlipayNotify.aspx";
     int returnValue = 0;
     string returnDescription = "";
     if (Procedures.P_UserDistillPayByAlipay(base._User.ID, fileName, UserDistillIDs, 1, ref returnValue, ref returnDescription) < 0)
     {
         Procedures.P_UserDistillPayByAlipayWriteLog("提款ID:" + UserDistillIDs + "写入数据库(FileName)和更新状态失败。");
     }
     if (returnDescription != "")
     {
         JavaScript.Alert(this.Page, "数据更新错误:" + returnDescription);
     }
     string url = new Shove.Alipay.Alipay().CreatUrl(gateway, service, this.partner, str6, fileName, str2, str10, str11, email, str7, str12, this.key, str13, str4);
     base.Response.Redirect(url, true);
 }
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         string charset = "utf-8";
         string notifyService = "notify_verify";
         string sellerEmail = this.so["OnlinePay_Alipay_UserName"].ToString("");
         string notifyID = base.Request.QueryString["notify_id"];
         int notifyType = 2;
         Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
         string str5 = alipay.Get_Http(notifyService, notifyID, sellerEmail, charset, notifyType, 0x1d4c0);
         string[] strArray2 = Alipay.Gateway.Utility.BubbleSort(base.Request.QueryString.AllKeys);
         StringBuilder builder = new StringBuilder();
         for (int i = 0; i < strArray2.Length; i++)
         {
             if ((!string.IsNullOrEmpty(strArray2[i]) && (base.Request.QueryString[strArray2[i]] != "")) && ((strArray2[i] != "sign") && (strArray2[i] != "sign_type")))
             {
                 if (i == (strArray2.Length - 1))
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.QueryString[strArray2[i]]);
                 }
                 else
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.QueryString[strArray2[i]] + "&");
                 }
             }
         }
         string str6 = alipay.GetMD5(builder.ToString(), sellerEmail, charset);
         string str7 = base.Request.QueryString["sign"];
         string str8 = base.Request.QueryString["trade_status"];
         string str9 = base.Request.QueryString["trade_no"];
         string str10 = base.Request.QueryString["out_trade_no"];
         string text1 = base.Request.QueryString["payment_type"];
         string d = base.Request.QueryString["subject"];
         string str = Encrypt.UnEncryptString(PF.GetCallCert(), d);
         double num3 = double.Parse(base.Request.QueryString["total_fee"].ToString());
         string str13 = base.Request.QueryString["seller_email"];
         if (str13 != this.so["OnlinePay_Alipay_UserName"].ToString(""))
         {
             new Log("System").Write("在线支付:收款帐号不匹配!");
             PF.GoError(1, "支付用户信息验证失败", base.GetType().BaseType.FullName);
         }
         else if (((str6 == str7) && (str5 == "true")) && (str8 == "TRADE_FINISHED"))
         {
             Users users;
             if (base._User == null)
             {
                 users = new Users(base._Site.ID)[base._Site.ID, _Convert.StrToLong(str, -1L)];
             }
             else
             {
                 users = new Users(base._Site.ID)[base._Site.ID, base._User.ID];
             }
             if (users == null)
             {
                 new Log("System").Write("在线支付:异常用户数据!");
                 base.Response.Write("<script language='javascript'>window.top.location.href='" + Shove._Web.Utility.GetUrl() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
             }
             else
             {
                 if (base._User == null)
                 {
                     base._User = new Users(base._Site.ID)[base._Site.ID, users.ID];
                 }
                 if (this.WriteUserAccount(base._User, str10.ToString(), num3.ToString(), "系统交易号:" + str10.ToString() + ",支付宝交易号:" + str9.ToString()))
                 {
                     base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/OK.aspx'</script>");
                 }
                 else
                 {
                     new Log("System").Write("在线支付:写入返回数据出错!");
                     base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
                 }
             }
         }
         else
         {
             new Log("System").Write("在线支付:系统交易号:" + str10 + " 支付宝交易号:" + str9 + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + str5.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + str8.ToString() + " 生成校验码:" + str6.ToString() + "返回校验码:" + str7.ToString());
             base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
         }
     }
     catch (Exception exception)
     {
         new Log("System").Write("在线支付:" + exception.Message + " -- 接收数据异常!");
         base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
     }
 }
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         string charset             = "utf-8";
         string notifyService       = "notify_verify";
         string sellerEmail         = this.so["OnlinePay_Alipay_UserName"].ToString("");
         string notifyID            = base.Request.QueryString["notify_id"];
         int    notifyType          = 2;
         Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
         string        str5         = alipay.Get_Http(notifyService, notifyID, sellerEmail, charset, notifyType, 0x1d4c0);
         string[]      strArray2    = Alipay.Gateway.Utility.BubbleSort(base.Request.QueryString.AllKeys);
         StringBuilder builder      = new StringBuilder();
         for (int i = 0; i < strArray2.Length; i++)
         {
             if ((!string.IsNullOrEmpty(strArray2[i]) && (base.Request.QueryString[strArray2[i]] != "")) && ((strArray2[i] != "sign") && (strArray2[i] != "sign_type")))
             {
                 if (i == (strArray2.Length - 1))
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.QueryString[strArray2[i]]);
                 }
                 else
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.QueryString[strArray2[i]] + "&");
                 }
             }
         }
         string str6  = alipay.GetMD5(builder.ToString(), sellerEmail, charset);
         string str7  = base.Request.QueryString["sign"];
         string str8  = base.Request.QueryString["trade_status"];
         string str9  = base.Request.QueryString["trade_no"];
         string str10 = base.Request.QueryString["out_trade_no"];
         string text1 = base.Request.QueryString["payment_type"];
         string d     = base.Request.QueryString["subject"];
         string str   = Encrypt.UnEncryptString(PF.GetCallCert(), d);
         double num3  = double.Parse(base.Request.QueryString["total_fee"].ToString());
         string str13 = base.Request.QueryString["seller_email"];
         if (str13 != this.so["OnlinePay_Alipay_UserName"].ToString(""))
         {
             new Log("System").Write("在线支付:收款帐号不匹配!");
             PF.GoError(1, "支付用户信息验证失败", base.GetType().BaseType.FullName);
         }
         else if (((str6 == str7) && (str5 == "true")) && (str8 == "TRADE_FINISHED"))
         {
             Users users;
             if (base._User == null)
             {
                 users = new Users(base._Site.ID)[base._Site.ID, _Convert.StrToLong(str, -1L)];
             }
             else
             {
                 users = new Users(base._Site.ID)[base._Site.ID, base._User.ID];
             }
             if (users == null)
             {
                 new Log("System").Write("在线支付:异常用户数据!");
                 base.Response.Write("<script language='javascript'>window.top.location.href='" + Shove._Web.Utility.GetUrl() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
             }
             else
             {
                 if (base._User == null)
                 {
                     base._User = new Users(base._Site.ID)[base._Site.ID, users.ID];
                 }
                 if (this.WriteUserAccount(base._User, str10.ToString(), num3.ToString(), "系统交易号:" + str10.ToString() + ",支付宝交易号:" + str9.ToString()))
                 {
                     base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/OK.aspx'</script>");
                 }
                 else
                 {
                     new Log("System").Write("在线支付:写入返回数据出错!");
                     base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
                 }
             }
         }
         else
         {
             new Log("System").Write("在线支付:系统交易号:" + str10 + " 支付宝交易号:" + str9 + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + str5.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + str8.ToString() + " 生成校验码:" + str6.ToString() + "返回校验码:" + str7.ToString());
             base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
         }
     }
     catch (Exception exception)
     {
         new Log("System").Write("在线支付:" + exception.Message + " -- 接收数据异常!");
         base.Response.Write("<script language='javascript'>window.top.location.href='http://" + Shove._Web.Utility.GetUrlWithoutHttp() + "/Home/Room/MyIcaile.aspx?SubPage=OnlinePay/Fail.aspx'</script>");
     }
 }
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         string charset             = "utf-8";
         string notifyService       = "notify_verify";
         string sellerEmail         = this.so["OnlinePay_Alipay_UserName"].ToString("");
         string notifyID            = base.Request.Form["notify_id"];
         int    notifyType          = 2;
         Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
         string        str5         = alipay.Get_Http(notifyService, notifyID, sellerEmail, charset, notifyType, 0x1d4c0);
         string[]      strArray2    = Utility.BubbleSort(base.Request.Form.AllKeys);
         StringBuilder builder      = new StringBuilder();
         for (int i = 0; i < strArray2.Length; i++)
         {
             if (((base.Request.Form[strArray2[i]] != "") && (strArray2[i] != "sign")) && (strArray2[i] != "sign_type"))
             {
                 if (i == (strArray2.Length - 1))
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.Form[strArray2[i]]);
                 }
                 else
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.Form[strArray2[i]] + "&");
                 }
             }
         }
         string str6  = alipay.GetMD5(builder.ToString(), sellerEmail, charset);
         string str7  = base.Request.Form["sign"];
         string str8  = base.Request.Form["trade_status"];
         string str9  = base.Request.Form["trade_no"];
         string str10 = base.Request.Form["out_trade_no"];
         string d     = base.Request.Form["subject"];
         string str   = Encrypt.UnEncryptString(PF.GetCallCert(), d);
         double num3  = _Convert.StrToDouble(base.Request.Form["total_fee"].ToString(), 0.0);
         string str13 = base.Request.Form["seller_email"];
         if (str13 != this.so["OnlinePay_Alipay_UserName"].ToString(""))
         {
             new Log("System").Write("在线支付:支付用户信息验证失败!(Notify)");
             base.Response.Write("fail");
             base.Response.End();
         }
         else if (((str6 == str7) && (str5 == "true")) && (str8 == "TRADE_FINISHED"))
         {
             if (base._User == null)
             {
                 base._User = new Users(base._Site.ID)[base._Site.ID, _Convert.StrToLong(str, -1L)];
                 if (base._User == null)
                 {
                     new Log("System").Write("在线支付:用户信息校验错误(Notify)");
                     base.Response.Write("fail");
                     base.Response.End();
                     return;
                 }
             }
             if (this.WriteUserAccount(base._User, str10.ToString(), num3.ToString(), "系统交易号:" + str10.ToString() + ",支付宝交易号:" + str9.ToString()))
             {
                 base.Response.Write("success");
             }
             else
             {
                 new Log("System").Write("在线支付:写入返回数据出错!(Notify)");
                 base.Response.Write("fail");
                 base.Response.End();
             }
         }
         else
         {
             new Log("System").Write("在线支付:(Notify)系统交易号:" + str10 + " 支付宝交易号:" + str9 + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + str5.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + str8.ToString() + " 生成校验码:" + str6.ToString() + "返回校验码:" + str7.ToString());
             base.Response.Write("fail");
             base.Response.End();
         }
     }
     catch (Exception exception)
     {
         new Log("System").Write(exception.Message);
         base.Response.Write("fail");
         base.Response.End();
     }
 }
        private void DownLoadResult()	//下载结果
        {
            //业务参数赋值;
            string partner = OnlinePay_Alipay_ForUserDistill_UserNumber;        //partner		合作伙伴ID			保留字段
            string key = OnlinePay_Alipay_ForUserDistill_MD5Key_ForPayOut;      //partner账户的支付宝安全校验码
            string gateway = "https://www.alipay.com/cooperate/gateway.do";
            string service = "bptb_result_file";
            string sign = "";
            string _input_charset = "GB2312";                                                  //编码类型
            string biz_type = "d_sale";                                                        //业务类型

            Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

            //获取今日之前的处理中的最大日期,按天分组
            DataTable dt = Shove.Database.MSSQL.Select(ConnectionString, " select max([DateTime]) as [DateTime] from T_UserDistillPaymentFiles where Result = 0 and datediff(Day,[DateTime],getdate())>0 group by convert(varchar(8),[DateTime],112)");

            if (dt == null)
            {
                //写日志
                log.Write("获取今日之前的处理中的最大日期,按天分组出错.");
                return;
            }

            foreach (DataRow dr in dt.Rows)
            {
                string fileName = "";
                DateTime time = Shove._Convert.StrToDateTime(dr["DateTime"].ToString(), DateTime.Now.ToShortDateString());

                fileName = "result" + time.ToString("yyyyMMdd");   //文件名的格式

                //string ContentType = "application/octet-stream";
                // 生成需要上传的二进制数组        
                CreateBytes cb = new CreateBytes();

                // 所有表单数据
                ArrayList bytesArray = new ArrayList();

                // 普通表单
                string[] Sortedstr = ap.GetDownloadParams
                    (
                    service,
                    _input_charset,
                    partner,
                    biz_type
                    );

                string[] downFields = new string[Sortedstr.Length + 1];
                int i = 0;

                char[] delimiterChars = { '=' };

                for (i = 0; i < Sortedstr.Length; i++)
                {
                    string fieldName = Sortedstr[i].Split(delimiterChars)[0];
                    string fieldValue = Sortedstr[i].Split(delimiterChars)[1];

                    bytesArray.Add(cb.CreateFieldData(fieldName, fieldValue));
                    downFields[i] = fieldName + "=" + fieldValue;
                }

                string date = time.ToString("yyyyMMdd");
                bytesArray.Add(cb.CreateFieldData("date", date));
                downFields[i] = "date" + "=" + date;
                sign = AlipayCommon.GetSign(downFields, key).Trim();
                bytesArray.Add(cb.CreateFieldData("sign", sign));
                bytesArray.Add(cb.CreateFieldData("sign_type", "MD5"));

                // 合成所有表单并生成二进制数组
                byte[] bytes = cb.JoinBytes(bytesArray);

                // 返回的内容
                byte[] responseBytes;

                // 上传到指定Url
                bool uploaded = false;

                try
                {
                    uploaded = cb.UploadData(gateway, bytes, out responseBytes);
                }
                catch (Exception ex)
                {
                    log.Write("cb.UploadData出错." + ex.Message);
                    continue;
                }

                if (!uploaded)
                {
                    log.Write("cb.UploadData失败.");
                    continue;
                }

                //PathName = System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles\\" + pathname;
                string DownLoadFolder = System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles\\GetAlipayPayResultTask\\RESULT\\";


                #region 查检下载目录是否存在,不存在则创建
                if (!Directory.Exists(DownLoadFolder))
                {
                    try
                    {
                        Directory.CreateDirectory(DownLoadFolder);
                    }
                    catch
                    {
                        log.Write("创建下载文件目录失败.");
                        return;
                    }
                }
                #endregion

                //判断responseByte是否以PK开头(以PK开头说明可以下载)
                if (responseBytes[0] != 80 && responseBytes[1] != 75)
                {
                    log.Write("判断responseByte不是以PK开头");
                    continue;
                }


                try
                {
                    if (File.Exists(DownLoadFolder + fileName + ".zip"))
                    {
                        File.Delete(DownLoadFolder + fileName + ".zip");
                    }

                    using (FileStream file = new FileStream(DownLoadFolder + fileName + ".zip", FileMode.Create, FileAccess.Write, FileShare.Read))
                    {
                        file.Write(responseBytes, 0, responseBytes.Length);
                    }

                    //解压下载的结果数据包
                    UnZip(DownLoadFolder + fileName + ".zip", DownLoadFolder + fileName);

                    //解压出来的结果文件
                    string strpath = DownLoadFolder + fileName + "\\ALIPAY__RESULT.csv";

                    //保存返回结果数据
                    DataTable dtResult = new DataTable("TableName");
                    int dtResultColCount = 0;

                    //保存返回结果中的文件明细表
                    DataTable dtResultFileDetail = new DataTable("dtResultFileDetail");
                    int dtResultFileDetailColCount = 0;


                    string strline;
                    string[] aryline;

                    System.IO.StreamReader mysr = new System.IO.StreamReader(strpath, Encoding.GetEncoding("GB2312"));
                    int resultFileRow = 0;

                    #region 构建返回结果表 和 返回结果中的文件列表数据表
                    while ((strline = mysr.ReadLine()) != null)
                    {
                        aryline = strline.Split(new char[] { ',' });

                        if (resultFileRow < 2) //构建返回结果表(2行,第1行为标题,第2行为对应的数据)   头部2行 
                        {
                            if (resultFileRow == 0)
                            {
                                dtResultColCount = aryline.Length;
                                for (int j = 0; j < aryline.Length; j++)
                                {
                                    DataColumn newCol = new DataColumn(aryline[j]);//付款日期,批次数,已处理批次个数,处理中批次个数
                                    dtResult.Columns.Add(newCol);
                                }
                            }

                            if (resultFileRow == 1)
                            {
                                DataRow newRow = dtResult.NewRow();
                                for (int j = 0; j < dtResultColCount; j++)
                                {
                                    newRow[j] = aryline[j];
                                }
                                dtResult.Rows.Add(newRow);
                            }
                        }
                        else  //构建文件列表数据表
                        {
                            if (resultFileRow == 2) //结果文件的行2:  批次名称,处理状态,处理成功笔数,处理失败笔数,成功付款总金额,失败付款总金额,处理日期,支付宝帐号,备注
                            {
                                dtResultFileDetailColCount = aryline.Length;
                                for (int j = 0; j < aryline.Length; j++)
                                {
                                    DataColumn newCol = new DataColumn(aryline[j]);
                                    dtResultFileDetail.Columns.Add(newCol);
                                }
                            }

                            if (resultFileRow >= 3) //获取:papx_20090416_p623225643.csv,已处理,2,0,2.00,0.00,20090417,[email protected],处理完成
                            {
                                DataRow newResultFileDetailRow = dtResultFileDetail.NewRow();
                                for (int j = 0; j < dtResultFileDetailColCount; j++)
                                {
                                    try
                                    {
                                        newResultFileDetailRow[j] = aryline[j];
                                    }
                                    catch
                                    {
                                        newResultFileDetailRow[j] = "";
                                    }
                                }
                                dtResultFileDetail.Rows.Add(newResultFileDetailRow);
                            }
                        }

                        resultFileRow++;
                    }
                    #endregion 结束  构建返回结果表 和 返回结果中的文件列表数据表


                    #region 循环处理返回结果中的文件列表的文件,以更新提款状态
                    foreach (DataRow curResultFileDetailRow in dtResultFileDetail.Rows)  //循环每个提交的文件
                    {
                        string CSVFile = curResultFileDetailRow[0].ToString(); //获取文件名
                        CSVFile = CSVFile.Substring(0, CSVFile.IndexOf(".")) + ".zip".ToLower();

                        if ((curResultFileDetailRow[1].ToString() == "已处理") && (curResultFileDetailRow[8].ToString() == "处理完成"))
                        {
                            string FilePath = DownLoadFolder + fileName + "\\" + curResultFileDetailRow[0].ToString();

                            DataTable dtCSVDetail = GetDetail(FilePath);    //获取当前处理的文件的提款记录明细数据

                            //循环处理当前CSV文件中的所有明细
                            foreach (DataRow drCSVDetail in dtCSVDetail.Rows)
                            {
                                if (drCSVDetail[9].ToString().ToLower() == "s")//成功标记
                                {

                                    //派款成功,更新状态标记
                                    long distillID = Shove._Convert.StrToLong(drCSVDetail[0].ToString(), -1);
                                    int returnValue = 0;
                                    string returnDescription = "";

                                    if (DAL.Procedures.P_UserDistillPayByAlipaySuccess(ConnectionString, 1, distillID, 0, ref returnValue, ref returnDescription) < 0)
                                    {
                                        log.Write("派款成功,P_UserDistillPayByAlipaySuccessAndUpdate状态更新失败.");
                                        continue;
                                    }
                                    if (returnValue < 0)
                                    {
                                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog(ConnectionString, "出错!提款ID:" + distillID + "派款成功,但状态更新失败:" + returnDescription);
                                        continue;
                                    }


                                }
                                else
                                {
                                    //支付没有成功,返还会员提款的金额
                                    long distillID = Shove._Convert.StrToLong(drCSVDetail[0].ToString(), -1);
                                    string memo = "批量付款到银行卡失败:";//失败原因
                                    try
                                    {
                                        memo += drCSVDetail[12].ToString();
                                        memo = memo.Length > 50 ? memo.Substring(0, 50) : memo;
                                    }
                                    catch { }

                                    int returnValue = 0;
                                    string returnDescription = "";

                                    if (DAL.Procedures.P_UserDistillPayByAlipayUnsuccess(ConnectionString, 1, distillID, memo, ref returnValue, ref returnDescription) < 0)
                                    {
                                        log.Write("派款失败,P_UserDistillPayByAlipayUnsuccessAndQuash状态更新失败.");
                                        continue;
                                    }
                                    if (returnValue < 0)
                                    {
                                        log.Write("派款成功,但状态更新失败:" + returnDescription);
                                        DAL.Procedures.P_UserDistillPayByAlipayWriteLog(ConnectionString, "出错!提款ID:" + distillID + "派款成功,但状态更新失败:" + returnDescription);
                                        continue;
                                    }
                                }
                            }//end foreach (DataRow drCSVDetail in dtCSVDetail.Rows)


                            if (Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, "Update T_UserDistillPaymentFiles set [Result] = 1 where  Lower([FileName]) = '" + CSVFile + "'") < 0)
                            {
                                log.Write("更新T_UserDistillPaymentFiles出错.");
                            }
                        }//end if ((curResultFileDetailRow[1].ToString() == "已处理") && (curResultFileDetailRow[8].ToString() == "处理完成"))
                        else if (curResultFileDetailRow[1].ToString() == "处理中")
                        {
                            continue;
                        }
                        else
                        {
                            //文件格式错误的处理         
                            log.Write("文件格式错误的处理,未知处理结果状态.");

                        }
                    }//foreach (DataRow curResultFileDetailRow in dtResultFileDetail.Rows)
                    #endregion 循环处理返回结果中的文件列表的文件,以更新提款状态

                }
                catch (Exception ex)
                {
                    log.Write("未知异常3:" + ex.Message);
                }
            } //end foreach (DataRow dr in dt.Rows)

        }
Exemple #22
0
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //***************************************************************
            string _input_charset = "utf-8";
            string NotifyService  = "notify_verify";
            string SellerEmail    = so["OnlinePay_Alipay_UserName"].ToString("");//卖家支付宝名称(邮箱)

            string NotifyID = Request.Form["notify_id"];

            int NotifyType = 2;

            Shove.Alipay.Alipay ap = new Shove.Alipay.Alipay();

            //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
            string responseTxt = ap.Get_Http(NotifyService, NotifyID, SellerEmail, _input_charset, NotifyType, 120000);

            int i;
            NameValueCollection coll;
            //Load Form variables into NameValueCollection variable.
            coll = Request.Form;

            // Get names of all forms into a string array.
            String[] requestarr = coll.AllKeys;

            //进行排序;
            string[] Sortedstr = Alipay.Gateway.Utility.BubbleSort(requestarr);

            //构造待md5摘要字符串 ;

            StringBuilder prestr = new StringBuilder();

            for (i = 0; i < Sortedstr.Length; i++)
            {
                if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")
                {
                    if (i == Sortedstr.Length - 1)
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.Form[Sortedstr[i]]);
                    }
                    else
                    {
                        prestr.Append(Sortedstr[i] + "=" + Request.Form[Sortedstr[i]] + "&");
                    }
                }
            }

            string mysign = ap.GetMD5(prestr.ToString(), SellerEmail, _input_charset);

            string sign         = Request.Form["sign"];
            string trade_status = Request.Form["trade_status"];
            string trade_no     = Request.Form["trade_no"];          //支付宝交易号
            string out_trade_no = Request.Form["out_trade_no"];      //自己交易号
            //string payment_type = Request.Form["payment_type"];      //支付类型
            string subject           = Request.Form["subject"];      //商品名称,用户存放用户ID
            string subject_UnEncrypt = Shove._Security.Encrypt.UnEncryptString(PF.GetCallCert(), subject);
            //double total_fee = double.Parse(Request.Form["total_fee"].ToString());       //支付金额
            double total_fee    = Shove._Convert.StrToDouble(Request.Form["total_fee"].ToString(), 0); //支付金额
            string seller_email = Request.Form["seller_email"];                                        //卖家账号

            if (seller_email != so["OnlinePay_Alipay_UserName"].ToString(""))
            {
                new Log("System").Write("在线支付:支付用户信息验证失败!(Notify)");

                Response.Write("fail");     //返回给支付宝消息,失败
                Response.End();

                return;
            }

            if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_FINISHED")   //验证支付发过来的消息,签名是否正确
            {
                if (_User == null)
                {
                    _User = new Users(_Site.ID)[_Site.ID, Shove._Convert.StrToLong(subject_UnEncrypt, -1)];

                    if (_User == null)
                    {
                        new Log("System").Write("在线支付:用户信息校验错误(Notify)");

                        Response.Write("fail");     //返回给支付宝消息,失败
                        Response.End();

                        return;
                    }
                }

                if (WriteUserAccount(_User, out_trade_no.ToString(), total_fee.ToString(), "系统交易号:" + out_trade_no.ToString() + ",支付宝交易号:" + trade_no.ToString()))
                {
                    Response.Write("success");     //返回给支付宝消息,成功

                    return;
                }
                else
                {
                    new Log("System").Write("在线支付:写入返回数据出错!(Notify)");
                    Response.Write("fail");
                    Response.End();

                    return;
                }
            }
            else
            {
                new Log("System").Write("在线支付:(Notify)系统交易号:" + out_trade_no + " 支付宝交易号:" + trade_no + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + responseTxt.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + trade_status.ToString() + " 生成校验码:" + mysign.ToString() + "返回校验码:" + sign.ToString());
                Response.Write("fail");
                Response.End();

                return;
            }
        }
        catch (Exception Ex)
        {
            new Log("System").Write(Ex.Message);
            Response.Write("fail");
            Response.End();

            return;
        }
    }
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         string charset = "utf-8";
         string notifyService = "notify_verify";
         string sellerEmail = this.so["OnlinePay_Alipay_UserName"].ToString("");
         string notifyID = base.Request.Form["notify_id"];
         int notifyType = 2;
         Shove.Alipay.Alipay alipay = new Shove.Alipay.Alipay();
         string str5 = alipay.Get_Http(notifyService, notifyID, sellerEmail, charset, notifyType, 0x1d4c0);
         string[] strArray2 = Utility.BubbleSort(base.Request.Form.AllKeys);
         StringBuilder builder = new StringBuilder();
         for (int i = 0; i < strArray2.Length; i++)
         {
             if (((base.Request.Form[strArray2[i]] != "") && (strArray2[i] != "sign")) && (strArray2[i] != "sign_type"))
             {
                 if (i == (strArray2.Length - 1))
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.Form[strArray2[i]]);
                 }
                 else
                 {
                     builder.Append(strArray2[i] + "=" + base.Request.Form[strArray2[i]] + "&");
                 }
             }
         }
         string str6 = alipay.GetMD5(builder.ToString(), sellerEmail, charset);
         string str7 = base.Request.Form["sign"];
         string str8 = base.Request.Form["trade_status"];
         string str9 = base.Request.Form["trade_no"];
         string str10 = base.Request.Form["out_trade_no"];
         string d = base.Request.Form["subject"];
         string str = Encrypt.UnEncryptString(PF.GetCallCert(), d);
         double num3 = _Convert.StrToDouble(base.Request.Form["total_fee"].ToString(), 0.0);
         string str13 = base.Request.Form["seller_email"];
         if (str13 != this.so["OnlinePay_Alipay_UserName"].ToString(""))
         {
             new Log("System").Write("在线支付:支付用户信息验证失败!(Notify)");
             base.Response.Write("fail");
             base.Response.End();
         }
         else if (((str6 == str7) && (str5 == "true")) && (str8 == "TRADE_FINISHED"))
         {
             if (base._User == null)
             {
                 base._User = new Users(base._Site.ID)[base._Site.ID, _Convert.StrToLong(str, -1L)];
                 if (base._User == null)
                 {
                     new Log("System").Write("在线支付:用户信息校验错误(Notify)");
                     base.Response.Write("fail");
                     base.Response.End();
                     return;
                 }
             }
             if (this.WriteUserAccount(base._User, str10.ToString(), num3.ToString(), "系统交易号:" + str10.ToString() + ",支付宝交易号:" + str9.ToString()))
             {
                 base.Response.Write("success");
             }
             else
             {
                 new Log("System").Write("在线支付:写入返回数据出错!(Notify)");
                 base.Response.Write("fail");
                 base.Response.End();
             }
         }
         else
         {
             new Log("System").Write("在线支付:(Notify)系统交易号:" + str10 + " 支付宝交易号:" + str9 + " 校验出错!responseTxt系统要求参数为true/false,实际返回:" + str5.ToString() + " trade_status系统要求返回TRADE_FINISHED,实际返回: " + str8.ToString() + " 生成校验码:" + str6.ToString() + "返回校验码:" + str7.ToString());
             base.Response.Write("fail");
             base.Response.End();
         }
     }
     catch (Exception exception)
     {
         new Log("System").Write(exception.Message);
         base.Response.Write("fail");
         base.Response.End();
     }
 }