/** * 合并和校验参数 */ public function resolveOptions() { $defaults = array('nonce_str' => Util::getRandomString(), 'client_ip' => Util::getClientIp()); $resolver = new OptionsResolver(); $resolver->setDefined($this->required)->setRequired($this->required)->setDefaults($defaults); return $resolver->resolve($this->toArray()); }
/** * 合并和校验参数 */ public function resolveOptions() { $normalizer = function ($options, $value) { if ($value === 'JSAPI' && !isset($options['openid'])) { throw new \InvalidArgumentException(sprintf('订单的 trade_type 为 “%s” 时,必需指定 “openid” 字段', $value)); } return $value; }; $defaults = array('trade_type' => current($this->tradeTypes), 'spbill_create_ip' => Util::getClientIp(), 'nonce_str' => Util::getRandomString()); $resolver = new OptionsResolver(); $resolver->setDefined($this->defined)->setRequired($this->required)->setAllowedValues('trade_type', $this->tradeTypes)->setNormalizer('trade_type', $normalizer)->setDefaults($defaults); return $resolver->resolve($this->toArray()); }