src/Common/AliConfig.php
protected function initConfig(array $config)
    {
        $config = ArrayUtil::paraFilter($config);// 过滤掉空值，下面不用在检查是否为空

        // 初始 支付宝网关地址
        $this->getewayUrl = 'https://openapi.alipay.com/gateway.do';
        if (isset($config['use_sandbox']) && $config['use_sandbox'] === true) {
            $this->getewayUrl = 'https://openapi.alipaydev.com/gateway.do';
        } else {
            $this->useSandbox = false;// 不是沙箱模式
        }

        // 支付宝分配给开发者的应用ID
        if (key_exists('app_id', $config) && is_numeric($config['app_id'])) {
            $this->appId = $config['app_id'];
        } else {
            throw new PayException('支付宝应用ID错误，请检查');
        }

        // 初始 支付宝异步通知地址，可为空
        if (key_exists('notify_url', $config)) {
            $this->notifyUrl = $config['notify_url'];
        }

        // 初始 支付宝 同步通知地址，可为空
        if (key_exists('return_url', $config)) {
            $this->returnUrl = $config['return_url'];
        }

        // 初始 支付宝 签名方式，默认为：RSA
        if (key_exists('sign_type', $config) && in_array($config['sign_type'], ['RSA', 'RSA2'])) {
            $this->signType = $config['sign_type'];
        } else {
            throw new PayException('目前支付宝仅支持RSA2和RSA，推荐使用RSA2');
        }

        // 新版本，需要提供独立的支付宝公钥信息。每一个应用，公钥都不相同
        if (key_exists('ali_public_key', $config) && ! empty($config['ali_public_key'])) {
            $this->rsaAliPubKey = StrUtil::getRsaKeyValue($config['ali_public_key'], 'public');
        } else {
            throw new PayException('请提供支付宝对应的rsa公钥');
        }
        if (empty($this->rsaAliPubKey)) {
            throw new PayException('支付宝公钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置');
        }

        // 初始 RSA私钥文件 需要检查该文件是否存在
        if (key_exists('rsa_private_key', $config) && ! empty($config['rsa_private_key'])) {
            $this->rsaPrivateKey = StrUtil::getRsaKeyValue($config['rsa_private_key'], 'private');
        } else {
            throw new PayException('请提供商户的rsa私钥文件');
        }
        if (empty($this->rsaPrivateKey)) {
            throw new PayException('支付宝rsa私钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置');
        }

        // 	发送请求的时间，格式"yyyy-MM-dd HH:mm:ss"  需要正确设置时区
        $this->timestamp = date('Y-m-d H:i:s', time());

        // 设置禁止使用的支付方式
        if (key_exists('limit_pay', $config) && is_array($config['limit_pay'])) {
            $this->limitPay = implode(',', $config['limit_pay']);
        }

        // 是否要求返回支付返回的原始数据
        if (key_exists('return_raw', $config)) {
            $this->returnRaw = filter_var($config['return_raw'], FILTER_VALIDATE_BOOLEAN);
        }
    }
protected function initConfig(array $config)
    {
        $config = ArrayUtil::paraFilter($config);// 过滤掉空值，下面不用在检查是否为空

        // 初始 支付宝网关地址
        $this->getewayUrl = 'https://openapi.alipay.com/gateway.do';
        if (isset($config['use_sandbox']) && $config['use_sandbox'] === true) {
            $this->getewayUrl = 'https://openapi.alipaydev.com/gateway.do';
        } else {
            $this->useSandbox = false;// 不是沙箱模式
        }

        // 支付宝分配给开发者的应用ID
        if (key_exists('app_id', $config) && is_numeric($config['app_id'])) {
            $this->appId = $config['app_id'];
        } else {
            throw new PayException('支付宝应用ID错误，请检查');
        }

        // 初始 支付宝异步通知地址，可为空
        if (key_exists('notify_url', $config)) {
            $this->notifyUrl = $config['notify_url'];
        }

        // 初始 支付宝 同步通知地址，可为空
        if (key_exists('return_url', $config)) {
            $this->returnUrl = $config['return_url'];
        }

        // 初始 支付宝 签名方式，默认为：RSA
        if (key_exists('sign_type', $config) && in_array($config['sign_type'], ['RSA', 'RSA2'])) {
            $this->signType = $config['sign_type'];
        } else {
            throw new PayException('目前支付宝仅支持RSA2和RSA，推荐使用RSA2');
        }

        // 新版本，需要提供独立的支付宝公钥信息。每一个应用，公钥都不相同
        if (key_exists('ali_public_key', $config) && ! empty($config['ali_public_key'])) {
            $this->rsaAliPubKey = StrUtil::getRsaKeyValue($config['ali_public_key'], 'public');
        } else {
            throw new PayException('请提供支付宝对应的rsa公钥');
        }
        if (empty($this->rsaAliPubKey)) {
            throw new PayException('支付宝公钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置');
        }

        // 初始 RSA私钥文件 需要检查该文件是否存在
        if (key_exists('rsa_private_key', $config) && ! empty($config['rsa_private_key'])) {
            $this->rsaPrivateKey = StrUtil::getRsaKeyValue($config['rsa_private_key'], 'private');
        } else {
            throw new PayException('请提供商户的rsa私钥文件');
        }
        if (empty($this->rsaPrivateKey)) {
            throw new PayException('支付宝rsa私钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置');
        }

        // 	发送请求的时间，格式"yyyy-MM-dd HH:mm:ss"  需要正确设置时区
        $this->timestamp = date('Y-m-d H:i:s', time());

        // 设置禁止使用的支付方式
        if (key_exists('limit_pay', $config) && is_array($config['limit_pay'])) {
            $this->limitPay = implode(',', $config['limit_pay']);
        }

        // 是否要求返回支付返回的原始数据
        if (key_exists('return_raw', $config)) {
            $this->returnRaw = filter_var($config['return_raw'], FILTER_VALIDATE_BOOLEAN);
        }
    }
