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}&timestamp={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}&timestamp={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());
      }
    }
필요 한 인 터 페 이 스 는 위 챗 공식 플랫폼 개발 자 문서 에서 확인 하 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기