Это проблема данного расширения. См. this issue о Гитубе.
Issue OP рекомендует это исправление:
public function call($command, $method, $values, $values2 = null)
{
$class = strtr("{class}_{command}", [
'{class}' => $this->_prefix,
'{command}' => $command,
));
if ($values2) {
return call_user_func(array($class, $method), $values, $values2);
else {
return call_user_func(array($class, $method), $values);
}
}
в то время как расширение автор рекомендует следующее:
if (is_array($values)) {
call_user_func_array(...);
} else {
call_user_func(...);
}
В любом случае вы должны переопределить этот компонент с вашим собственным и применить патч.
Обратите внимание, что количество кода в приложении невелико (64 строки в одном файле), поэтому вы можете создать свою собственную оболочку или найти лучшую, поскольку эта проблема все еще не исправлена.
И, возможно, лучше использовать методы braintree_php, которые будут более понятными, чем магические call
.
Update: Чтобы переопределить компонент, создать свой собственный класс, расширяющий от bryglen лет, поместите его, например, в папке common/components
в случае использования передовых приложений.
namespace common\components;
class Braintree extends \bryglen\braintree\Braintree
{
public function call($command, $method, $values)
{
// Override logic here
}
}
Затем замените имя класса расширения с пользовательским один в конфигурации:
'components' => [
'braintree' => [
'class' => 'common\components\Braintree',
'environment' => 'sandbox',
'merchantId' => 'your_merchant_id',
'publicKey' => 'your_public_key',
'privateKey' => 'your_private_key',
],
],
Просьбы предоставить ссылку на расширения, которые вы используете. – arogachev
Я использую следующие https://github.com/bryglen/yii2-braintree – Arunendra