已经解决。 get请求中 报文中只加一个换行符即可
文档中关于签名的描述有些难以理解根据文档中说的: 构造待签名串 在运用具体的签名算法前,商户需要先构造待签名串。 第一步,获取 HTTP 请求的方法(GET,POST,PUT 等) POST 第二步,获取请求的 URL,并去除域名的部分,如果链接带参数,参数值必须进行 URLencode。示例请求的 URL 为 /hk/v3/transactions/micropay 第三步,获取发起请求时的系统当前时间戳,即格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北 京时间 1970 年 01 月 01 日 08 时 00 分 00 秒)起至现在的总秒数,作为请求时间戳。时间戳必须是最新的, 如果时间戳比微信支付服务器时间晚 300 秒,微信支付服务器会不认这个请求并报错,请商户保持自身系 统的时间准确。 1507709906 第四步,生成一个请求随机串,算法可开发者自定义(可调用系统随机数生成函数转化成字符串),建议长度不少于 10 位。 kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg 第五步,获取提交数据 { "appid": "wx2421b1c4370ec43b", "transaction_id": "1008450740201411110005820873", "out_trade_no": "1415757673" } 第六步,按照如下方法,组成待签名串。待签名串共有五行,每行包括一个参数,行尾以\n 结束,包括最后一行,如果内容为空也需要占有换行符。请注意,\n 为换行符(ASCII 编码值为 0x0A)。 HTTP 请求方法\n URL\n请求时间戳\n 请求随机串\n请求报文\n 按照以上规则,请求报文的待签名串为: POST /hk/v3/transactions/micropay 1507709906 kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg { "appid": "wx2421b1c4370ec43b", "transaction_id": "1008450740201411110005820873", "out_trade_no": "1415757673" } 其中第二步: 获取请求的 URL,并去除域名的部分,如果链接带参数,参数值必须进行 URLencode。示例请求的 URL 为 /hk/v3/transactions/micropay 如果是 get 请求,url为: https://api.mch.weixin.qq.com/hk/v3/transactions/out-trade-no/123456?mchid=123456 问题1: 参与签名的url是 /hk/v3/transactions/out-trade-no/123456?mchid=123456 还是 /hk/v3/transactions/out-trade-no/123456 呢? 问题2: 参与签名的请求报文是空的吗?也就是说get请求中不需要把mchid=123456参与到请求报文中去,那么请求报文应该是{} 还是说直接就没有了呢?
2019-07-03老哥解决了吗。。
"加密后的证书内容”解密算法你好,根据nodejs官网api文档:When using an authenticated encryption mode ([代码]GCM[代码], [代码]CCM[代码] and [代码]OCB[代码] are currently supported), the [代码]cipher.getAuthTag()[代码] method returns a [代码]Buffer[代码] containing the authentication tag that has been computed from the given data.采用gcm模式加密的数据,解密时需要一个身份验证数据, 这个身份验证是加密的时候生成, 但是微信没有提供这个身份验证, 只有associated_data, key, nonce和加密数据, 是否无法解密?
2019-07-02到今天依然没有解决?你们出现这个错不影响使用吗?我的苹果直接打不来了。安卓没问题
真机调试报错开发工具版本:1.02.1905151 真机调试出现了这个报错,虽然不影响使用... [代码]remote-helper.js:1 error run publib TypeError: Cannot assign to read only property [代码][代码]'console'[代码] [代码]of object [代码][代码]'#<Object>'[代码][代码] [代码][代码]at handleInitPubLib (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\unpack\remote-helper.js:1:13129)[代码][代码] [代码][代码]at handleSetupContext (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\unpack\remote-helper.js:44:131)[代码][代码] [代码][代码]at handleProcessMessage (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\unpack\remote-helper.js:44:2564)[代码][代码] [代码][代码]at WebSocket.ws.on (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\unpack\remote-helper.js:44:6348)[代码][代码] [代码][代码]at WebSocket.emit (events.js:193:13)[代码][代码] [代码][代码]at Receiver._receiver.onmessage (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\node_modules.wxvpkg\ws\lib\WebSocket.js:146:47)[代码][代码] [代码][代码]at Receiver.dataMessage (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\node_modules.wxvpkg\ws\lib\Receiver.js:389:14)[代码][代码] [代码][代码]at Receiver.getData (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\node_modules.wxvpkg\ws\lib\Receiver.js:330:12)[代码][代码] [代码][代码]at Receiver.startLoop (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\node_modules.wxvpkg\ws\lib\Receiver.js:165:16)[代码][代码] [代码][代码]at Receiver.add (C:\Users\pro\AppData\Roaming\Tencent\微信开发者工具\package.nw\node_modules.wxvpkg\ws\lib\Receiver.js:139:10)[代码] 大概翻了一下,报错是从这里地console.error开始的(remote-helper.js:1) [代码]Object.defineProperty(log, [代码][代码]"e"[代码][代码], {[代码][代码]value: [代码][代码]function[代码][代码](...a) {[代码][代码] [代码][代码]console.error(...a), errorsAndWarns.push([...a]), sendLogTimer || (sendLogTimer = setTimeout(() => {[代码][代码] [代码][代码]sendLogTimer = void 0;[代码][代码] [代码][代码]const a = {[代码][代码] [代码][代码]type: [代码][代码]"error"[代码][代码],[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]error: errorsAndWarns.join([代码][代码]"\n"[代码][代码])[代码][代码] [代码][代码]}[代码][代码] [代码][代码]};[代码][代码] [代码][代码]errorsAndWarns = [], sendMessageToMaster(a)[代码][代码] [代码][代码]}, 0))[代码][代码]}[代码]
2019-06-13