Esempio n. 1
0
        public ActionResult Open()
        {
            string url = "";

            try
            {
                string host        = StringHelper.GetHost();
                string path        = Request.Path;
                string queryString = Request.Url.Query;
                string code        = UrlParameterHelper.GetQueryString("code");
                string query       = "";
                string state       = "";
                if (!string.IsNullOrEmpty(code))
                {
                    query = UrlParameterHelper.GetDecodingParams("state");
                }
                else
                {
                    state = UrlParameterHelper.UrlEncode(queryString);
                }

                Com.WxPayAPI.JsApiPay jsApiPay = new Com.WxPayAPI.JsApiPay(host, path, queryString);
                jsApiPay.GetOpenidAndAccessToken(state, out url, code);

                string openid = jsApiPay.OpenId;

                if (string.IsNullOrEmpty(url))
                {
                    if (!string.IsNullOrEmpty(openid) && !string.IsNullOrEmpty(query))
                    {
                        IDictionary <string, object> dict = new Dictionary <string, object>();
                        dict.Add("openid", openid);
                        url = StringHelper.SpliceUrl(string.Concat("/user/order/wechat/js/index.aspx", query), dict);
                    }
                }
            }
            catch
            {
                url = "/error/notfound".GetChannelRouteUrl(RouteChannelId);
            }

            return(Redirect(url));
        }