Esempio n. 1
0
        private static T PostWechatApiWithToken <T>(string rawUrl, string request) where T : WechatApiResponseMessage
        {
            string accessToken = WechatApi.GetAccessToken();

            string url = rawUrl + "access_token=" + accessToken;

            T response = WechatApi.PostWechatApi <T>(url, request);

            if (response.ErrorCode.HasValue)
            {
                switch (response.ErrorCode.Value)
                {
                case 0:
                    break;

                // 如果是票据过期问题,则重新获取票据
                case 40001:
                case 40014:
                case 42001:
                    LogHelper.Info(string.Format("调用微信接口时票据凭证无效或过期, errcode : {0}, errmsg : {1}, interface : {2}", response.ErrorCode, response.ErrorMessage, url));

                    // 重新获取票据凭证
                    accessToken = WechatApi.RefreshAccessToken(accessToken);

                    url = rawUrl + "access_token=" + accessToken;

                    response = WechatApi.PostWechatApi <T>(url, request);

                    if (response.ErrorCode.HasValue && response.ErrorCode.Value != 0)
                    {
                        throw new WechatApiInvokeException(response.ErrorCode.Value, response.ErrorMessage, url);
                    }
                    break;

                default:
                    throw new WechatApiInvokeException(response.ErrorCode.Value, response.ErrorMessage, url);
                }
            }

            return(response);
        }
Esempio n. 2
0
        public static string GetTicket()
        {
            string accessToken            = WechatApi.GetAccessToken();
            string url1                   = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
            string responseInfo           = WechatApi.HttpGet(url1);
            WechatTicketResponse response = JsonConvert.DeserializeObject <WechatTicketResponse>(responseInfo);

            if (response.errcode == 42001)
            {
                WechatApi.RefreshAccessToken(accessToken);
                accessToken  = WechatApi.GetAccessToken();
                url1         = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
                responseInfo = WechatApi.HttpGet(url1);
                WechatTicketResponse responseLast = JsonConvert.DeserializeObject <WechatTicketResponse>(responseInfo);
                return(responseLast.ticket);
            }
            else
            {
                string ticket = response.ticket;
                return(ticket);
            }
        }