除特定说明外,商户和京东支付接口调用报文采用3DES加密,再通过base64转换为字符串。 3DES加密算法标为DESede,工作模式为电子密码本模式ECB,不填充(DESede/ECB/NoPadding)。 注:服务端NoPadding 为不填充,所以加密的原文字节必须是8的整数倍(如果调用我们提供的加密接口API则不必处理原文字节,加密接口内部已处理)。如果自己实现加密,原文字节不够8的整数倍,则按如下规则转为8的整数倍。 ``` 1. 把原文字符串转成字节数组。 2. 根据字节数组长度判断是否需要补位。 补位逻辑为: int x = i % 16; int y = (x == 0) ? 0 : (16 - x); i为字节数组的长度,y为需要补位的长度。 补位值为y。 3. 原文字节数组后面加上需补位的值。 例如:字符串”1”,转换成字节数组是[49],计算补位y=15, 最后字节数组为[49, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]。 ``` Form表单接口的加密方式: 如果商户通过表单方式提交支付请求至收银台,为保证信息安全,表单中的各个字段除了merchant(商户号)、verion(版本号)、sign(签名)以外,其余字段全部采用3DES进行加密。 JSON请求接口的加密方式: 如果商户通过表单方式提交支付请求至收银台,为保证信息安全,表单中的各个字段除了merchant(商户号)、sign(签名)以外,其余字段全部采用3DES进行加密 接收到聚合支付加密报文后的处理方式: 接收到聚合支付加密报文后的处理方式 收到聚合支付返回的加密报文后,先判断merchantNo(商户号)是属于商户 检查接口调用是否正常返回 再读取cipherJson内的密文内容进行base64解码,再进行3DES解密, 对解密得到的明文,做验签处理,防止结果被篡改。