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); }
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); } }