
暂时规划包括支付和录音,支付已完成,并且一切正常。录音部分被 js-sdk 卡住了。
可以确定的是签名算法等后端逻辑没问题。
然后在不同的页面调用 wx.config(),如果只给 jsApiList 'chooseWXPay' 一个参数,则正常执行;如果再添加 'startRecord' 或者更多参数,会在两个不同的页面遇到不同的问题:
因为发给 [email protected] 的邮件并没有收到回复,所以在这里呼叫一下腾讯或微信团队的朋友,希望能得到帮助。
或者有朋友处理过 js-sdk 录音的功能,也希望能够得到你的帮助。
请联系我 learnshare.hjq#gmail , wechat: LearnShare
或者留下你的联系方式 :)
解决问题发红包(个人出,也努力从老板兜里掏几毛)
感谢各位。
看来是 URL 的问题。
abc.com/path 改成 abc.com/#/path ,通过 abc.com/ 这个 URL 来签名。
最初是因为微信网页授权跳转无法调到 abc.com/#/ 这个地址,所以设置 Angular.js 的 URL 为 html5Mode(true),也就是 abc.com/path 这种模式了。 看来要再单独处理授权登录跳转的问题了。
1 learnshare OP 各位午休结束了么, HELP ! |
2 iloveyou 2016 年 8 月 3 日 公众号后台允许的 url 填对没 |
3 alichen 2016 年 8 月 3 日 问题无非就是管理后台的安全域名配置和前端参数加密 |
4 learnshare OP |
5 xylitolLin 2016 年 8 月 3 日 支付和其他功能用的 token 是由区别的,这个有没有看清楚 |
6 justfindu 2016 年 8 月 3 日 js -jdk 是最不容易出错的...因为只要你填写参数就够了啊 |
7 alex321 2016 年 8 月 3 日 安全域名检查是否正确,并且确认签名的时候是把完整 url(除了 # 后面的)一起去签名的呃。 |
8 learnshare OP @xylitolLin 步骤三:通过 config 接口注入权限验证配置 这个 token 是一致的,出错的也是这一步; @justfindu 现在参数肯定是没问题的,多加了一个 'startRecord' 权限就出问题了,而且不同页面是不同的错误。 @alex321 根据 URL 生成的签名没有问题,用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=cardsign 校验过。 并且 URL 中没有 # 及之后的内容,安全域名也是检查过多次了 |
9 xylitolLin 2016 年 8 月 3 日 @learnshare ticket 是有两种的。 https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi 要用这个去获取 ticket 喔,注意后面的 type=jsapi |
10 learnshare OP @alichen @alex321 我做了这样的尝试,分别设置安全域名为: abc.com 及 http://abc.com 第一种在 PC 端调试工具及微信的第一个页面中提示 "config:ok",微信第二个页面是 "config:invalid signature"; 第二种在 PC 端调试工具及微信的第一个页面中提示 "config:invalid url domain",微信第二个页面还是 "config:invalid signature"。 |
11 learnshare OP @xylitolLin 后端部分用了现成的 Python 微信开发框架,这部分应该没有问题 |
12 learnshare OP @iloveyou @alex321 我在 segmentfault 看到有朋友说 URL 中存在 "-" 这个字符会影响签名,因为现在用的测试域名是 app-test.xxx.xxx ,所以我再验证一下这个问题。 |
13 alex321 2016 年 8 月 3 日 微信这个安全域名的生效周期会怪怪的。 我当年设置的时候,设置好了立马验证提示 config:invalid url domain ,然后第二天就都正常了呃。。 |
14 learnshare OP @learnshare js sdk 的校验工具是这个 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign |
15 pubby 2016 年 8 月 3 日 @learnshare 安全域名需要完整域名 xxx.domain.com ,不影响 js-sdk 签名,只会影响“输入框防诈骗提示”,“网页被自动转码”之类的 JS-SDK 的域名 可以只设 domain.com ,不需要完整域名。 URL 中的"-"不会有问题 微信支付的签名和 JS-SDK 签名是独立的,而且根本用不到 access_token/jsapi-ticket |
16 xxxyyy 2016 年 8 月 3 日 via Android 或许支付不能跟其他的放在一起 config ,你可以试下只传 startRecord 给 jsApiList |
17 learnshare OP |
18 pubby 2016 年 8 月 3 日 @learnshare access_token / jsapi ticket 都缓存起来了吗? access_token 不要每次重新获取,你重新获取后,原来的 jsapi-ticket 都会失效。 |
19 alichen 2016 年 8 月 3 日 微信 access_token 有失效时间,最好在后端调用的时候存起来 |
20 xxxyyy 2016 年 8 月 3 日 via Android @learnshare 第二个页面单独使用 chooseWXPay 正常吗?如果有问题,检查下第二个页面的 URL 。 |
21 learnshare OP |
22 learnshare OP @xxxyyy 单独 chooseWXPay 是正常的 |
23 sxyclint 2016 年 8 月 3 日 首先微信提供了签名的算法,可以比对下结果看看是不是正确; 页面注入配置的时候, url 申请的签名要和微信在浏览器里的那个域名对应上,也就是一个 url 一个签名 |
24 jdlau 2016 年 8 月 3 日 参数顺序对了没 |
25 learnshare OP |
26 xxxyyy 2016 年 8 月 3 日 via Android 信息太少不好判断 页面是单页面应用,还是传统的页面? 签名是通过 ajax 获取的,还是直接渲染在页面上的? |
27 learnshare OP @xxxyyy 基于 Angular.js 的单页应用,通过 Ajax 从后端 API 获取的签名数据 |
28 xxxyyy 2016 年 8 月 3 日 via Android @learnshare 那通过 ajax 发送 URL 前是否 encode 了,后端接受到 URL 后是否 decoder 了? |
29 learnshare OP @xxxyyy 没有 encode 和 decode ,用的是 POST |
30 xxxyyy 2016 年 8 月 3 日 via Android @learnshare POST 的 content-type 是什么? json 还是 formdata? |
31 xxxyyy 2016 年 8 月 3 日 via Android 我猜问题可能还是在 URL 上。 |
32 learnshare OP |
33 xi_lin 2016 年 8 月 3 日 chooseWXPay 这个接口很神奇的,我试过不请求支付权限照样可以调起支付。 你试过设置分享接口吗? |
34 xiluo 2016 年 8 月 3 日 via iPhone 目测楼主在做类分答的应用。 有一个问题要注意,就是签名的时候传入的 nonstr 要全部小写 |
35 learnshare OP |
36 learnshare OP @iloveyou @alichen @xylitolLin @justfindu @alex321 @pubby @xxxyyy @sxyclint @jdlau @xi_lin @xiluo 看来是 URL 的问题。 解决办法: abc.com/path 改成 abc.com/#/path ,通过 abc.com/ 这个 URL 来签名。 最初是因为微信网页授权跳转无法调到 abc.com/#/ 这个地址,所以设置 Angular.js 的 URL 为 html5Mode(true),也就是 abc.com/path 这种模式了。 看来要再单独处理授权登录跳转的问题了。 不过仍然感谢各位。 |
37 pubby 2016 年 8 月 4 日 via Android @learnshare 微信文档不是提到你这种单页应用了吗,这种情况要用新 URL 重新签名的 |
38 learnshare OP 手动 SEO 一下,帮助更多失足程序员: 微信 invalid signature js sdk invalid signature js-sdk invalid signature JS-SDK invalid signature |
39 learnshare OP |