public function charge($amount, array $options = [])
{
$customer = $this->asBraintreeCustomer();
$response = BraintreeTransaction::sale(array_merge(['amount' => $amount * (1 + $this->taxPercentage() / 100), 'paymentMethodToken' => $customer->paymentMethods[0]->token, 'options' => ['submitForSettlement' => true], 'recurring' => true], $options));
if (!$response->success) {
throw new Exception('Braintree was unable to perform a charge: ' . $response->message);
}
return $response;
}