golang 版本的demo,有时候解析出来的是乱码,可能是秘钥不对,以下是使用的代码: package main import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" ) func main() { const key = "秘钥" encryptCode := "返回的buffer" decryptCode := AesDecrypt(encryptCode, key) fmt.Println("解密结果:", decryptCode) } func AesDecrypt(cryted string, key string) string { // 转成字节数组 crytedByte, _ := base64.StdEncoding.DecodeString(cryted) k := []byte(key) // 分组秘钥 block, _ := aes.NewCipher(k) // 获取秘钥块的长度 blockSize := block.BlockSize() // 加密模式 blockMode := cipher.NewCBCDecrypter(block, k[:blockSize]) // 创建数组 orig := make([]byte, len(crytedByte)) // 解密 blockMode.CryptBlocks(orig, crytedByte) // 补码 orig = PKCS7Padding(orig) return string(orig) } //补码 //AES加密数据块分组长度必须为128bit(byte[16]),密钥长度可以是128bit(byte[16])、192bit(byte[24])、256bit(byte[32])中的任意一个。 func PKCS7Padding(ciphertext []byte, blocksize int) []byte { padding := blocksize - len(ciphertext)%blocksize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...) }
一物一码下载二维码包怎样解密解密?buffer : base64用工具解密后都是乱码。 [图片]
2021-09-15我也遇到这样的问题了,上面提到的参数也都检查了好几遍没有问题,在代码里面是有curl get 方式 去请求的时候,微信这边会进行一个302的跳转,网络异常,稍后再试及构造参数错误的信息,看文档说是签约失败不返回,一直以为是没有签约成功导致的,后来发现不是。关键是这个请求签约的url,是需要用户在微信内打开才会出现签约页面的。(前提是前面的参数都正确),通过日志获取到请求签约的url,用微信打开发现可以进行签约了,就此问题解决。
微信代扣-公众号纯签约返回参数构造错误调用微信代扣,公众号纯签约接口时,先返回 “网络异常签约失败” 然后紧接着返回了 “参数构造错误”。 我们对照了API文档中的Q&A,模板ID已经是使用中状态。 然后用微信自带的签名校验工具 (https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=20_1) 签名也是匹配的。 ( 1),排查timestamp是否符合参数规则10位。 2),排查参数值长度是否超过了文档标注的长度限制。 3),核对文档notify_url参数是否需要进行encode。 ) 这三点也都没问题。 另外,商户号也和公众号绑定了。 但是一直到不了签约页面。
2020-05-29