thinkphp openssl_get_privatekey() 方法返回 Resource id #75

刘晓帅 发布于 2015/10/30 12:30
阅读 4K+
收藏 0
PHP

支付宝接口真的是一个问题接一个问题啊!~明显感觉没有微信支付来的干脆。。。好了不吐槽了,直接上问题:

今天在写支付宝签名的时候用到了php中 openssl_get_privatekey 这个函数,传的值是文件路径名(路径绝对正确),但是返回给我的并不是true或者false,而是“Resource id #75” ,然后我肯定首选是去百度,百度了一下,发现没有人出现和我类似的问题,那么大神们问题来了,为什么会返回“Resource id #75”这个值,是没开启openssl_get_privatekey 这个函数吗?如果没开启,那我应该如何启用!求解。

加载中
0
刘晓帅
刘晓帅
补充下,我是在支付完成后回调里面遇到的这个问题,支付宝的demo里判断的是true和false ,而我返回的是空,然后我就顺藤摸瓜的找到了openssl_get_privatekey的所在位置,发现openssl_get_privatekey 函数返回的是“Resource id #75
0
刘晓帅
刘晓帅
另外我phpInfo了一下,openssl_get_privatekey 的状态是开启的状态
0
李志祥
李志祥
php5以后用openssl_pkey_get_private()这个函数来代替。而且需要把你从支付宝网站拷贝出来的私钥字符串根据标准私钥格式换行一下才可以用,最好连开头结尾的begin 和end 也加上。linux上需要把私钥文件设置可读权限。
刘晓帅
刘晓帅
请问正常返回值应该是什么
0
wsy5344
wsy5344

压根就不需要这玩意.


验证:

if (!empty($_POST))
{
    foreach($_POST as $key => $data)
    {
        $_GET[$key] = $data;
    }
}
 
/* 检查数字签名是否正确 */
ksort($_GET);
reset($_GET);
 
$sign = '';
foreach ($_GET AS $key=>$val)
{
    if ($key != 'sign' && $key != 'sign_type' && $key != 'code')
    {
        $sign .= "$key=$val&";
    }
}
 
$sign = substr($sign, 0, -1) . 你的key;
 
if (md5($sign) != $_GET['sign'])
{
    return false;
}else{
    return true;
}



刘晓帅
刘晓帅
哥,我是RSA加密,有好的解决办法吗,而且我现在用base64_decode()解码以后是乱码
0
aa233527
aa233527
返回是 Resource 的话,就是等于true了呀.
0
wane_x
wane_x

请问这个问题是否已解决,能否把加密过程代码发我一份,这个问题困扰我好久了!531921644@qq.com,非常感谢!

返回顶部
顶部