>

关于调用微信接口的代码

- 编辑:正版管家婆马报彩图 -

关于调用微信接口的代码

C# 关于调用Wechat接口的代码,

  从前集团下达了开销Wechat只一块的任务,然后小编就去互连网取了后生可畏番经,但是认为对于本人这种微信支付的新手来讲,所急需的事物太多,太拉杂了,然后全部人就懵逼了。

  费了不短日子才将Wechat接口调用完毕。所以啊,笔者收拾了须臾间,调用Wechat接口前需求预备的内容。

  1.Wechat公众平台的appid

  2.微信大伙儿平台的secret

  3..获取tokenid

  4.获取ticket

  5.生成具名的随意串

  6.生成具名的年华戳

  7.生成具名

================================================================================

1.Wechat群众平台的appid

2.微信大伙儿平台的secret

这两个须要报到到申请的Wechat大伙儿平新竹去得到,提议写在布置文件中

================================================================================

3.获取tokenid

图片 1

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

得到Wechattokenid

  这里是获取Wechattokenid的回到对象

图片 2

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

TokenResult

瞩目:在种种Wechat公众号中赢得tokenid的次数是有限的,所以应当将获取到的tokenid储存起来,以便后续使用。作者使用的章程是将tokenid存储在数据库中,所以在每便使用在此以前都要做判断管理

/*tokenid保存方法评释:
*可在数据库中创立表:SysConfig(客户存款和储蓄项目中的配置数据卡塔尔
* 字段:
* ConfigKey:用于查询该条数据的key,做为主键
* ConfigValue:存款和储蓄数据的值
* TypeName:该条配置数据的名称
* Description:说明
* Create提姆e:创立时间
* LastModifyTime:上次涂改的光阴
* AllowEdit:是不是可编写制定
* LastValue:上壹回的值
* tokenid的有用时间是几个钟头=7200秒,每重新得到一遍就更新一回LastModifyTime的值,将LastModify提姆e和当下时光开展比对,假若低于7200秒则足以不用再行获得,反之则须要再度从微信获取。
*/

===================================================================================================

4.获得ticket。须要上一步中收获到的tokenid。

图片 3

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

获取ticketid

=====================================================================================================

5.生成具名的即兴串

图片 4

//生成签名的随机串
string noncestr = Guid.NewGuid().ToString().Replace("-", "");

更改具名的妄动串

====================================================================================================

6.生成签字的时刻戳

图片 5

TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();

浮动签名的时日戳

====================================================================================================

7.生成签字

图片 6

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

签名

====================================================================================================

最后能够将那几个步骤封装在叁个主意中

图片 7

/// <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;


        }

间接调用的法子

 ===================================================================================================

页面下边调用大家地点配置好的剧情

图片 8

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

页面js代码

===================================================================================================

恳请的后台代码

图片 9

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

后台代码

 至于必要的接口就去Wechat公众平台开垦者文书档案中去查看啦。

关于调用Wechat接口的代码, 在此以前公司下达了花费Wechat只一块的义务,然后笔者就去网络取了风度翩翩番经,但是认为对于笔者这种Wechat支付的生手来...

本文由计算机操作发布,转载请注明来源:关于调用微信接口的代码