示例#1
0
    /// <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);
    }
示例#2
0
    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);
    }
示例#3
0
    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("无通知参数");
        }
    }
示例#4
0
        /// <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());
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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>" + "&nbsp;&nbsp;&nbsp;";

                            #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 + "&nbsp;&nbsp;&nbsp;";
                            #endregion
                        }
                    }
                }
            }
        }
示例#7
0
    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("无通知参数");
        }
    }
示例#8
0
        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("无通知参数");
            }
        }
示例#9
0
        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);
        }
示例#10
0
    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("无通知参数");
        }
    }
示例#11
0
        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("无通知参数");
            }
        }