/// <summary> /// 获取jssdk签名信息 /// </summary> /// <param name="url"></param> /// <returns></returns> public async Task <WXJsSdkSignatureResp> GetJsSdkSignature(string url) { var ticketRes = await GetJsTicketFromCacheAsync(WXJsTicketType.jsapi); if (!ticketRes.IsSuccess()) { return(new WXJsSdkSignatureResp().WithResp(ticketRes));// ticketRes.ConvertToResultInherit<WXJsSdkSignatureResp>(); } var resp = new WXJsSdkSignatureResp { app_id = ApiConfig.AppId, noncestr = GenerateNonceStr(), timestamp = DateTime.Now.ToLocalSeconds() }; var signStr = new StringBuilder(); signStr.Append("jsapi_ticket=").Append(ticketRes.ticket); signStr.Append("&noncestr=").Append(resp.noncestr); signStr.Append("×tamp=").Append(resp.timestamp); if (!string.IsNullOrEmpty(url)) { signStr.Append("&url=").Append(url); } resp.signature = Sha1.Encrypt(signStr.ToString()); return(resp); }
/// <summary> /// 获取jssdk签名信息 /// </summary> /// <param name="url"></param> /// <returns></returns> public async Task <WXJsSdkSignatureResp> GetJsSdkSignature(string url) { if (WXPlatConfigProvider.JsTicketHub == null) { throw new NullReferenceException("WXPlatConfigProvider 下 JsTicketHub 属性不能为空,因微信访问频率限制,需要通过其设置jsticket统一缓存管理获取。"); } var appConfigRes = await GetMeta(); if (!appConfigRes.IsSuccess()) { return(new WXJsSdkSignatureResp().WithResp(appConfigRes)); } var appConfig = appConfigRes.data; var ticketRes = await WXPlatConfigProvider.JsTicketHub.GetJsTicket(appConfig, WXJsTicketType.jsapi); if (!ticketRes.IsSuccess()) { return(new WXJsSdkSignatureResp().WithResp(ticketRes));// ticketRes.ConvertToResultInherit<WXJsSdkSignatureResp>(); } var resp = new WXJsSdkSignatureResp { app_id = appConfig.AppId, noncestr = GenerateNonceStr(), timestamp = DateTime.Now.ToLocalSeconds() }; var signStr = new StringBuilder(); signStr.Append("jsapi_ticket=").Append(ticketRes.data); signStr.Append("&noncestr=").Append(resp.noncestr); signStr.Append("×tamp=").Append(resp.timestamp); if (!string.IsNullOrEmpty(url)) { signStr.Append("&url=").Append(url); } resp.signature = Sha1.Encrypt(signStr.ToString()); return(resp); }