src/Common/WxConfig.php
protected function initConfig(array $config)
    {
        $basePath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'CacertFile' . DIRECTORY_SEPARATOR;
        $this->cacertPath = "{$basePath}wx_cacert.pem";


        $config = ArrayUtil::paraFilter($config);

        // 检查 微信分配的公众账号ID
        if (key_exists('app_id', $config) && !empty($config['app_id'])) {
            $this->appId = $config['app_id'];
        } else {
            throw new PayException('必须提供微信分配的公众账号ID');
        }

        // 检查 微信支付分配的商户号
        if (key_exists('mch_id', $config) && !empty($config['mch_id'])) {
            $this->mchId = $config['mch_id'];
        } else {
            throw new PayException('必须提供微信支付分配的商户号');
        }

        // 检查 异步通知的url
        if (key_exists('notify_url', $config) && !empty($config['notify_url'])) {
            $this->notifyUrl = trim($config['notify_url']);
        } else {
            throw new PayException('异步通知的url必须提供.');
        }

        // 设置交易开始时间 格式为yyyyMMddHHmmss   .再次之前一定要设置时区
        $startTime = time();
        $this->timeStart = date('YmdHis', $startTime);

        // 初始 MD5 key
        if (key_exists('md5_key', $config) && !empty($config['md5_key'])) {
            $this->md5Key = $config['md5_key'];
        } else {
            throw new PayException('MD5 Key 不能为空，再微信商户后台可查看');
        }

        // 设置支付的货币类型
        if (key_exists('fee_type', $config) && in_array($config['fee_type'], ['CNY'])) {
            $this->feeType = $config['fee_type'];
        }

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

        if (key_exists('return_raw', $config)) {
            $this->returnRaw = filter_var($config['return_raw'], FILTER_VALIDATE_BOOLEAN);
        }

        if (key_exists('redirect_url', $config)) {
            $this->returnUrl = $config['redirect_url'];
        }

        // 以下两个文件，如果是调用资金流向接口，必须提供
        if (! empty($config['app_cert_pem'])) {
            $this->appCertPem = $config['app_cert_pem'];
        }
        if (! empty($config['app_key_pem'])) {
            $this->appKeyPem = $config['app_key_pem'];
        }

        if (key_exists('sign_type', $config) && in_array($config['sign_type'], ['MD5', 'HMAC-SHA256'])) {
            $this->signType = $config['sign_type'];
        } else {
            $this->signType = 'MD5';
        }

        // 生成随机字符串
        $this->nonceStr = StrUtil::getNonceStr();

        if (isset($config['use_sandbox']) && $config['use_sandbox'] === true) {
            $this->useSandbox = true;// 是沙箱模式  重新获取key
            $this->signType = 'MD5';// 沙箱模式只能使用 md5 。沙箱下，微信部分接口不支持 HMAC-SHA256

            $helper = new WechatHelper($this, []);
            $this->md5Key = $helper->getSandboxSignKey();
        } else {
            $this->useSandbox = false;// 不是沙箱模式
        }

        //2018-04-10 zj
        if(isset($config['submch']) && $config['submch'] === true){
            $this->submch = true;
        }else{
            $this->submch = false;
        }
        
    }
protected function initConfig(array $config)
    {
        $basePath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'CacertFile' . DIRECTORY_SEPARATOR;
        $this->cacertPath = "{$basePath}wx_cacert.pem";


        $config = ArrayUtil::paraFilter($config);

        // 检查 微信分配的公众账号ID
        if (key_exists('app_id', $config) && !empty($config['app_id'])) {
            $this->appId = $config['app_id'];
        } else {
            throw new PayException('必须提供微信分配的公众账号ID');
        }

        // 检查 微信支付分配的商户号
        if (key_exists('mch_id', $config) && !empty($config['mch_id'])) {
            $this->mchId = $config['mch_id'];
        } else {
            throw new PayException('必须提供微信支付分配的商户号');
        }

        // 检查 异步通知的url
        if (key_exists('notify_url', $config) && !empty($config['notify_url'])) {
            $this->notifyUrl = trim($config['notify_url']);
        } else {
            throw new PayException('异步通知的url必须提供.');
        }

        // 设置交易开始时间 格式为yyyyMMddHHmmss   .再次之前一定要设置时区
        $startTime = time();
        $this->timeStart = date('YmdHis', $startTime);

        // 初始 MD5 key
        if (key_exists('md5_key', $config) && !empty($config['md5_key'])) {
            $this->md5Key = $config['md5_key'];
        } else {
            throw new PayException('MD5 Key 不能为空，再微信商户后台可查看');
        }

        // 设置支付的货币类型
        if (key_exists('fee_type', $config) && in_array($config['fee_type'], ['CNY'])) {
            $this->feeType = $config['fee_type'];
        }

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

        if (key_exists('return_raw', $config)) {
            $this->returnRaw = filter_var($config['return_raw'], FILTER_VALIDATE_BOOLEAN);
        }

        if (key_exists('redirect_url', $config)) {
            $this->returnUrl = $config['redirect_url'];
        }

        // 以下两个文件，如果是调用资金流向接口，必须提供
        if (! empty($config['app_cert_pem'])) {
            $this->appCertPem = $config['app_cert_pem'];
        }
        if (! empty($config['app_key_pem'])) {
            $this->appKeyPem = $config['app_key_pem'];
        }

        if (key_exists('sign_type', $config) && in_array($config['sign_type'], ['MD5', 'HMAC-SHA256'])) {
            $this->signType = $config['sign_type'];
        } else {
            $this->signType = 'MD5';
        }

        // 生成随机字符串
        $this->nonceStr = StrUtil::getNonceStr();

        if (isset($config['use_sandbox']) && $config['use_sandbox'] === true) {
            $this->useSandbox = true;// 是沙箱模式  重新获取key
            $this->signType = 'MD5';// 沙箱模式只能使用 md5 。沙箱下，微信部分接口不支持 HMAC-SHA256

            $helper = new WechatHelper($this, []);
            $this->md5Key = $helper->getSandboxSignKey();
        } else {
            $this->useSandbox = false;// 不是沙箱模式
        }

        //2018-04-10 zj
        if(isset($config['submch']) && $config['submch'] === true){
            $this->submch = true;
        }else{
            $this->submch = false;
        }
        
    }
