zoukankan      html  css  js  c++  java
  • 【支付宝】退款接口 报 “缺少签名参数”

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

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

    问题定位:从描述内容可以看到问题sign取不到

    解决:我的问题是代码比较旧,支付宝现在都用RSA2的,但是代码里面只有 MD5、RSA两种代码实现,故找不到RSA2的实现方式也就会返回空

    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;
        }
    

      

    然后修改

    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;
        }
    

      

  • 相关阅读:
    ajax 传递参数中文乱码解决办法
    jQuery 时间戳转化成时间
    IDEA2017 导入 SVN上的 Myeclipse或Eclipse 项目
    ajax返回json数据,对其中日期的解析
    MYSQL 按照字母排序查询
    JVM介绍
    正则表达式
    could not find the main class错误
    转:MyEclipse使用总结——MyEclipse10安装SVN插件
    转:Oracle数据库sqlplus与plsqldev解决乱码
  • 原文地址:https://www.cnblogs.com/wdw31210/p/9802734.html
Copyright © 2011-2022 走看看