2023年6月21日发(作者:)
微信⼩程序webview中使⽤JSSDK的步骤a. ⾸先, 微信⼩程序必须是企业认证的, 否则连webview都⽆法使⽤.(这个是基础)b. webview引⽤页⾯的JS加⼊如下脚本(请⾃⾏修改去掉不要的内容)function InitJSSDK(){ // 显⽰等待 StartWait();
// 发送请求获取json格式的签名信息 var dt = {}; = "wx_getjsapiticket"; dt.u = ; // 如果你的URL中有#, 则只要#之前的部分 $.ajax({ url : C_AJAX_HANDLER_URL, data : dt, }) .done(function(msg) { try{ msg = SON(msg); var iCnt = ; if (iCnt > 0){ var obj = I[0]; ({ debug: false, appId: , // 必填,⼩程序的唯⼀标识 timestamp: amp, // 必填,⽣成签名的时间戳 nonceStr: tr, // 必填,⽣成签名的随机串 signature: ure, // 必填,签名 jsApiList: ['getLocation'] // 必填,需要使⽤的JS接⼝列表 });
// 调⽤成功 (function(){ bJSSDKOK = true; setInterval('UpdateLocation()', C_GET_LOCATION_INTERVAL); }) // 调⽤失败 (function(res){ promptError('JSSDK失败: ' + ); bJSSDKOK = false; }); } } catch(e){} FinishWait(); }) .fail(function() { promptError('获取JSSDK参数失败!'); FinishWait(); });}c. 服务器响应请求的部分:(代码概要: 实现了获取签名信息, 并存⼊数据库; 再次申请时会判断是否已经申请过了, 如果已经申请并且没有过期, 则使⽤现有的,否则重新申请)using System;using c;using uration;using uration;using ;using ent;using ;using ;using ;///
WHERE appid=@appid AND secret=@secret AND pageurl=@pageurl"; SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@appid", AppID), new SqlParameter("@secret", AppSecret), new SqlParameter("@pageurl", szURL) }; // 如果过期了, 则删除旧数据 DataTable dt = eDtTxt(szSQL, sqlParams); if ( > 0 && (DateTime)[0]["expires_time"] < ) { string szSQLDelete = @"DELETE FROM [dbo].[T_WXJSAPI] WHERE appid=@appid AND secret=@secret AND pageurl=@pageurl"; eNonQuery(szSQLDelete, sqlParams); dt = eDtTxt(szSQL, sqlParams); } return dt; } ///
// 将数据记录到数据库中 long lTS = (szTimeStamp) + ((s_in)*1000); DateTime dtExpiresTime = tStringToDateTime(ng()); szTimeStamp = ing(0, 10); string szTmp = (@"jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", , szNonceStr, szTimeStamp, szURL); string szSignature = 1(szTmp).ToLower(); string szSQL = @"INSERT INTO [dbo].[T_WXJSAPI]([appid],[secret],[pageurl],[access_token],[ticket],[nonceStr],[timestamp],[signature],[expires_time])
VALUES (@appid, @secret, @pageurl, @access_token, @ticket, @nonceStr,@timestamp,@signature,@expires_time)"; SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@appid", AppID), new SqlParameter("@secret", AppSecret), new SqlParameter("@pageurl", szURL), new SqlParameter("@access_token", _token), new SqlParameter("@ticket", ), new SqlParameter("@nonceStr", szNonceStr), new SqlParameter("@timestamp", szTimeStamp), new SqlParameter("@signature", szSignature), new SqlParameter("@expires_time", dtExpiresTime) }; bRet = eNonQuery(szSQL, sqlParams) == 1; } } } } } catch (Exception ex) { ine(e); } return bRet; }}d. 中相应的配置
)GO-- ------------------------------ Indexes structure for table T_WXJSAPI-- ------------------------------ ------------------------------ Primary Key structure for table T_WXJSAPI-- ----------------------------ALTER TABLE [dbo].[T_WXJSAPI] ADD PRIMARY KEY ([appid], [secret], [pageurl])GO
2023年6月21日发(作者:)
微信⼩程序webview中使⽤JSSDK的步骤a. ⾸先, 微信⼩程序必须是企业认证的, 否则连webview都⽆法使⽤.(这个是基础)b. webview引⽤页⾯的JS加⼊如下脚本(请⾃⾏修改去掉不要的内容)function InitJSSDK(){ // 显⽰等待 StartWait();
// 发送请求获取json格式的签名信息 var dt = {}; = "wx_getjsapiticket"; dt.u = ; // 如果你的URL中有#, 则只要#之前的部分 $.ajax({ url : C_AJAX_HANDLER_URL, data : dt, }) .done(function(msg) { try{ msg = SON(msg); var iCnt = ; if (iCnt > 0){ var obj = I[0]; ({ debug: false, appId: , // 必填,⼩程序的唯⼀标识 timestamp: amp, // 必填,⽣成签名的时间戳 nonceStr: tr, // 必填,⽣成签名的随机串 signature: ure, // 必填,签名 jsApiList: ['getLocation'] // 必填,需要使⽤的JS接⼝列表 });
// 调⽤成功 (function(){ bJSSDKOK = true; setInterval('UpdateLocation()', C_GET_LOCATION_INTERVAL); }) // 调⽤失败 (function(res){ promptError('JSSDK失败: ' + ); bJSSDKOK = false; }); } } catch(e){} FinishWait(); }) .fail(function() { promptError('获取JSSDK参数失败!'); FinishWait(); });}c. 服务器响应请求的部分:(代码概要: 实现了获取签名信息, 并存⼊数据库; 再次申请时会判断是否已经申请过了, 如果已经申请并且没有过期, 则使⽤现有的,否则重新申请)using System;using c;using uration;using uration;using ;using ent;using ;using ;using ;///
WHERE appid=@appid AND secret=@secret AND pageurl=@pageurl"; SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@appid", AppID), new SqlParameter("@secret", AppSecret), new SqlParameter("@pageurl", szURL) }; // 如果过期了, 则删除旧数据 DataTable dt = eDtTxt(szSQL, sqlParams); if ( > 0 && (DateTime)[0]["expires_time"] < ) { string szSQLDelete = @"DELETE FROM [dbo].[T_WXJSAPI] WHERE appid=@appid AND secret=@secret AND pageurl=@pageurl"; eNonQuery(szSQLDelete, sqlParams); dt = eDtTxt(szSQL, sqlParams); } return dt; } ///
// 将数据记录到数据库中 long lTS = (szTimeStamp) + ((s_in)*1000); DateTime dtExpiresTime = tStringToDateTime(ng()); szTimeStamp = ing(0, 10); string szTmp = (@"jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", , szNonceStr, szTimeStamp, szURL); string szSignature = 1(szTmp).ToLower(); string szSQL = @"INSERT INTO [dbo].[T_WXJSAPI]([appid],[secret],[pageurl],[access_token],[ticket],[nonceStr],[timestamp],[signature],[expires_time])
VALUES (@appid, @secret, @pageurl, @access_token, @ticket, @nonceStr,@timestamp,@signature,@expires_time)"; SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@appid", AppID), new SqlParameter("@secret", AppSecret), new SqlParameter("@pageurl", szURL), new SqlParameter("@access_token", _token), new SqlParameter("@ticket", ), new SqlParameter("@nonceStr", szNonceStr), new SqlParameter("@timestamp", szTimeStamp), new SqlParameter("@signature", szSignature), new SqlParameter("@expires_time", dtExpiresTime) }; bRet = eNonQuery(szSQL, sqlParams) == 1; } } } } } catch (Exception ex) { ine(e); } return bRet; }}d. 中相应的配置
)GO-- ------------------------------ Indexes structure for table T_WXJSAPI-- ------------------------------ ------------------------------ Primary Key structure for table T_WXJSAPI-- ----------------------------ALTER TABLE [dbo].[T_WXJSAPI] ADD PRIMARY KEY ([appid], [secret], [pageurl])GO
发布评论