C\#위 챗 인터페이스 호출 관련 코드
1.위 챗 공식 플랫폼 의 appid
2.위 챗 공식 플랫폼 의 시 크 릿
3.tokenid 가 져 오기
4.티켓 획득
5.서명 한 무 작위 문자열 생 성
6.서명 한 타임 스탬프 생 성
7.서명 생 성
구체 적 인 내용:
1.위 챗 공식 플랫폼 의 appid
2.위 챗 공식 플랫폼 의 시 크 릿
이 두 가 지 는 신청 한 위 챗 공식 플랫폼 에 로그 인하 여 가 져 와 야 합 니 다.설정 파일 에 쓰 는 것 을 권장 합 니 다.
3.토 큰 id 가 져 오기
public static string GetWxTokenId()
{
string token = "";
string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret);
// httpget
// http
string content = HttpHelper.HttpGet(url);
if (!string.IsNullOrEmpty(content))
{
var obj = JsonConvert.DeserializeObject<TokenResult>(content);
if (!obj.errcode.HasValue)
{
token = obj.access_token;
}
}
return token;
}
위 챗 tokenid 를 가 져 오 는 반환 대상 입 니 다.
private class TokenResult
{
public string access_token { get; set; }
public string expires_in { get; set; }
public int? errcode { get; set; }
public string errmsg { get; set; }
}
메모:모든 위 챗 공식 번호 에서 tokenid 를 가 져 오 는 횟수 가 제한 되 어 있 기 때문에 나중에 사용 할 수 있 도록 가 져 온 tokenid 를 저장 해 야 합 니 다.내 가 사용 하 는 방법 은 tokenid 를 데이터베이스 에 저장 하 는 것 이기 때문에 매번 사용 하기 전에 판단 처 리 를 해 야 한다./*tokenid 저장 방식 설명:
*데이터베이스 에 표 만 들 기:SysConfig(사용자 저장 항목 의 설정 데이터)
*필드:
*ConfigKey:이 데 이 터 를 조회 하 는 key 를 주 키 로 합 니 다.
*ConfigValue:데 이 터 를 저장 하 는 값
*TypeName:이 설정 데이터 의 이름
*설명:설명
*CreateTime:생 성 시간
*LastModifyTime:지난번 에 수 정 된 시간
*AllowEdit:편집 가능 여부
*라스트 밸 류:지난번 값
*tokenid 의 유효 시간 은 두 시간=7200 초 입 니 다.다시 가 져 올 때마다 LastModifyTime 의 값 을 업데이트 하고 LastModifyTime 과 현재 시간 을 비교 합 니 다.7200 초 이하 이면 다시 가 져 오지 않 아 도 되 고 반대로 다시 위 챗 에서 가 져 와 야 합 니 다.
*/
===================================================================================================
4.티켓 획득.이전 단계 에서 가 져 온 tokenid 가 필요 합 니 다.
/// <summary>
/// ticket
/// </summary>
/// <param name="token"> tokenid</param>
/// <returns>strticket</returns>
public static string GetTicket(string token)
{
string getticketurl = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", token);
string content = HttpHelper.HttpGet(getticketurl);
JsApiTicket obj = JsonConvert.DeserializeObject<JsApiTicket>(content);
return obj.ticket;
}
5.서명 한 무 작위 문자열 생 성
//
string noncestr = Guid.NewGuid().ToString().Replace("-", "");
6.서명 한 타임 스탬프 생 성
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
7.서명 생 성
string signature = MakeSha1Sign(string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url));
/// <summary>
/// SDK
/// : System.Security.dll
/// </summary>
/// <param name="str"></param>
/// <returns>str </returns>
public static string MakeSha1Sign(string str)
{
byte[] StrRes = Encoding.Default.GetBytes(str);
HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
StrRes = iSHA.ComputeHash(StrRes);
StringBuilder EnText = new StringBuilder();
foreach (byte iByte in StrRes)
{
EnText.AppendFormat("{0:x2}", iByte);
}
return EnText.ToString();
}
마지막 으로 이 절 차 를 한 방법 에 밀봉 할 수 있다.
/// <summary>
/// SDKConfig
/// </summary>
/// <param name="url"></param>
/// <returns>SDKConfig </returns>
public static JsApiConfig GetJsSdkConfig(string url)
{
// tokenid
string access_token = GetWxTokenId();
// ticket
string jsapi_ticket = GetTicket(access_token);
//
string noncestr = Guid.NewGuid().ToString().Replace("-", "");
//
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
//
string signature = MakeSha1Sign(string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url));
JsApiConfig config = new JsApiConfig()
{
appId = appid,
debug = false,
nonceStr = noncestr,
timestamp = timestamp,
signature = signature,
ticket = jsapi_ticket,
// JS
jsApiList = new string[] { "chooseImage", "previewImage", "uploadImage", "downloadImage" }
};
return config;
}
페이지 위 에서 우리 위 에 설 정 된 내용 을 호출 합 니 다.
$.post('/WapCardInfo/GetSDKConfig', { url: location.href.split('#')[0] }, function (data) {
var configObj = data;
wx.config({
debug: false, // , api alert , , pc , log , pc 。
appId: configObj.appId, // ,
timestamp: configObj.timestamp, // ,
nonceStr: configObj.nonceStr, // ,
signature: configObj.signature, // , , 1
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone'
] // , JS , JS 2
});
});
요청 한 배경 코드
[HttpPost]
public JsonResult GetSDKConfig(string url)
{
try
{
//
JsSdkApi.jsapiConfig model = JsSdkApi.GetJsSdkConfig(url);
return Json(model);
}
catch (Exception ex)
{
LogHelper.Error(" wxconfig :" + ex.Message.Replace("'", "\""));
return Json(new JsSdkApi.jsapiConfig());
}
}
필요 한 인 터 페 이 스 는 위 챗 공식 플랫폼 개발 자 문서 에서 확인 하 세 요.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.