验证微信v3签名,我写了脚本,执行的时候需要的传参,需要如下格式:
curl -s https://api.mch.weixin.qq.com/v3/certificates -H 'Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1489053472",nonce_str="26D2B0D2C69E562B8F61791B1C98FD7B",signature="XPa530upve9vj6SZfkyNtcmqZ7vLLroT72grCayH/KGCpHxA52z/MVJE4grqHyqF8jRKrEo3JvjUxGudM7sgQvQw9TW6cLHD18SnESz29PsDdinh38xT3Y2wm56RivPNT65eqLVT2AQNFCRiy2zPniTCcKnX5kqPBrCThf7rIObswWwTVmSx0l/2/oDKGy9h4hwbjayEgUx+n9QG5GEjkWSbFDoIGXXoIiM1CGQ1mBFPGbE14M+KyLIu+zgCp3hKKs//fEEXnEFd5shXWroxrehzLoj2/STPIslFntlZ7dO/vxfYjZ/y34uFDfzAtSmoG62xqLLiVQqT9XoJMw1T4g==",timestamp="1658927382",serial_no="3FB55AB0DED24EB3F5D9492F2962A0186F41F056"'
key-value中 value值需要保留”双引号“ 比如:mchid="1489053472",nonce_str="26D2B0D2C69E562B8F61791B1C98FD7B" 格式,而shell中 value值是变量,这就非常麻烦,现在是一个值解决方法:
#!/bin/bash
#通过获取证书信息判断签名是否正常
mch_id=1489053472
sign_serial=3FB55AB0DED24EB3F5D9492F2962A0186F41F056
encrypt_method=WECHATPAY2-SHA256-RSA2048
timestamp=$(date +%s)
nonce_str=$(hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/urandom)
url='https://api.mch.weixin.qq.com/v3/certificates'
##生成签名
signgure=`echo -n -e "GET\n/v3/certificates\n$timestamp\n$nonce_str\n\n" | openssl dgst -sha256 -sign apiclient_key.pem |openssl base64 -A`
## 拼接请求,头部传参
curl -s $url -H 'Authorization: '$encrypt_method' mchid=''"'$mch_id'"'',nonce_str=''"'$nonce_str'"'',signature=''"'$signgure'"'',timestamp=''"'$timestamp'"'',serial_no=''"'$sign_serial'"''' |jq
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!