使用支付宝服务端PHP sdk,经常会遇到各种奇葩问题,这里记录了一些。
环境:
lavavel 5.5
支付宝服务端sdk下载的最新压缩包(2017-10)
1.错误
openssl_verify(): supplied key param cannot be coerced into a public key
解决这个错误主要是确认 AopClient的参数 alipayrsaPublicKey 传入了参数 且是支付宝的公钥而不是商户公钥。
if($this->checkEmpty($this->alipayPublicKey)){
$pubKey= $this->alipayrsaPublicKey;
$res = "-----BEGIN PUBLIC KEY-----\n" .
wordwrap($pubKey, 64, "\n", true) .
"\n-----END PUBLIC KEY-----";
}else {
//读取公钥文件
$pubKey = file_get_contents($rsaPublicKeyFilePath);
//转换为openssl格式密钥
$res = openssl_get_publickey($pubKey);
}
在上面的代码中,如果没有给 alipayPublicKey 赋值,则是不需要传 rsaPublicKeyFilePath 这个参数的,pubkey仍然是读取的字符串形式。所以是不需要保存rsa密钥文件的。