暂时规划包括支付和录音,支付已完成,并且一切正常。录音部分被 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-08-03 13:53:11 +08:00
公众号后台允许的 url 填对没
|
3
alichen 2016-08-03 13:54:03 +08:00
问题无非就是管理后台的安全域名配置和前端参数加密
|
4
learnshare OP |
5
xylitolLin 2016-08-03 14:09:58 +08:00
支付和其他功能用的 token 是由区别的,这个有没有看清楚
|
6
justfindu 2016-08-03 14:11:33 +08:00
js -jdk 是最不容易出错的...因为只要你填写参数就够了啊
|
7
alex321 2016-08-03 14:13:23 +08:00
安全域名检查是否正确,并且确认签名的时候是把完整 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-08-03 14:32:03 +08:00
@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-08-03 14:57:54 +08:00
微信这个安全域名的生效周期会怪怪的。
我当年设置的时候,设置好了立马验证提示 config:invalid url domain ,然后第二天就都正常了呃。。 |
14
learnshare OP @learnshare js sdk 的校验工具是这个 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
|
15
pubby 2016-08-03 15:06:19 +08:00
@learnshare
安全域名需要完整域名 xxx.domain.com ,不影响 js-sdk 签名,只会影响“输入框防诈骗提示”,“网页被自动转码”之类的 JS-SDK 的域名 可以只设 domain.com ,不需要完整域名。 URL 中的"-"不会有问题 微信支付的签名和 JS-SDK 签名是独立的,而且根本用不到 access_token/jsapi-ticket |
16
xxxyyy 2016-08-03 15:26:49 +08:00 via Android
或许支付不能跟其他的放在一起 config ,你可以试下只传 startRecord 给 jsApiList
|
17
learnshare OP |
18
pubby 2016-08-03 16:15:15 +08:00
@learnshare access_token / jsapi ticket 都缓存起来了吗? access_token 不要每次重新获取,你重新获取后,原来的 jsapi-ticket 都会失效。
|
19
alichen 2016-08-03 16:24:20 +08:00
微信 access_token 有失效时间,最好在后端调用的时候存起来
|
20
xxxyyy 2016-08-03 16:27:46 +08:00 via Android
@learnshare 第二个页面单独使用 chooseWXPay 正常吗?如果有问题,检查下第二个页面的 URL 。
|
21
learnshare OP |
22
learnshare OP @xxxyyy 单独 chooseWXPay 是正常的
|
23
sxyclint 2016-08-03 17:09:40 +08:00
首先微信提供了签名的算法,可以比对下结果看看是不是正确;
页面注入配置的时候, url 申请的签名要和微信在浏览器里的那个域名对应上,也就是一个 url 一个签名 |
24
jdlau 2016-08-03 17:13:40 +08:00
参数顺序对了没
|
25
learnshare OP |
26
xxxyyy 2016-08-03 17:43:28 +08:00 via Android
信息太少不好判断
页面是单页面应用,还是传统的页面? 签名是通过 ajax 获取的,还是直接渲染在页面上的? |
27
learnshare OP @xxxyyy 基于 Angular.js 的单页应用,通过 Ajax 从后端 API 获取的签名数据
|
28
xxxyyy 2016-08-03 18:22:39 +08:00 via Android
@learnshare 那通过 ajax 发送 URL 前是否 encode 了,后端接受到 URL 后是否 decoder 了?
|
29
learnshare OP @xxxyyy 没有 encode 和 decode ,用的是 POST
|
30
xxxyyy 2016-08-03 18:45:44 +08:00 via Android
@learnshare POST 的 content-type 是什么? json 还是 formdata?
|
31
xxxyyy 2016-08-03 18:47:24 +08:00 via Android
我猜问题可能还是在 URL 上。
|
32
learnshare OP |
33
xi_lin 2016-08-03 19:03:11 +08:00
chooseWXPay 这个接口很神奇的,我试过不请求支付权限照样可以调起支付。
你试过设置分享接口吗? |
34
xiluo 2016-08-03 22:37:39 +08:00 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-08-04 12:10:57 +08:00 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 |