Foxtable(狐表)用户栏目专家坐堂 → errMsg : config:invalid signature签名错误


  共有5353人关注过本帖树形打印复制链接

主题:errMsg : config:invalid signature签名错误

帅哥哟,离线,有人找我吗?
fubblyc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
errMsg : config:invalid signature签名错误  发帖心情 Post By:2018/6/8 0:07:00 [只看该作者]

老师,我们生成的签名和微信提供的调试的签名不一样:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180608000634.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180607235031.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/6/8 7:37:00 [只看该作者]

昨天下午还可以,到了晚上不知道怎么回事就不行了

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/8 8:40:00 [只看该作者]

用的是哪个接口?ticket好像是只有2小时的时效,是不是过时了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 8:57:00 [只看该作者]

jsapi_ticket获取有问题,定时获取更新

 

获取api_ticket

api_ticket 是用于调用微信卡券JS API的临时piao据,有效期为7200 秒,通过access_token 来获取。

开发者注意事项:

1.此用于卡券接口签名的api_ticket与步骤三中通过config接口注入权限验证配置使用的jsapi_ticket不同。

2.由于获取api_ticket 的api 调用次数非常有限,频繁刷新api_ticket 会导致api调用受限,影响自身业务,开发者需在自己的服务存储与更新api_ticket。

接口调用请求说明

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card

参数说明

参数 是否必须 说明
access_token 接口调用凭证

返回数据

数据示例:

{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA",
"expires_in":7200
}

参数名 描述
errcode 错误码
errmsg 错误信息
ticket api_ticket,卡券接口中签名所需凭证
expires_in 有效时间


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/6/8 10:12:00 [只看该作者]

甜老师,我是弄的扫一扫的SDK接口,不是卡券的。

我照着帮助的 扫一扫 做的
[此贴子已经被作者于2018/6/8 10:11:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/6/8 10:20:00 [只看该作者]

代码如下:
GetJsSignature:

Dim gongsi As String = args(3)

Dim dt As DataTable
Dim dr As DataRow
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "selec t * from 账套配置 where 账套 = '" & gongsi & "'"
dt = cmd.ExecuteReader(True)
If dt.DataRows.Count > 0 Then
    dr = dt.DataRows(0)
    
    Dim TicketCreateTime As Date = dr("TicketCreateTime") '记录最近一次生成access_token的时间
    Dim Ticket As String 
    Dim AppId As String= dr("AppId")
    Dim AppSecret As String = dr("AppSecret")
    
    Dim tp As TimeSpan = Date.Now - TicketCreateTime
    
    If tp.TotalSeconds > 3600 Then
        Dim url As String = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi"
        Dim hc As New HttpClient(CExp(url,Functions.Execute("GetAccessToken",gongsi)))
        Dim ret As String = hc.GetData()
        If ret = "" Then '如果失败,再尝试一次
            hc.GetData()
        End If
        dr("TicketCreateTime") = Date.Now()
        Dim jo As JObject = JObject.Parse(ret)
        If jo("errcode") = "0" Then
            dr("Ticket") = jo("ticket")
        Else
            PopMessage("获取jsapi_ticket,原因:" & vbcrlf & jo.ToString)
        End If
        dr.save()
    End If
    ticket = dr("Ticket")
    Dim signature As String = CExp("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}",Ticket,args(0),args(1),args(2))
    Return Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1").ToLower()
End If



扫一扫网页代码:
Dim e As  RequestEventArgs = args(0)

Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "selec t top 1 创建账套 from {gift} where ka_id = '" & cardid & "'"
Dim dt As DataTable = cmd.ExecuteReader()
Dim dr As DataRow
If dt.DataRows.Count >= 1 Then
    dr = dt.DataRows(0)
End If
Dim gongsi As String = dr("创建账套")

Dim wb As new WeUI
wb.AppendHTML("<script src='http://res.wx.qq.com/open/js/jweixin-1.2.0.js'></script>",True) '引入JS-SDK库
wb.AppendHTML("<script src='./lib/jssdk2.js'></script>") '引入脚本文件
'在页面注入权限验证配置
Dim st As New Date(1970,1,1,8,0,0)
Dim appid As String = "wx993xxxxxc690" '开发者ID
Dim timestamp As Integer = CInt((Date.Now - st).TotalSeconds()) '时间戳
Dim noncestr As String = Rand.NextString(16) '随机字符
Dim url As String  = e.Request.URL.ToString '当前页面地址
Dim signature As String = Functions.Execute("GetJsSignature", noncestr, timestamp, url,gongsi) '生成权限验证签名
PopMessage("signature:" & signature)
Dim cfg As String = "wx.config({appId:'{0}',timestamp:{1},nonceStr:'{2}',signature:'{3}',jsApiList:['scanQRCode']});"
wb.AppendHTML("<script>" & CExp(cfg,appid,timestamp,noncestr,signature) & "</script>",True)
'开始正常生成网页内容

wb.AddPageTitle("","ph1","支付","XX公司")

wb.AddForm("","form1","http://www.yijiansoft.net:94/koukuancl.htm")
With wb.AddInputGroup("form1","ipg1","")
   
    With .AddInputCell("ic1")
        .AddLabel("lbh","小piao单号",0)
        With .AddInput("xp","text",1)
            .Placeholder = "点右边扫小piao条码"
            .Enabled = False
        End With
        .AddVcodeButton("scan","扫一扫",2) '增加二维码扫描按钮,2表示显示在右边
    End With
End With
With wb.AddButtonGroup("form1","btg1",True)
    .Add("btn1", "确定", "submit")
End With

e.WriteString(wb.Build) '生成网页
[此贴子已经被作者于2018/6/8 10:24:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 10:29:00 [只看该作者]

在函数 GetJsSignature 加入msgbox,弹出各个值看一下,看是否进入执行了 getticket 的代码。


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/6/8 12:06:00 [只看该作者]

甜老师,经测试,超过3600就有执行了。
    If tp.TotalSeconds > 3600 Then
        Dim url As String = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi"
        Dim hc As New HttpClient(CExp(url,Functions.Execute("GetAccessToken",gongsi)))
        Dim ret As String = hc.GetData()
        If ret = "" Then '如果失败,再尝试一次
            hc.GetData()
        End If
        dr("TicketCreateTime") = Date.Now()
        Dim jo As JObject = JObject.Parse(ret)
        If jo("errcode") = "0" Then
            dr("Ticket") = jo("ticket")
            PopMessage("重新获取")
        Else
            PopMessage("获取jsapi_ticket,原因:" & vbcrlf & jo.ToString)
        End If
        dr.save()
    End If

    ticket = dr("Ticket")
    Dim signature As String = CExp("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}",Ticket,args(0),args(1),args(2))
    Return Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1").ToLower()

[此贴子已经被作者于2018/6/8 12:09:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/6/8 12:12:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 12:17:00 [只看该作者]

1、msgbox执行了这句代码了没?

 

 dr("Ticket") = jo("ticket")

 

2、如果进入执行了 getticket 后生成的签名是否正确?

 

3、如果还是有问题,就是你 AppId、AppSecret 等值不对应导致的。

 

Dim appid As String = "wx993xxxxxc690" '开发者ID


 回到顶部
总数 26 1 2 3 下一页