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); }
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>"); } }
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); }
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; }
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 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(); } }
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; } }