收藏
回答

API v3 回调通知,nodejs验证签名失败?

async function verifySignature(signature, body, nonce, timestamp) {

// 构建响应体中待签名数据

let buildSignMessage = timestamp

.concat('\n')

.concat(nonce)

.concat('\n')

.concat(body)

.concat('\n')

console.log('---buildSignMessage:',buildSignMessage)

return crypto.createVerify('RSA-SHA256')

.update(Buffer.from(buildSignMessage),'utf8')

.verify(public_key, Buffer.from(signature, 'base64'))

// .verify(public_key, signature, 'base64')

}


回答关注问题邀请回答
收藏

3 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-10-26

    1,麻烦给一下你验证签名的详细步骤和数据。

    2,参考https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-sheng-cheng进行逐步排查。

    2020-10-26
    有用
    回复
  • aini阿杂
    aini阿杂
    2020-10-25
    Correct
    2020-10-25
    有用
    回复
  • 雷雪峰
    雷雪峰
    2020-10-25

    1、通过postman验证 public_key肯定是对的

    2、想手动用openssl验证,但是把wechatpay-signature用base64解码出来是0字节

    看官方的文档

    $ openssl base64 -d -A <<< \ 'CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA=='> signature.txt

    这个指令得到的signature.txt是0字节,

    换成我自己的数据也是0字节,

    虽然是base64解码出来是不可见字符,但也不应该是0字节啊

    2020-10-25
    有用
    回复
登录 后发表内容
问题标签