code: def charge(self, amount):
          
          try:
              result = Transaction.sale(
                  {
                      'amount': amount.quantize(Decimal('.01')),
                      'customer_id': self.vault_id,
                      "options": {
                          "submit_for_settlement": True
                      }
                  }
              )
  
              if result.is_success:
                  # create a payment log
                  payment_log = PaymentLog.objects.create(user=self.user, amount=amount, transaction_id=result.transaction.id)
                  return payment_log
              else:
                  raise Exception('Logical error in CC transaction')
          except Exception:
              logging.error('Failed to charge $%s to user: %s with vault_id: %s' % (amount, self.user, self.vault_id))
              return None
docs: Charges the users credit card, with he passed $amount, if they are in the vault. Returns the payment_log instance
          or None (if charge fails etc.)