protected function initConfig ( array $ config ) { $ basePath = dirname ( dirname ( __FILE__ ) ) . DIRECTORY_SEPARATOR . 'CacertFile' . DIRECTORY_SEPARATOR ; $ this -> cacertPath = "{$basePath}wx_cacert.pem" ; $ config = ArrayUtil :: paraFilter ( $ config ) ; // 检查 微信分配的公众账号ID if ( key_exists ( 'app_id' , $ config ) && ! empty ( $ config [ 'app_id' ] ) ) { $ this -> appId = $ config [ 'app_id' ] ; } else { throw new PayException ( '必须提供微信分配的公众账号ID'); } // 检查 微信支付分配的商户号 if ( key_exists ( 'mch_id' , $ config ) && ! empty ( $ config [ 'mch_id' ] ) ) { $ this -> mchId = $ config [ 'mch_id' ] ; } else { throw new PayException ( '必须提供微信支付分配的商户号'); } // 检查 异步通知的url if ( key_exists ( 'notify_url' , $ config ) && ! empty ( $ config [ 'notify_url' ] ) ) { $ this -> notifyUrl = trim ( $ config [ 'notify_url' ] ) ; } else { throw new PayException ( '异步通知的url必须提供.'); } // 设置交易开始时间 格式为yyyyMMddHHmmss   .再次之前一定要设置时区 $ startTime = time ( ) ; $ this -> timeStart = date ( 'YmdHis' , $ startTime ) ; // 初始 MD5 key if ( key_exists ( 'md5_key' , $ config ) && ! empty ( $ config [ 'md5_key' ] ) ) { $ this -> md5Key = $ config [ 'md5_key' ] ; } else { throw new PayException ( 'MD5 Key 不能为空，再微信商户后台可查看'); } // 设置支付的货币类型 if ( key_exists ( 'fee_type' , $ config ) && in_array ( $ config [ 'fee_type' ] , [ 'CNY' ] ) ) { $ this -> feeType = $ config [ 'fee_type' ] ; } // 设置禁止使用的支付方式 if ( key_exists ( 'limit_pay' , $ config ) && ! empty ( $ config [ 'limit_pay' ] ) && $ config [ 'limit_pay' ] [ 0 ] === 'no_credit' ) { $ this -> limitPay = $ config [ 'limit_pay' ] [ 0 ] ; } if ( key_exists ( 'return_raw' , $ config ) ) { $ this -> returnRaw = filter_var ( $ config [ 'return_raw' ] , FILTER_VALIDATE_BOOLEAN ) ; } if ( key_exists ( 'redirect_url' , $ config ) ) { $ this -> returnUrl = $ config [ 'redirect_url' ] ; } // 以下两个文件，如果是调用资金流向接口，必须提供 if ( ! empty ( $ config [ 'app_cert_pem' ] ) ) { $ this -> appCertPem = $ config [ 'app_cert_pem' ] ; } if ( ! empty ( $ config [ 'app_key_pem' ] ) ) { $ this -> appKeyPem = $ config [ 'app_key_pem' ] ; } if ( key_exists ( 'sign_type' , $ config ) && in_array ( $ config [ 'sign_type' ] , [ 'MD5' , 'HMAC-SHA256' ] ) ) { $ this -> signType = $ config [ 'sign_type' ] ; } else { $ this -> signType = 'MD5' ; } // 生成随机字符串 $ this -> nonceStr = StrUtil :: getNonceStr ( ) ; if ( isset ( $ config [ 'use_sandbox' ] ) && $ config [ 'use_sandbox' ] === true ) { $ this -> useSandbox = true ; // 是沙箱模式  重新获取key $ this -> signType = 'MD5' ; // 沙箱模式只能使用 md5 。沙箱下，微信部分接口不支持 HMAC-SHA256 $ helper = new WechatHelper ( $ this , [ ] ) ; $ this -> md5Key = $ helper -> getSandboxSignKey ( ) ; } else { $ this -> useSandbox = false ; // 不是沙箱模式 } //2018-04-10 zj if ( isset ( $ config [ 'submch' ] ) && $ config [ 'submch' ] === true ) { $ this -> submch = true ; } else { $ this -> submch = false ; } }
初始化配置文件参数
@param array $config
@throws PayException
初始化配置文件参数