public function create(StripeTransaction $transaction)
    {
        try {
            Stripe::setApiKey($this->privateKey);

            $this->dispatcher->notifyCustomerPreCreate($transaction);

            $customer = Customer::create($transaction->getCustomerData());

            $transaction->setCustomerId($customer->id);

            $chargeData = Charge::create($transaction->getChargeData());
        } catch (Exception $e) {
            // The way to get to 'notifyPaymentOrderFail'
            return [
                'paid' => 0,
            ];
        }

        return $chargeData;
    }