コード例 #1
0
        /// <summary>
        /// 生成页面类请求所需URL或Form表单
        /// </summary>
        /// <param name="method">GET或POST,决定是生成URL还是Form表单</param>
        /// <param name="systemParams">系统参数集合</param>
        /// <param name="bizParams">业务参数集合</param>
        /// <param name="textParams">其他额外文本参数集合</param>
        /// <param name="sign">所有参数的签名值</param>
        /// <returns>生成的URL字符串或表单</returns>
        protected string _generatePage(string method, Dictionary <string, string> systemParams, Dictionary <string, object> bizParams,
                                       Dictionary <string, string> textParams, string sign)
        {
            if (AlipayConstants.GET.Equals(method))
            {
                //采集并排序所有参数
                IDictionary <string, string> sortedMap = GetSortedMap(systemParams, bizParams, textParams);
                sortedMap.Add(AlipayConstants.SIGN_FIELD, sign);

                //将所有参数置于URL中
                return(GetGatewayServerUrl() + "?" + BuildQueryString(sortedMap));
            }
            else if (AlipayConstants.POST.Equals(method))
            {
                //将系统参数、额外文本参数排序后置于URL中
                IDictionary <string, string> urlParams = GetSortedMap(systemParams, null, textParams);
                urlParams.Add(AlipayConstants.SIGN_FIELD, sign);
                string actionUrl = GetGatewayServerUrl() + "?" + BuildQueryString(urlParams);

                //将业务参数排序后置于form表单中
                IDictionary <string, string> formParams = new SortedDictionary <string, string>()
                {
                    { AlipayConstants.BIZ_CONTENT_FIELD, JsonUtil.ToJsonString(bizParams) }
                };
                return(PageUtil.BuildForm(actionUrl, formParams));
            }
            else
            {
                throw new Exception("_generatePage中method只支持传入GET或POST");
            }
        }