protected function initConfig ( array $ config ) { $ config = ArrayUtil :: paraFilter ( $ config ) ; // 过滤掉空值，下面不用在检查是否为空 // 初始 支付宝网关地址 $ this -> getewayUrl = 'https://openapi.alipay.com/gateway.do' ; if ( isset ( $ config [ 'use_sandbox' ] ) && $ config [ 'use_sandbox' ] === true ) { $ this -> getewayUrl = 'https://openapi.alipaydev.com/gateway.do' ; } else { $ this -> useSandbox = false ; // 不是沙箱模式 } // 支付宝分配给开发者的应用ID if ( key_exists ( 'app_id' , $ config ) && is_numeric ( $ config [ 'app_id' ] ) ) { $ this -> appId = $ config [ 'app_id' ] ; } else { throw new PayException ( '支付宝应用ID错误，请检查'); } // 初始 支付宝异步通知地址，可为空 if ( key_exists ( 'notify_url' , $ config ) ) { $ this -> notifyUrl = $ config [ 'notify_url' ] ; } // 初始 支付宝 同步通知地址，可为空 if ( key_exists ( 'return_url' , $ config ) ) { $ this -> returnUrl = $ config [ 'return_url' ] ; } // 初始 支付宝 签名方式，默认为：RSA if ( key_exists ( 'sign_type' , $ config ) && in_array ( $ config [ 'sign_type' ] , [ 'RSA' , 'RSA2' ] ) ) { $ this -> signType = $ config [ 'sign_type' ] ; } else { throw new PayException ( '目前支付宝仅支持RSA2和RSA，推荐使用RSA2'); } // 新版本，需要提供独立的支付宝公钥信息。每一个应用，公钥都不相同 if ( key_exists ( 'ali_public_key' , $ config ) && ! empty ( $ config [ 'ali_public_key' ] ) ) { $ this -> rsaAliPubKey = StrUtil :: getRsaKeyValue ( $ config [ 'ali_public_key' ] , 'public' ) ; } else { throw new PayException ( '请提供支付宝对应的rsa公钥'); } if ( empty ( $ this -> rsaAliPubKey ) ) { throw new PayException ( '支付宝公钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置'); } // 初始 RSA私钥文件 需要检查该文件是否存在 if ( key_exists ( 'rsa_private_key' , $ config ) && ! empty ( $ config [ 'rsa_private_key' ] ) ) { $ this -> rsaPrivateKey = StrUtil :: getRsaKeyValue ( $ config [ 'rsa_private_key' ] , 'private' ) ; } else { throw new PayException ( '请提供商户的rsa私钥文件'); } if ( empty ( $ this -> rsaPrivateKey ) ) { throw new PayException ( '支付宝rsa私钥生成错误，如果你使用的是文件方式配置，建议修改为字符串配置'); } // 	发送请求的时间，格式"yyyy-MM-dd HH:mm:ss"  需要正确设置时区 $ this -> timestamp = date ( 'Y-m-d H:i:s' , time ( ) ) ; // 设置禁止使用的支付方式 if ( key_exists ( 'limit_pay' , $ config ) && is_array ( $ config [ 'limit_pay' ] ) ) { $ this -> limitPay = implode ( ',' , $ config [ 'limit_pay' ] ) ; } // 是否要求返回支付返回的原始数据 if ( key_exists ( 'return_raw' , $ config ) ) { $ this -> returnRaw = filter_var ( $ config [ 'return_raw' ] , FILTER_VALIDATE_BOOLEAN ) ; } }
初始化配置文件
@param array $config
@throws PayException
初始化配置文件