【支付宝】退款接口 报 “缺乏签名参数”

 

问题描述:支付宝冲钱接口能够,可是退款接口会报这个错误php

 

百度到的这个,然而没用到  https://openclub.alipay.com/read.php?tid=2333&fid=46this

 

问题定位:从描述内容能够看到问题sign取不到编码

解决:个人问题是代码比较旧,支付宝如今都用RSA2的,可是代码里面只有 MD五、RSA两种代码实现,故找不到RSA2的实现方式也就会返回空spa

 

 

protected function makeSign($signStr)
    {
        $sign = '';
        switch ($this->signType) {
            case 'MD5':
                $signStr .= $this->md5Key;// 此处不须要经过 & 符号连接
                $sign = md5($signStr);
                break;
            case 'RSA':
            case 'RSA2':    //原来没RSA2的处理,会直接default sign返回 '' 致使如今这个报错,RSA用不着了,直接改为给RSA2用
                $rsa_private_key = @file_get_contents($this->rsaPrivatePath);
                $rsa = new RsaEncrypt($rsa_private_key);
                $sign = $rsa->encrypt($signStr);
                break;
            default:
                $sign = '';
        }

        return $sign;
    }

  

而后修改code

 

public function encrypt($data)
    {
        if ($this->key === false) {
            return '';
        }

        $res = openssl_get_privatekey($this->key);
        if (empty($res)) {
            throw new \Exception('您使用的私钥格式错误,请检查RSA私钥配置');
        }

        openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA256);   //请注意,原先是只有3个入参,如今多一个入参
        openssl_free_key($res);

        //base64编码
        $sign = base64_encode($sign);
        return $sign;
    }
相关文章
相关标签/搜索