/// <summary> /// 构造请求URL(GET方式请求) /// </summary> /// <returns>请求url</returns> private string Create_url() { string strUrl = gateway; string arg = AlipayFunction.Create_linkstring_urlencode(sPara); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 strUrl = strUrl + arg + "sign=" + mysign + "&sign_type=" + _sign_type; return(strUrl); }
private string biz_type = "10004"; //机票对应的biz_type为10004 public Query_Customer(string partner, string key, string signType, string input_charset, string user_email) { gateway = "https://www.alipay.com/cooperate/gateway.do?"; _key = key.Trim(); _input_charset = input_charset.ToLower(); _sign_type = signType.ToUpper(); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); //构造加密参数数组 sParaTemp.Add("service", "query_customer_protocol"); sParaTemp.Add("partner", partner); sParaTemp.Add("_input_charset", _input_charset); sParaTemp.Add("user_email", user_email); sParaTemp.Add("biz_type", biz_type); sPara = AlipayFunction.Para_filter(sParaTemp); //获得签名结果 mysign = AlipayFunction.Build_mysign(sPara, _key, _sign_type, _input_charset); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// AlipayConfig con = new AlipayConfig(); string partner = con.Partner; string key = con.Key; string input_charset = con.Input_charset; string sign_type = con.Sign_type; string transport = con.Transport; ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的签名结果 //写日志记录(若要调试,请取消下面两行注释) string sWord = "responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //获取批次号 string batch_no = Request.Form["batch_no"]; //获取批量退款数据中转账成功的笔数 string success_num = Request.Form["success_num"]; //获取批量退款数据中的详细信息 string result_details = Request.Form["result_details"]; //格式:第一笔交易#第二笔交易#第三笔交易 //第N笔交易格式:交易退款信息 //交易退款信息格式:原付款支付宝交易号^退款总金额^处理结果码^结果描述 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// Response.Write("success"); //向支付宝反馈的成功标志,请不要修改或删除 } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
/// <summary> /// 支付宝生成接口URL /// </summary> /// <param name="orderNo">订单号</param> /// <param name="subject_in">订单名称</param> /// <param name="body_in">订单描述</param> /// <param name="price_in">金额</param> /// <returns></returns> public string GetPayUrlByZFB(string orderNo, string subject_in, string body_in, decimal price_in) { ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的/////////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string seller_email = AlipayParameters.Seller_mailer; //签约支付宝账号或卖家支付宝帐户 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string notify_url = AlipayParameters.DomainPath + "/TicketsCenter/alipay/repurchase/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string return_url = Domain.UserBackCenter + "/TicketsCenter/alipay/repurchase/Return_url.aspx"; //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string show_url = ""; //Domain.UserBackCenter + "/TicketsCenter/alipay/repurchase/MyOrder.aspx"; //网站商品的展示地址,不允许加?id=123这类自定义参数 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string antiphishing = "0"; //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭 //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。 //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通 //若要使用防钓鱼功能,建议使用POST方式请求数据 //////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得//////////////////////////////// //必填参数 string out_trade_no = orderNo; //请与贵网站订单系统中的唯一订单号匹配 string subject = subject_in; //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。 string body = body_in; //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 string total_fee = price_in.ToString("F2"); //订单总金额,显示在支付宝收银台里的“应付总额”里 //扩展功能参数——网银提前 //string paymethod = "bankPay"; //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付) //string defaultbank = "CMB"; //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379 //zxb 修改 此处暂不需要网银提前功能 string paymethod = "directPay"; string defaultbank = ""; //扩展功能参数——防钓鱼 string encrypt_key = ""; //防钓鱼时间戳,初始值 string exter_invoke_ip = ""; //客户端的IP地址,初始值 if (antiphishing == "1") { encrypt_key = AlipayFunction.Query_timestamp(partner); exter_invoke_ip = ""; //获取客户端的IP地址,建议:编写获取客户端IP地址的程序 } //扩展功能参数——其他 string extra_common_param = ""; //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上 string buyer_email = ""; //默认买家支付宝账号 //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值) string royalty_type = ""; //提成类型,该值为固定值:10,不需要修改 string royalty_parameters = ""; //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条 //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2 //如: //royalty_type = "10"; //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二"; //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值) //该功能默认不开通,需联系客户经理咨询 string it_b_pay = ""; //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天) ///////////////////////////////////////////////////////////////////////////////////////////////////// //构造请求函数 AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type); //GET方式传递 return(aliService.Create_url()); }
/// <summary> /// 获取支付链接 /// </summary> /// <param name="payWhich">支付方式</param> /// <param name="orderNo">订单号</param> /// <param name="totol">金额</param> /// <returns></returns> protected string GetPayUrl(string payWhich, string orderNo, decimal total, string freightType) { string url = ""; switch (payWhich)//2-支付宝,1-财付通,3-工行,4-建行,5-农行,6-招行,7-其它 { case "2": ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的/////////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string seller_email = AlipayParameters.Seller_mailer; //签约支付宝账号或卖家支付宝帐户 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string notify_url = AlipayParameters.DomainPath + "/AirTickets/alipay/directpay/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string return_url = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/Return_url.aspx"; //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string show_url = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/MyOrder.aspx"; //网站商品的展示地址,不允许加?id=123这类自定义参数 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string antiphishing = "0"; //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭 //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。 //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通 //若要使用防钓鱼功能,建议使用POST方式请求数据 //////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得//////////////////////////////// //必填参数 string CgsPayInfo = ""; if (freightType == "1") { CgsPayInfo = "航班信息(单程):" + Utils.GetFormValue("leaveTime") + "/" + Utils.GetFormValue("homeCityName") + "至" + Utils.GetFormValue("destCityName"); } else if (freightType == "2") { CgsPayInfo = "航班信息(往返程):去程" + Utils.GetFormValue("leaveTime") + "/" + Utils.GetFormValue("homeCityName") + "至" + Utils.GetFormValue("destCityName") + ";" + " 回程" + Utils.GetFormValue("returnTime") + "/" + Utils.GetFormValue("destCityName") + "至" + Utils.GetFormValue("homeCityName"); } string out_trade_no = orderNo; //DateTime.Now.ToString("yyyyMMddHHmmss");; //请与贵网站订单系统中的唯一订单号匹配 string subject = "同业114机票平台(订单号:" + orderNo + ")"; //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。 string body = "订单号:" + orderNo + "/" + CgsPayInfo; //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 string total_fee = Utils.GetMoney(total); //订单总金额,显示在支付宝收银台里的“应付总额”里 //扩展功能参数——网银提前 //string paymethod = "bankPay"; //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付) //string defaultbank = "CMB"; //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379 //zxb 修改 此处暂不需要网银提前功能 string paymethod = "directPay"; string defaultbank = ""; //扩展功能参数——防钓鱼 string encrypt_key = ""; //防钓鱼时间戳,初始值 string exter_invoke_ip = ""; //客户端的IP地址,初始值 if (antiphishing == "1") { encrypt_key = AlipayFunction.Query_timestamp(partner); exter_invoke_ip = ""; //获取客户端的IP地址,建议:编写获取客户端IP地址的程序 } //扩展功能参数——其他 string extra_common_param = ""; //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上 string buyer_email = ""; //默认买家支付宝账号 //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值) string royalty_type = ""; //提成类型,该值为固定值:10,不需要修改 string royalty_parameters = ""; //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条 //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2 //如: //royalty_type = "10"; //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二"; //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值) //该功能默认不开通,需联系客户经理咨询 string it_b_pay = ""; //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天) ///////////////////////////////////////////////////////////////////////////////////////////////////// //构造请求函数 AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type); //GET方式传递 url = aliService.Create_url(); break; case "1": //商户号 string bargainor_id = TenpayParameters.Bargainor_ID; //密钥 string key1 = TenpayParameters.Key; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); ////生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4); ////商户订单号,不超过32位,财付通只做记录,不保证唯一性 //string sp_billno = strReq; // 财付通交易单号,规则为:10位商户号+8位时间(YYYYmmdd)+10位流水号 ,商户根据自己情况调整,只要保证唯一及符合规则就行 string transaction_id = bargainor_id + date + strReq; //创建PayRequestHandler实例 PayRequestHandler reqHandler = new PayRequestHandler(Context); //初始化 reqHandler.init(); //设置密钥 reqHandler.setKey(key1); //----------------------------- //设置支付参数 //----------------------------- reqHandler.setParameter("bargainor_id", bargainor_id); //商户号 reqHandler.setParameter("sp_billno", orderNo); //商家订单号 reqHandler.setParameter("transaction_id", transaction_id); //财付通交易单号 reqHandler.setParameter("return_url", TenpayParameters.DomainPath + "/AirTickets/tenpay/directpay/Return_url.aspx"); //支付通知url reqHandler.setParameter("desc", string.Format("同业114机票平台(订单号:{0})", orderNo)); //商品名称 reqHandler.setParameter("total_fee", Utils.GetMoney(total * 100)); //商品金额,以分为单 reqHandler.setParameter("cs", TenpayParameters.Input_Charset); //设置编码 //用户的公网ip,测试时填写127.0.0.1,只能支持10分以下交易 reqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //获取请求带参数的url url = reqHandler.getRequestURL(); break; } return(url); }
/// <param name="OrderNo">订单编号</param> /// <param name="planeInfo">航班信息(用户显示订单详细信息)</param> /// <param name="TotalAmount">总金额</param> /// <param name="SupplierCId">供应商公司编号</param> private void ShowCgSPayType(string OrderNo, decimal TotalAmount, string planeInfo, string SupplierCId, string OrderId) { //判断用户绑定的支付帐户信息 是否已经成功加入支付圈 EyouSoft.IBLL.TicketStructure.ITicketCompanyAccount bll = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance(); //当前只能判断支付宝接口的帐户 IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> accountList = bll.GetTicketCompanyAccountList(SupplierCId); if (accountList != null && accountList.Count > 0) { foreach (EyouSoft.Model.TicketStructure.TicketCompanyAccount account in accountList) { if (account.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝) { if (account.IsSign)//已经签约 { divPayType.Visible = true; #region 支付配置 ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的/////////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string seller_email = AlipayParameters.Seller_mailer; //签约支付宝账号或卖家支付宝帐户 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string notify_url = AlipayParameters.DomainPath + "/AirTickets/alipay/directpay/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string return_url = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/Return_url.aspx"; //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数 string show_url = Domain.UserPublicCenter + "/AirTickets/OrderManage/OrderDetails.aspx?OrderId=" + OrderId; //网站商品的展示地址,不允许加?id=123这类自定义参数 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string antiphishing = "0"; //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭 //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。 //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通 //若要使用防钓鱼功能,建议使用POST方式请求数据 //////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得//////////////////////////////// //必填参数 string out_trade_no = OrderNo; //请与贵网站订单系统中的唯一订单号匹配 string subject = "同业114机票平台(订单号:" + OrderNo + ")"; //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。 string body = "订单号:" + OrderNo + "/" + planeInfo; //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 string total_fee = Utils.GetMoney(TotalAmount); //订单总金额,显示在支付宝收银台里的“应付总额”里 //扩展功能参数——网银提前 //string paymethod = "bankPay"; //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付) //string defaultbank = "CMB"; //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379 //zxb 修改 此处暂不需要网银提前功能 string paymethod = "directPay"; string defaultbank = ""; //扩展功能参数——防钓鱼 string encrypt_key = ""; //防钓鱼时间戳,初始值 string exter_invoke_ip = ""; //客户端的IP地址,初始值 if (antiphishing == "1") { encrypt_key = AlipayFunction.Query_timestamp(partner); exter_invoke_ip = ""; //获取客户端的IP地址,建议:编写获取客户端IP地址的程序 } //扩展功能参数——其他 string extra_common_param = ""; //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上 string buyer_email = ""; //默认买家支付宝账号 //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值) string royalty_type = ""; //提成类型,该值为固定值:10,不需要修改 string royalty_parameters = ""; //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条 //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2 //如: //royalty_type = "10"; //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二"; //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值) //该功能默认不开通,需联系客户经理咨询 string it_b_pay = ""; //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天) ///////////////////////////////////////////////////////////////////////////////////////////////////// //构造请求函数 AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type); //GET方式传递 string url = aliService.Create_url(); PayHtmlText += "<a href=" + url + " onclick=\"return OrderDetails.InsertAccount('2');\"><img border='0' src='" + Domain.ServerComponents + "/images/jipiao/alipay.jpg' /></a>" + " "; #endregion } } if (account.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.财付通) { if (account.IsSign) //供应商已经签约财付通 { divPayType.Visible = true; #region 财付通支付配置 //商户号 string bargainor_id = TenpayParameters.Bargainor_ID; //密钥 string key1 = TenpayParameters.Key; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); ////生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4); ////商户订单号,不超过32位,财付通只做记录,不保证唯一性 //string sp_billno = strReq; // 财付通交易单号,规则为:10位商户号+8位时间(YYYYmmdd)+10位流水号 ,商户根据自己情况调整,只要保证唯一及符合规则就行 string transaction_id = bargainor_id + date + strReq; //创建PayRequestHandler实例 PayRequestHandler reqHandler = new PayRequestHandler(Context); //初始化 reqHandler.init(); //设置密钥 reqHandler.setKey(key1); //----------------------------- //设置支付参数 //----------------------------- reqHandler.setParameter("bargainor_id", bargainor_id); //商户号 reqHandler.setParameter("sp_billno", OrderNo); //商家订单号 reqHandler.setParameter("transaction_id", transaction_id); //财付通交易单号 reqHandler.setParameter("return_url", TenpayParameters.DomainPath + "/AirTickets/tenpay/directpay/Return_url.aspx"); //支付通知url reqHandler.setParameter("desc", string.Format("同业114机票平台(订单号:{0})", OrderNo)); //商品名称 reqHandler.setParameter("total_fee", Utils.GetMoney(TotalAmount * 100)); //商品金额,以分为单 reqHandler.setParameter("cs", TenpayParameters.Input_Charset); //设置编码 //用户的公网ip,测试时填写127.0.0.1,只能支持10分以下交易 reqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //获取请求带参数的url string requestUrl = reqHandler.getRequestURL(); //Get的实现方式 string a_link = "<a onclick=\"return OrderDetails.InsertAccount('1')\" href=\"" + requestUrl + "\"><img border='0' src='" + Domain.ServerComponents + "/images/jipiao/cft.jpg' /></a>"; PayHtmlText += a_link + " "; #endregion } } } } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// AlipayConfig con = new AlipayConfig(); string partner = con.Partner; string key = con.Key; string input_charset = con.Input_charset; string sign_type = con.Sign_type; string transport = con.Transport; ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的签名结果 //写日志记录(若要调试,请取消下面两行注释) string sWord = "responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; AlipayFunction.log_result(Server.MapPath("log/" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["price"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 if (Request.Form["trade_status"] == "WAIT_BUYER_PAY") {//该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") {//该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "TRADE_FINISHED") {//该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else { Response.Write("success"); //其他状态判断。普通即时到帐中,其他状态不用判断,直接打印success。 } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 ////写日志记录(若要调试,请取消下面两行注释) string sWord = "Notify_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["total_fee"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 sWord += "\n TRUE"; //表示交易成功(TRADE_FINISHED/TRADE_SUCCESS) EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList("", EyouSoft.Model.TicketStructure.ItemType.供应商付款到平台_购买运价, order_no, ""); if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { if (payList[0].PayState != EyouSoft.Model.TicketStructure.PayState.交易完成) { EyouSoft.BLL.TicketStructure.FreightBuyLog.CreateInstance().PayAfter(trade_no, Utils.GetDecimal(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, order_no, DateTime.Now, ""); } } } else { Response.Write("trade_status=" + Request.Form["trade_status"]); } AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); Response.Write("success"); } } else { Response.Write("无通知参数"); } }
void Page_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); AlipayFunction.log_result(Server.MapPath("../log/运价购买 " + DateTime.Now.ToString().Replace(":", "")) + ".txt", ex.Message + "\n" + ex.StackTrace + "\n" + ex.TargetSite); }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 //写日志记录(若要调试,请取消下面两行注释) string sWord = "Get refund_Notify2_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string notify_id = Request.Form["notify_id"]; string notify_time = Request.Form["notify_time"]; string batch_no = Request.Form["batch_no"]; sWord += "\n batch_no: " + batch_no; string success_num = Request.Form["success_num"]; sWord += "\n success_num: " + success_num; string result_details = Request.Form["result_details"]; sWord += "\n result_details: " + result_details; /* * 平台退款格式: * 原付款支付宝交易号^退款金额^处理结果码$被收费人Email^被收费人userId^退款金额^处理结果码 * * */ Refund_Platform_Result result = Refund_Platform_Result.Load(result_details); sWord += "\n RefundSuccess:" + result.IsRefundSuccess; sWord += "\n Refund_Charges_Success:" + result.IsRefund_ChargesSuccess; IList <EyouSoft.Model.TicketStructure.TicketPay> PayList = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().GetPayList(string.Empty, EyouSoft.Model.TicketStructure.ItemType.平台到采购商_变更, string.Empty, batch_no); if (result.IsRefund_ChargesSuccess && result.IsRefundSuccess) { sWord += "\n paylist:" + PayList.Count; if (PayList != null && PayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = PayList[0]; // 平台退款成功之后更新明细记录状态 EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(result.Trade_No, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易完成, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, batch_no); PayModel = null; } PayList = null; } else { if (PayList != null && PayList.Count > 0) { EyouSoft.Model.TicketStructure.TicketPay PayModel = PayList[0]; EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance().PayAfterCallBack(result.Trade_No, PayModel.PayPrice, EyouSoft.Model.TicketStructure.PayState.交易失败, PayModel.PayType, string.Empty, PayModel.Remark, PayModel.TradeNo, DateTime.Now, batch_no); PayModel = null; } PayList = null; } Response.Write("success"); } else//验证失败 { sWord += "\n FAIL"; Response.Write("fail"); } AlipayFunction.log_result(Server.MapPath("../log/平台退款到采购商—" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { Page.Error += new EventHandler(Page_Error); SortedDictionary <string, string> sArrary = GetRequestPost(); ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////// string partner = AlipayParameters.Partner; //合作身份者ID string key = AlipayParameters.Key; //安全检验码 string input_charset = AlipayParameters.Input_Charset; //字符编码格式 目前支持 gbk 或 utf-8 string sign_type = AlipayParameters.SignType; //加密方式 不需修改 string transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http ////////////////////////////////////////////////////////////////////////////////////////////// if (sArrary.Count > 0)//判断是否有带返回参数 { AlipayNotify aliNotify = new AlipayNotify(sArrary, Request.Form["notify_id"], partner, key, input_charset, sign_type, transport); string responseTxt = aliNotify.ResponseTxt; //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 string sign = Request.Form["sign"]; //获取支付宝反馈回来的sign结果 string mysign = aliNotify.Mysign; //获取通知返回后计算后(验证)的加密结果 ////写日志记录(若要调试,请取消下面两行注释) string sWord = "Notify_URL:responseTxt=" + responseTxt + "\n notify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\n notify回来的参数:" + aliNotify.PreSignStr; //判断responsetTxt是否为ture,生成的签名结果mysign与获得的签名结果sign是否一致 //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (responseTxt == "true" && sign == mysign)//验证成功 { //请根据您的业务逻辑来编写程序(以下代码仅作参考) //获取支付宝的通知返回参数 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["total_fee"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 //string notify_id = Request.QueryString["notify_id"]; //string notify_time = Request.QueryString["notify_time"]; //string buyer_id = Request.QueryString["buyer_id"]; //string gmt_create = Request.QueryString["gmt_create"]; //string gmt_payment = Request.QueryString["gmt_payment"]; sWord += "\n TRUE"; //表示交易成功(TRADE_FINISHED/TRADE_SUCCESS) EyouSoft.IBLL.TicketStructure.ITicketOrder orderBll = EyouSoft.BLL.TicketStructure.TicketOrder.CreateInstance(); EyouSoft.Model.TicketStructure.OrderInfo info = orderBll.GetOrderInfoByNo(order_no); if (info.OrderState == EyouSoft.Model.TicketStructure.OrderState.审核通过) { IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> list = EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance().GetTicketCompanyAccountList(info.SupplierCId); //获取供应商所有账户 string sellAccount = ""; //供应商账户 EyouSoft.Model.TicketStructure.TicketCompanyAccount accountModel = list.FirstOrDefault(i => i.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝); //获取供应商账户实体 if (accountModel != null) { sellAccount = accountModel.AccountNumber;//赋值供应商账户 } string batchNo = ""; decimal IntoRatio = decimal.Parse(AlipayParameters.TongyeFee); IList <EyouSoft.Model.TicketStructure.TicketPay> payList = orderBll.GetPayList(info.OrderId, EyouSoft.Model.TicketStructure.ItemType.采购商付款到平台_订单, order_no, null); if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { sWord += "/n 交易成功"; //为了保证不被重复调用,或重复执行数据库更新程序,请判断该笔交易状态是否是订单未处理状态 //string order_no="201011080010"; //string trade_no="2010110861004313"; //string total_fee="0.01"; //string buyer_email="*****@*****.**"; //string seller_mailer="*****@*****.**"; if (payList != null && payList.Count > 0) { sWord += "/n you"; orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { sWord += "/n meiyou"; orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易完成, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } } else { sWord += "/n 交易失败"; if (payList != null && payList.Count > 0) { orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } else { orderBll.PayBefore(info.OrderId, order_no, sellAccount, IntoRatio, info.BuyerUId, info.BuyerCId, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, info.SupplierCId, "", out batchNo); orderBll.PayAfterCallBack(trade_no, decimal.Parse(total_fee), EyouSoft.Model.TicketStructure.PayState.交易失败, EyouSoft.Model.TicketStructure.TicketAccountType.支付宝, buyer_email, "", order_no, DateTime.Now, ""); } } AlipayFunction.log_result(Server.MapPath("../log/" + order_no + "-" + DateTime.Now.ToString().Replace(":", "")) + ".txt", sWord); } Response.Write("success"); } else//验证失败 { //sWord += "\n FAIL"; Response.Write("fail"); } } else { Response.Write("无通知参数"); } }