微信 js sdk C# 版 invalid signature 问题解决

页面导航:首页 > 网络编程 > JavaScript > 微信 js sdk C# 版 invalid signature 问题解决

微信 js sdk C# 版 invalid signature 问题解决

来源: 作者: 时间:2016-02-03 09:20 【

采用Senparc Weixin SDK服务器端代码:using System;using System Collections Generic;using System Linq;using System Web;using System Web UI;using System Web UI WebControls;using Se

采用Senparc.Weixin SDK

 

服务器端代码:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Senparc.Weixin.MP.CommonAPIs;
using Senparc.Weixin.MP.Helpers;
using Senparc.Weixin.Exceptions;

namespace Stock.weixin
{
    public partial class wxShare : System.Web.UI.Page
    {
        public string timestamp = string.Empty;
        public string nonceStr = string.Empty;
        public string signature = string.Empty;        
       
        private string appId = wx9a46bbc1613c1b6b;
        private string secret = 1234567890; 

        protected void Page_Load(object sender, EventArgs e)
        {
            string ticket = string.Empty;            
            timestamp = JSSDKHelper.GetTimestamp();
            nonceStr = JSSDKHelper.GetNoncestr();
            JSSDKHelper jssdkhelper = new JSSDKHelper();

            try
            {                
                ticket = JsApiTicketContainer.TryGetTicket(appId, secret);
                signature = jssdkhelper.GetSignature(ticket, nonceStr, timestamp, Request.Url.AbsoluteUri.ToString());
                
            }
            catch (ErrorJsonResultException ex)
            {
                Common.GetInfo.WriteLog(errorcode: + ex.JsonResult.errcode.ToString() +    errmsg: + ex.JsonResult.errmsg);                
            }            
        }        
    }
}


 

前端页面

 

<script type=text/javascript>

       wx.config({
           debug: false,
           appId: 'wx9a46bbc1613c1b6b',
           timestamp: '<%= timestamp %>',
           nonceStr: '<%= nonceStr %>',
           signature: '<%=signature %>',
           jsApiList: [
        'checkJsApi',
        'onMenuShareTimeline',
        'onMenuShareAppMessage',
        'onMenuShareQQ',
        'onMenuShareWeibo',
        'hideMenuItems',
        'showMenuItems',
        'hideAllNonBaseMenuItem',
        'showAllNonBaseMenuItem',
        'translateVoice',
        'startRecord',
        'stopRecord',
        'onRecordEnd',
        'playVoice',
        'pauseVoice',
        'stopVoice',
        'uploadVoice',
        'downloadVoice',
        'chooseImage',
        'previewImage',
        'uploadImage',
        'downloadImage',
        'getNetworkType',
        'openLocation',
        'getLocation',
        'hideOptionMenu',
        'showOptionMenu',
        'closeWindow',
        'scanQRCode',
        'chooseWXPay',
        'openProductSpecificView',
        'addCard',
        'chooseCard',
        'openCard'
      ]
       });
   </script>

出现错误后,用官方校验signature工具www.2cto.com检验签名算法无误。官方说生成签名的url容易会导致invalid signature,因此url就用Request.Url.AbsoluteUri.ToString()代替,而问题依旧。

 

上面js代码原来是放在一个js文件中,后来把wx.config剪切出来放在页面上,问题就解决了。

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<