平台收付通-电商交易解决方案中添加分账接收方
name字段表示需要加密,但是长度只有256个字符。我以为他验证的是加密后的字段的长度,调用发现直接把请求的内容加密字段的长度限制了。任何字段通过微信支付公钥加密后都会超过256子字符,那我应该怎么提交呢?
我的请求参数如下:
{
"appid":"wx718d228016e92507",
"name":"ZwbIjwGF9tJ2bS/9QS6wPfn3c9LEEnhGFKAo/EkvMjEjwOGuQp4oG7gAGZmXkoN85z8u0JyyNQm4VOLShPNjItOjw/Znei3xNVtWVCc7ccoVnqVYKpcm3yNKD3wHcnSp1j8s21skvyvIppNWCYDsaH2S4idA/ola4jBDreatR53kAUwn7NtMrYf8STJIc8w7NMymIWu4LScsmEB80sM8Q3gyshazrvW0kbVLXwV1v0jLbQoub8tP77eIRY8Y4sfKX/FhAHzqFc7fV6DytIK2ZtVXS2qY+Hkzg0nKbKzkl2V2A1ffoaig9ePAmQjraNvPeRakqEx/va2eJNqFRCtaqw\u003d\u003d",
"relation_type":"PLATFORM",
"type":"MERCHANT_ID",
"account":"170XXX7918"
}
响应体:
{
"code":"PARAM_ERROR",
"detail":{"location":"body","value":344},
"message":"输入源“/body/name”映射到值字段“接收方名称”字符串规则校验失败,字符数 344,大于最大值 256"
}
已排除转义的问题,转义后加密字段的长度还是344个字符,超过接口规定的256个字符
有人遇到过吗?感觉是微信支付的bug

这个是加密生成的,还是一样。同样是name普通账户分账的接口是1024字段,为什么这边是256呢? 加密后base64都是344字符
https://pay.weixin.qq.com/doc/v3/partner/4012477758 这边文档是256个字符。1024是服务商分账的,其实这个是对的
https://developers.weixin.qq.com/community/pay/doc/000ac4c2050110b30833da1ce66000
RSA签名签名值在传输或存储时,可能会采用特定的编码方式(如Base64编码)。编码方式可能会增加签名的字节数不够3的倍数会用=号补齐。例如,Base64编码会将每3个字节的数据编码为4个字节的输出,从而增加签名的字节数,签名值的长度256经过Base64编码到344位。你的=是被转义了 所以校验报错了
但是示例代码要去就是用base64转义的。哪我应该怎么解决?不转义就base就可以转发?
2048-bit 的 RSA 密钥,密文长度最大就是 256 字节,怎么可能会超出呢?
你 body 请求编码有问题的,"="被转义了
base64转换以后是344字符。按照微信文档中的实例代码写的
https://pay.weixin.qq.com/doc/v3/partner/4013059044 参考的这边的java代码,用base64转义的