对接最麻烦的是对方没有PHP的demo,只有java的代码,并且在相同的算法在PHP中和java是不同的写法。
签名验签
在java中签名使用的是SHA1withRSA算法,在PHP中对应的是openssl_sign默认算法,所以只需要按照以下代码编写即可:
/**
* 获取签名
* @author shenzx
* @date 2023-02-27 15:27
*/
protected function setSign(){
//获取私钥
$privateKey = openssl_pkey_get_private(file_get_contents($this->privateKeyPath));
//签名 如果失败openssl_sign会返回false
openssl_sign($this->reqData, $sign, $privateKey);
//释放私钥资源
openssl_free_key($privateKey);
//签名进行base64编码
$sign = base64_encode($sign);
//设置签名
$this->sign = $sign;
}
/**
* 验签
* @author shenzx
* @date 2023-02-28 11:27
* @param $result 解密后的验签数据
* @param $sign 京东返回的签名
* @return bool|mixed
* @throws \Exception
*/
public function ver