Я использую Laravel 4.2 с Cashier, и мне нужно изменить его защищенную функцию buildPayload(), но я не хочу делать это непосредственно в файле поставщика, так как я могу сломать код при обновлении компоновщика... Как мне перейти к переопределить эту функцию моей собственной логикой?
В настоящее время я использую Cashier в одном из своих контроллеров, выполняя:
$user->subscription('testplan')
->create(Input::get('stripeToken'), [
'email' => '[email protected],
]);
Но я хочу добавить параметры withTax()... Вот так:
$user->subscription('testplan')
->withTax(10)
->create(Input::get('stripeToken'), [
'email' => '[email protected],
]);
Я уже знаю, как это сделать прямо в файле StripeGateway.php
, но это плохая практика...
Я знаю, что мне нужно добавить:
protected $taxPercent = 0;
public function withTax($tax)
{
$this->taxPercent = $tax;
return $this;
}
protected function buildPayload()
{
$payload = [
'plan' => $this->plan, 'prorate' => $this->prorate,
'quantity' => $this->quantity, 'trial_end' => $this->getTrialEndForUpdate(),
'tax_percent' => $this->taxPercent,
];
return $payload;
}
Чего я не знаю, так это того, как добавить этот код не непосредственно в исходный файл Cashier.