diff --git a/extension-4.2/com.drastikbydesign.stripe/CRM/Core/Payment/Stripe.php b/com.drastikbydesign.stripe/CRM/Core/Payment/Stripe.php
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/CRM/Core/Payment/Stripe.php
rename to com.drastikbydesign.stripe/CRM/Core/Payment/Stripe.php
diff --git a/extension-4.2/com.drastikbydesign.stripe/CRM/Stripe/Page/Webhook.php b/com.drastikbydesign.stripe/CRM/Stripe/Page/Webhook.php
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/CRM/Stripe/Page/Webhook.php
rename to com.drastikbydesign.stripe/CRM/Stripe/Page/Webhook.php
diff --git a/extension-4.2/com.drastikbydesign.stripe/README.txt b/com.drastikbydesign.stripe/README.txt
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/README.txt
rename to com.drastikbydesign.stripe/README.txt
diff --git a/extension-4.2/com.drastikbydesign.stripe/info.xml b/com.drastikbydesign.stripe/info.xml
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/info.xml
rename to com.drastikbydesign.stripe/info.xml
diff --git a/extension-4.2/com.drastikbydesign.stripe/stripe.civix.php b/com.drastikbydesign.stripe/stripe.civix.php
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/stripe.civix.php
rename to com.drastikbydesign.stripe/stripe.civix.php
diff --git a/extension-4.2/com.drastikbydesign.stripe/stripe.php b/com.drastikbydesign.stripe/stripe.php
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/stripe.php
rename to com.drastikbydesign.stripe/stripe.php
diff --git a/extension-4.2/com.drastikbydesign.stripe/templates/CRM/Core/BillingBlock.tpl b/com.drastikbydesign.stripe/templates/CRM/Core/BillingBlock.tpl
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/templates/CRM/Core/BillingBlock.tpl
rename to com.drastikbydesign.stripe/templates/CRM/Core/BillingBlock.tpl
diff --git a/extension-4.2/com.drastikbydesign.stripe/templates/CRM/Stripe/Page/Webhook.tpl b/com.drastikbydesign.stripe/templates/CRM/Stripe/Page/Webhook.tpl
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/templates/CRM/Stripe/Page/Webhook.tpl
rename to com.drastikbydesign.stripe/templates/CRM/Stripe/Page/Webhook.tpl
diff --git a/extension-4.2/com.drastikbydesign.stripe/xml/Menu/stripe.xml b/com.drastikbydesign.stripe/xml/Menu/stripe.xml
similarity index 100%
rename from extension-4.2/com.drastikbydesign.stripe/xml/Menu/stripe.xml
rename to com.drastikbydesign.stripe/xml/Menu/stripe.xml
diff --git a/extension-4.1/com.drastikbydesign.payment.stripe/README.txt b/extension-4.1/com.drastikbydesign.payment.stripe/README.txt
deleted file mode 100644
index 2d784a931e823679f156cff34b095501ab5b3980..0000000000000000000000000000000000000000
--- a/extension-4.1/com.drastikbydesign.payment.stripe/README.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-------------
-Please Read:
-There are 3 versions of this extension available.  This is:
-extension-4.1:  Extension for CiviCRM 4.1 and earlier.
-
-You also need a corresponding module for your CMS.  Here is where the modules can be found:
-Drupal:  git clone --recursive --branch master http://git.drupal.org/sandbox/drastik/1719796.git civicrm_stripe
-Joomla:  TBD
-WordPress:  TBD
-
-IMPORTANT:
-The Webhook.php file is in the 'extern' folder.  
-You have to make a Webhook rule in your Stripe account and enter the path to Webhook.php for recurring charges to end!
-
-------------
-
-Installation Instructions:
-
-------------
-
-For CiviCRM 4.1:
-
-Install extension
-
-Place civicrm_templates folder anywhere and inform CiviCRM of your "Custom Templates" location in this admin page:  site.com/civicrm/admin/setting/path
-
-Copy files in extern to your CiviCRM extern folder  "civicrm/extern"
-Make a Webhook rule in your Stripe account and enter the path to Webhook.php
-
-Copy Stripe's PHP library folder 'stripe-php' to civicrm/packages/stripe-php  
-You can get Stripe's PHP library here: https://github.com/stripe/stripe-php
-
-------------
\ No newline at end of file
diff --git a/extension-4.1/com.drastikbydesign.payment.stripe/civicrm_templates/CRM/Core/BillingBlock.tpl b/extension-4.1/com.drastikbydesign.payment.stripe/civicrm_templates/CRM/Core/BillingBlock.tpl
deleted file mode 100644
index 89c3ff614fbe8ef8066468495d677e91d45bb09a..0000000000000000000000000000000000000000
--- a/extension-4.1/com.drastikbydesign.payment.stripe/civicrm_templates/CRM/Core/BillingBlock.tpl
+++ /dev/null
@@ -1,228 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | CiviCRM version 4.1                                                |
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2011                                |
- +--------------------------------------------------------------------+
- | This file is a part of CiviCRM.                                    |
- |                                                                    |
- | CiviCRM is free software; you can copy, modify, and distribute it  |
- | under the terms of the GNU Affero General Public License           |
- | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
- |                                                                    |
- | CiviCRM is distributed in the hope that it will be useful, but     |
- | WITHOUT ANY WARRANTY; without even the implied warranty of         |
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
- | See the GNU Affero General Public License for more details.        |
- |                                                                    |
- | You should have received a copy of the GNU Affero General Public   |
- | License and the CiviCRM Licensing Exception along                  |
- | with this program; if not, contact CiviCRM LLC                     |
- | at info[AT]civicrm[DOT]org. If you have questions about the        |
- | GNU Affero General Public License or the licensing of CiviCRM,     |
- | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
- +--------------------------------------------------------------------+
-*}
-{if $form.credit_card_number or $form.bank_account_number}
-<!-- START Stripe -->
-  {if $paymentProcessor.payment_processor_type == 'Stripe'}
-    <script type="text/javascript">
-  	var stripe_publishable_key = '{$paymentProcessor.password}';
-  	
-	{literal}
-	  cj(function() {
-		cj(document).ready(function(){
-		  cj.getScript('https://js.stripe.com/v1/', function(){ 
-		 	Stripe.setPublishableKey(stripe_publishable_key);
-		  });
-		  /* 
-		   * Identify the payment form.
-		   * Don't reference by form#id since it changes between payment pages (Contribution / Event / etc).
-		   */
-		  cj("#crm-container>form").addClass('stripe-payment-form');
-		  cj("form.stripe-payment-form").submit(function(event) {
-    	    // disable the submit button to prevent repeated clicks
-    	  	cj('form.stripe-payment-form input.form-submit').attr("disabled", "disabled");
-
-    	 	Stripe.createToken({
-        	  number: cj('#credit_card_number').val(),
-        	  cvc: cj('#cvv2').val(),
-        	  exp_month: cj('#credit_card_exp_date\\[M\\]').val(),
-        	  exp_year: cj('#credit_card_exp_date\\[Y\\]').val()
-    	  	}, stripeResponseHandler);
-
-    	  	// prevent the form from submitting with the default action
-    	  	return false;
-  		  });
-		});
-		
-		//Response from Stripe.createToken.
-		function stripeResponseHandler(status, response) {		  
-		  if (response.error) {
-        	// show the errors on the form
-        	if(cj(".messages.crm-error.stripe-message").length > 0) {
-        		cj(".messages.crm-error.stripe-message").slideUp();
-        		cj(".messages.crm-error.stripe-message").remove();
-        	}
-			cj("form.stripe-payment-form").prepend('<div class="messages crm-error stripe-message">'
-				+'<strong>Payment Error Response:</strong>'
-	   			  +'<ul id="errorList">'
-	         		+'<li>Error: ' + response.error.message + '</li>'
-	   			  +'</ul>'
-   				+'</div>');
-
-        	cj('form.stripe-payment-form input.form-submit').removeAttr("disabled");
-
-    	  } else {
-        	var token = response['id'];
-        	// Update form with the token & submit
-        	cj("input#stripe-token").val(token);
-        	cj("form.stripe-payment-form").get(0).submit();
-    	  }
-		}
-	  });
-    {/literal}
-    </script>
-  {/if}
-<!-- END Stripe -->
-    <div id="payment_information">
-        <fieldset class="billing_mode-group {if $paymentProcessor.payment_type & 2}direct_debit_info-group{else}credit_card_info-group{/if}">
-            <legend>
-               {if $paymentProcessor.payment_type & 2}
-                    {ts}Direct Debit Information{/ts}
-               {else}
-                   {ts}Credit Card Information{/ts}
-               {/if}
-            </legend> 
-            {if $paymentProcessor.billing_mode & 2 and !$hidePayPalExpress }
-            <div class="crm-section no-label paypal_button_info-section">	
-			    <div class="content description">
-			        {ts}If you have a PayPal account, you can click the PayPal button to continue. Otherwise, fill in the credit card and billing information on this form and click <strong>Continue</strong> at the bottom of the page.{/ts}
-				</div>
-			</div>
-			 <div class="crm-section no-label {$form.$expressButtonName.name}-section">	
-			    <div class="content description">
-			        {$form.$expressButtonName.html}
-			        <div class="description">Save time. Checkout securely. Pay without sharing your financial information. </div>
-				</div>
-			</div>
-            {/if} 
-
-            {if $paymentProcessor.billing_mode & 1}
-                <div class="crm-section billing_mode-section {if $paymentProcessor.payment_type & 2}direct_debit_info-section{else}credit_card_info-section{/if}">
-                   {if $paymentProcessor.payment_type & 2}
-                        <div class="crm-section {$form.account_holder.name}-section">	
-							<div class="label">{$form.account_holder.label}</div>
-                            <div class="content">{$form.account_holder.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_account_number.name}-section">	
-							<div class="label">{$form.bank_account_number.label}</div>
-                            <div class="content">{$form.bank_account_number.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_identification_number.name}-section">	
-							<div class="label">{$form.bank_identification_number.label}</div>
-                            <div class="content">{$form.bank_identification_number.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_name.name}-section">	
-							<div class="label">{$form.bank_name.label}</div>
-                            <div class="content">{$form.bank_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                   {else}
-                		<div class="crm-section {$form.credit_card_type.name}-section">	
-							<div class="label">{$form.credit_card_type.label}</div>
-                			<div class="content">{$form.credit_card_type.html}</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.credit_card_number.name}-section">	
-							<div class="label">{$form.credit_card_number.label}</div>
-                			<div class="content">{$form.credit_card_number.html}
-                				<div class="description">{ts}Enter numbers only, no spaces or dashes.{/ts}</div>
-                			</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.cvv2.name}-section">	
-							<div class="label">{$form.cvv2.label}</div>
-                			<div class="content">
-                				{$form.cvv2.html}
-                				<img src="{$config->resourceBase}i/mini_cvv2.gif" alt="{ts}Security Code Location on Credit Card{/ts}" style="vertical-align: text-bottom;" />
-                				<div class="description">{ts}Usually the last 3-4 digits in the signature area on the back of the card.{/ts}</div>
-                			</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.credit_card_exp_date.name}-section">	
-							<div class="label">{$form.credit_card_exp_date.label}</div>
-                			<div class="content">{$form.credit_card_exp_date.html}</div>
-                			<div class="clear"></div> 
-                		</div>
-                    {/if}
-                </div>
-                </fieldset>
-
-                <fieldset class="billing_name_address-group">
-                	<legend>{ts}Billing Name and Address{/ts}</legend>
-                    <div class="crm-section billing_name_address-section">
-                        <div class="crm-section billingNameInfo-section">	
-                        	<div class="content description">
-                        	  {if $paymentProcessor.payment_type & 2}
-                        	     {ts}Enter the name of the account holder, and the corresponding billing address.{/ts}
-                        	  {else}
-                        	     {ts}Enter the name as shown on your credit or debit card, and the billing address for this card.{/ts}
-                        	  {/if}
-                        	</div>
-                        </div>
-                        <div class="crm-section {$form.billing_first_name.name}-section">	
-							<div class="label">{$form.billing_first_name.label}</div>
-                            <div class="content">{$form.billing_first_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.billing_middle_name.name}-section">	
-							<div class="label">{$form.billing_middle_name.label}</div>
-                            <div class="content">{$form.billing_middle_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.billing_last_name.name}-section">	
-							<div class="label">{$form.billing_last_name.label}</div>
-                            <div class="content">{$form.billing_last_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_street_address-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_city-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_country_id-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html|crmReplace:class:big}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_state_province_id-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html|crmReplace:class:big}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_postal_code-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                    </div>
-                </fieldset>
-            {else}
-                </fieldset>
-            {/if}
-    </div>
-{/if}
\ No newline at end of file
diff --git a/extension-4.1/com.drastikbydesign.payment.stripe/extern/Webhook.php b/extension-4.1/com.drastikbydesign.payment.stripe/extern/Webhook.php
deleted file mode 100644
index 56508e79b4e3a2d8575d151cef37e76135e57e6b..0000000000000000000000000000000000000000
--- a/extension-4.1/com.drastikbydesign.payment.stripe/extern/Webhook.php
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/*
- * Handle Stripe Webhooks for recurring payments
- */
-
-session_start();
-
-require_once '../civicrm.config.php';
-require_once 'CRM/Core/Config.php';
-
-$config = & CRM_Core_Config::singleton();
-
-//Get the data from stripe
-$data_raw = file_get_contents("php://input");
-$data = json_decode($data_raw);
-if(! $data) {
-  CRM_Core_Error::Fatal("Stripe Callback: cannot json_decode data, exiting. <br /> $data");
-}
-
-$test_mode = ! $data->livemode;
-
-$stripe_key = CRM_Core_DAO::singleValueQuery("SELECT user_name FROM civicrm_payment_processor WHERE payment_processor_type = 'Stripe' AND is_test = '$test_mode'");
-require_once ("packages/stripe-php/lib/Stripe.php");
-Stripe::setApiKey($stripe_key);
-
-//Retrieve Event from Stripe using ID even though we already have the values now.
-//This is for extra security precautions mentioned here: https://stripe.com/docs/webhooks
-$stripe_event_data = Stripe_Event::retrieve($data->id);
-$customer_id = $stripe_event_data->data->object->customer;
-switch($stripe_event_data->type) {
-  //Successful recurring payment
-  case 'invoice.payment_succeeded' :
-    //Get the Stripe charge object
-    try {
-      $charge = Stripe_Charge::retrieve($stripe_event_data->data->object->charge);
-    } catch(Exception $e) {
-      CRM_Core_Error::Fatal("Failed to retrieve Stripe charge.  Message: " . $e->getMessage());
-      break;
-    }
-    
-    //Find the recurring contribution in CiviCRM by mapping it from Stripe
-    $rel_info_query = CRM_Core_DAO::executeQuery("SELECT invoice_id, end_time FROM civicrm_stripe_subscriptions WHERE customer_id = '$customer_id'");
-    if(! empty($rel_info_query)) {
-      $rel_info_query->fetch();
-      $invoice_id = $rel_info_query->invoice_id;
-      $end_time = $rel_info_query->end_time;
-    } else {
-      CRM_Core_Error::Fatal("Error relating this customer ($customer_id) to the one in civicrm_stripe_subscriptions");
-    }
-    
-    //Compare against now + 24hrs to prevent charging 1 extra day.
-    $time_compare = time() + 86400;
-    
-    //Fetch Civi's info about this recurring object
-    $recur_contrib_query = CRM_Core_DAO::executeQuery("SELECT id, contact_id, currency, contribution_status_id, is_test, contribution_type_id, payment_instrument_id, campaign_id FROM civicrm_contribution_recur WHERE invoice_id = '$invoice_id'");
-    if(! empty($recur_contrib_query)) {
-      $recur_contrib_query->fetch();
-    } else {
-      CRM_Core_Error::Fatal("ERROR: Stripe triggered a Webhook on an invoice not found in civicrm_contribution_recur: " . $stripe_event_data);
-    }
-    //Build some params
-    $stripe_customer = Stripe_Customer::retrieve($customer_id);
-    $recieve_date = date("Y-m-d H:i:s", $charge->created);
-    $total_amount = $charge->amount / 100;
-    $fee_amount = $charge->fee / 100;
-    $net_amount = $total_amount - $fee_amount;
-    $transaction_id = $charge->id;
-    $new_invoice_id = $stripe_event_data->data->object->id;
-    if(empty($recur_contrib_query->campaign_id)) {
-      $recur_contrib_query->campaign_id = 'NULL';
-    }
-    
-    $first_contrib_check = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_contribution WHERE invoice_id = '$invoice_id' AND contribution_status_id = '2'");
-    if(! empty($first_contrib_check)) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution SET contribution_status_id = '1' WHERE id = '$first_contrib_check'");
-      return;
-    }
-    
-    //Create this instance of the contribution for accounting in CiviCRM
-    CRM_Core_DAO::executeQuery("
-        	INSERT INTO civicrm_contribution (
-        	contact_id, contribution_type_id, payment_instrument_id, receive_date, 
-        	total_amount, fee_amount, net_amount, trxn_id, invoice_id, currency,
-        	contribution_recur_id, is_test, contribution_status_id, campaign_id
-        	) VALUES (
-        	'$recur_contrib_query->contact_id', '$recur_contrib_query->contribution_type_id', '$recur_contrib_query->payment_instrument_id', '$recieve_date', 
-        	'$total_amount', '$fee_amount', '$net_amount', '$transaction_id', '$new_invoice_id', '$recur_contrib_query->currency', 
-        	'$recur_contrib_query->id', '$recur_contrib_query->is_test', '1', $recur_contrib_query->campaign_id
-        	)");
-    
-    if($time_compare > $end_time) {
-      $end_date = date("Y-m-d H:i:s", $end_time);
-      //Final payment.  Recurring contribution complete
-      $stripe_customer->cancelSubscription();
-      CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_subscriptions WHERE invoice_id = '$invoice_id'");
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET end_date = '$end_date', contribution_status_id = '1' WHERE invoice_id = '$invoice_id'");
-      return;
-    }
-    
-    //Successful charge & more to come so set recurring contribution status to In Progress
-    if($recur_contrib_query->contribution_status_id != 5) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET contribution_status_id = 5 WHERE invoice_id = '$invoice_id'");
-      return;
-    }
-    
-    break;
-  
-  //Failed recurring payment
-  case 'invoice.payment_failed' :
-    //Get the Stripe charge object
-    try {
-      $charge = Stripe_Charge::retrieve($stripe_event_data->data->object->charge);
-    } catch(Exception $e) {
-      CRM_Core_Error::Fatal("Failed to retrieve Stripe charge.  Message: " . $e->getMessage());
-      break;
-    }
-    
-    //Find the recurring contribution in CiviCRM by mapping it from Stripe
-    $invoice_id = CRM_Core_DAO::singleValueQuery("SELECT invoice_id FROM civicrm_stripe_subscriptions WHERE customer_id = '$customer_id'");
-    if(empty($invoice_id)) {
-      CRM_Core_Error::Fatal("Error relating this customer ($customer_id) to the one in civicrm_stripe_subscriptions");
-    }
-    
-    //Fetch Civi's info about this recurring object
-    $recur_contrib_query = CRM_Core_DAO::executeQuery("SELECT id, contact_id, currency, contribution_status_id, is_test, contribution_type_id, payment_instrument_id, campaign_id FROM civicrm_contribution_recur WHERE invoice_id = '$invoice_id'");
-    if(! empty($recur_contrib_query)) {
-      $recur_contrib_query->fetch();
-    } else {
-      CRM_Core_Error::Fatal("ERROR: Stripe triggered a Webhook on an invoice not found in civicrm_contribution_recur: " . $stripe_event_data);
-    }
-    //Build some params
-    $recieve_date = date("Y-m-d H:i:s", $charge->created);
-    $total_amount = $charge->amount / 100;
-    $fee_amount = $charge->fee / 100;
-    $net_amount = $total_amount - $fee_amount;
-    $transaction_id = $charge->id;
-    if(empty($recur_contrib_query->campaign_id)) {
-      $recur_contrib_query->campaign_id = 'NULL';
-    }
-    
-    //Create this instance of the contribution for accounting in CiviCRM
-    CRM_Core_DAO::executeQuery("
-        	INSERT INTO civicrm_contribution (
-        	contact_id, contribution_type_id, payment_instrument_id, receive_date, 
-        	total_amount, fee_amount, net_amount, trxn_id, invoice_id, currency,
-        	contribution_recur_id, is_test, contribution_status_id, campaign_id
-        	) VALUES (
-        	'$recur_contrib_query->contact_id', '$recur_contrib_query->contribution_type_id', '$recur_contrib_query->payment_instrument_id', '$recieve_date', 
-        	'$total_amount', '$fee_amount', '$net_amount', '$transaction_id', '$invoice_id', '$recur_contrib_query->currency', 
-        	'$recur_contrib_query->id', '$recur_contrib_query->is_test', '4', $recur_contrib_query->campaign_id
-        	)");
-    
-    //Failed charge.  Set to status to: Failed
-    if($recur_contrib_query->contribution_status_id != 4) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET contribution_status_id = 4 WHERE invoice_id = '$invoice_id'");
-      return;
-    } else {  //This has failed more than once.  Now what?
-    }
-    
-    break;
-  
-  //One-time donation and per invoice payment
-  case 'charge.succeeded' :
-    //Not implemented
-    break;
-
-}
diff --git a/extension-4.1/com.drastikbydesign.payment.stripe/info.xml b/extension-4.1/com.drastikbydesign.payment.stripe/info.xml
deleted file mode 100644
index af41ff31b0c11dc17f99f641cd332507640071f4..0000000000000000000000000000000000000000
--- a/extension-4.1/com.drastikbydesign.payment.stripe/info.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<extension key="com.drastikbydesign.payment.stripe" type="payment">
-  <downloadUrl>https://github.com/downloads/drastik/civicrm_stripe/com.drastikbydesign.payment.stripe-4.1.zip</downloadUrl>
-  <file>stripe</file>
-  <name>Stripe</name>
-  <description>Stripe Payment Processor</description>
-  <urls>
-    <url desc="Main Extension Page">http://drastikbydesign.com</url>
-  </urls>
-  <license>AGPL</license>
-  <maintainer>
-    <author>Joshua Walker (drastik) - Drastik by Design</author>
-    <email>admin (at) drastikbydesign.com</email>
-  </maintainer>
-  <releaseDate>2012-08-23</releaseDate>
-  <version>1.1</version>
-  <develStage>stable</develStage>
-  <compatibility><ver>4.1</ver></compatibility>
-  <comments></comments>
-  <typeInfo>
-   <userNameLabel>Secret Key</userNameLabel>
-   <passwordLabel>Publishable Key</passwordLabel>
-   <signatureLabel></signatureLabel>
-   <subjectLabel></subjectLabel>
-   <urlSiteDefault>https://api.stripe.com/v1</urlSiteDefault>
-   <urlApiDefault></urlApiDefault>
-   <urlRecurDefault>https://api.stripe.com/v1</urlRecurDefault>
-   <urlSiteTestDefault>https://api.stripe.com/v1</urlSiteTestDefault>
-   <urlApiTestDefault></urlApiTestDefault>
-   <urlRecurTestDefault>https://api.stripe.com/v1</urlRecurTestDefault>
-   <urlButtonDefault></urlButtonDefault>
-   <urlButtonTestDefault></urlButtonTestDefault>
-   <billingMode>form</billingMode>
-   <isRecur>1</isRecur>
-   <paymentType>1</paymentType>
-  </typeInfo>
-</extension>
diff --git a/extension-4.1/com.drastikbydesign.payment.stripe/stripe.php b/extension-4.1/com.drastikbydesign.payment.stripe/stripe.php
deleted file mode 100644
index 3490218f051d6c76acd6b9dc29e01a65b6f3104c..0000000000000000000000000000000000000000
--- a/extension-4.1/com.drastikbydesign.payment.stripe/stripe.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
- 
-require_once 'CRM/Core/Payment.php';
- 
-class com_drastikbydesign_payment_stripe extends CRM_Core_Payment {
-  /**
-   * We only need one instance of this object. So we use the singleton
-   * pattern and cache the instance in this variable
-   *
-   * @var object
-   * @static
-   */
-  static private $_singleton = null;
- 
-  /**
-   * mode of operation: live or test
-   *
-   * @var object
-   * @static
-   */
-  static protected $_mode = null;
- 
-  /**
-   * Constructor
-   *
-   * @param string $mode the mode of operation: live or test
-   *
-   * @return void
-   */
-  function __construct($mode, &$paymentProcessor) {
-    $this->_mode             = $mode;
-    $this->_paymentProcessor = $paymentProcessor;
-    $this->_processorName    = ts('Stripe');
-  }
- 
-  /**
-   * Singleton function used to manage this object
-   *
-   * @param string $mode the mode of operation: live or test
-   *
-   * @return object
-   * @static
-   *
-   */
-  static function &singleton($mode, &$paymentProcessor) {
-      $processorName = $paymentProcessor['name'];
-      if (self::$_singleton[$processorName] === NULL ) {
-          self::$_singleton[$processorName] = new self($mode, $paymentProcessor);
-      } 
-      return self::$_singleton[$processorName];
-  }
- 
-  /**
-   * This function checks to see if we have the right config values
-   *
-   * @return string the error message if any
-   * @public
-   */
-  function checkConfig() {
-    $config = CRM_Core_Config::singleton();
-    $error = array();
-
-    //Create database tables if they haven't been.
-    if(!CRM_Core_DAO::checkTableExists('civicrm_stripe_customers')) {
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_customers` (
-  			`email` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
-  			`id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
-  			UNIQUE KEY `email` (`email`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-			");
-      
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_plans` (
-  			`plan_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  			UNIQUE KEY `plan_id` (`plan_id`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-		");
-      
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_subscriptions` (
-			`customer_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-			`invoice_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-			`end_time` int(11) NOT NULL DEFAULT '0',
-			`is_live` tinyint(4) NOT NULL COMMENT 'Whether this is a live or test transaction',
-			KEY `end_time` (`end_time`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-		");
-      CRM_Core_Error::debug('Stripe Database tables created.  <br />This is the only time this message will be displayed.  You do not need to take any further actions.');
-    }
-
-    if (empty($this->_paymentProcessor['user_name'])) {
-      $error[] = ts('The "Secret Key" is not set in the Stripe Payment Processor settings.');
-    }
-
-    if (empty($this->_paymentProcessor['password'])) {
-      $error[] = ts('The "Publishable Key" is not set in the Stripe Payment Processor settings.');
-    }
-
-    if (!empty($error)) {
-      return implode('<p>', $error);
-    }
-    else {
-      return NULL;
-    }
-  }
-
-  /*
-   * CiviCRM extension uninstall()
-   * Not functioning in <=CiviCRM 4.1
-   */
-  public function uninstall() {
-    //Remove Stripe tables on uninstall
-    require_once "CRM/Core/DAO.php";
-    CRM_Core_DAO::executeQuery("DROP TABLE civicrm_stripe_customers");
-    CRM_Core_DAO::executeQuery("DROP TABLE civicrm_stripe_plans");
-    CRM_Core_DAO::executeQuery("DROP TABLE civicrm_stripe_subscriptions");
-  }
-
-  /**
-   * Submit a payment using Stripe's PHP API:
-   * https://stripe.com/docs/api?lang=php
-   *
-   * @param  array $params assoc array of input parameters for this transaction
-   *
-   * @return array the result in a nice formatted array (or an error object)
-   * @public
-   */
-  function doDirectPayment(&$params) {
-    //Include Stripe library & Set API credentials.
-    require_once("stripe-php/lib/Stripe.php");
-    Stripe::setApiKey($this->_paymentProcessor['user_name']);
-
-    //Stripe amount required in cents.
-    $amount = $params['amount'] * 100;
-    //It would require 3 digits after the decimal for one to make it this far, CiviCRM prevents this, but let's be redundant.
-    $amount = number_format($amount, 0, '', '');
-
-    //Check for existing customer, create new otherwise.
-    $email = $params['email'];
-    $customer_query = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_stripe_customers WHERE email = '$email'");
-
-    //Use Stripe.js instead of raw card details.
-    if(isset($params['stripe_token'])) {
-      $card_details = $params['stripe_token'];
-    } else {
-      CRM_Core_Error::fatal(ts('Stripe.js token was not passed!  Have you turned on the CiviCRM-Stripe CMS module?'));
-    }
-
-    /****
-     * If for some reason you cannot use Stripe.js and you are aware of PCI Compliance issues, here is the alternative to Stripe.js:
-     ****/ 
-    //Prepare Card details in advance to use for new Stripe Customer object if we need.
-/*   
-    $cc_name = $params['first_name'] . " ";
-    if (strlen($params['middle_name']) > 0) {
-      $cc_name .= $params['middle_name'] . " ";
-    }
-    $cc_name .= $params['last_name'];
-    
-    $card_details = array(
-  	  'number' => $params['credit_card_number'], 
-  	  'exp_month' => $params['month'], 
-  	  'exp_year' => $params['year'],
-      'cvc' => $params['cvv2'],
-      'name' => $cc_name,
-      'address_line1' => $params['street_address'],
-      'address_state' => $params['state_province'],
-      'address_zip' => $params['postal_code'],
-    );
-    */
-    
-    //Create a new Customer in Stripe
-    if(!isset($customer_query)) {
-      $stripe_customer = Stripe_Customer::create(array(
-  		'description' => 'Payment from CiviCRM',
-  		'card' => $card_details,
-        'email' => $email,
-      ));
-      
-      //Store the relationship between CiviCRM's email address for the Contact & Stripe's Customer ID
-      if(isset($stripe_customer)) {
-        CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_customers (email, id) VALUES ('$email', '$stripe_customer->id')");
-      } else {
-        CRM_Core_Error::fatal(ts('There was an error saving new customer within Stripe.  Is Stripe down?'));
-      }
-    } else {
-      $stripe_customer = Stripe_Customer::retrieve($customer_query);
-      if(!empty($stripe_customer)) {
-        $stripe_customer->card = $card_details;
-        $stripe_customer->save();
-      } else {
-        $stripe_customer = Stripe_Customer::create(array(
-  		  'description' => 'Donor from CiviCRM',
-  		  'card' => $card_details,
-          'email' => $email,
-        ));
-        
-        //Somehow a customer ID saved in the system no longer pairs with a Customer within Stripe.  (Perhaps deleted using Stripe interface?) 
-        //Store the relationship between CiviCRM's email address for the Contact & Stripe's Customer ID
-        if(isset($stripe_customer)) {
-          CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_customers WHERE email = '$email'");
-          CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_customers (email, id) VALUES ('$email', '$stripe_customer->id')");
-        } else {
-          CRM_Core_Error::fatal(ts('There was an error saving new customer within Stripe.  Is Stripe down?'));
-        }
-      }
-    }
-    
-    //Prepare the charge array, minus Customer/Card details.
-    $stripe_charge = array(
-      'amount' => $amount, 
-      'currency' => 'usd',
-      'description' => '# CiviCRM Donation Page # ' . $params['description'] .  ' # Invoice ID # ' . $params['invoiceID'],
-    );
-
-    //Use Stripe Customer if we have a valid one.  Otherwise just use the card.
-    if(!empty($stripe_customer->id)) {
-      $stripe_charge['customer'] = $stripe_customer->id;
-    } else {
-      $stripe_charge['card'] = $card_details;
-    }
-    
-    //Handle recurring payments in doRecurPayment().
-    if (CRM_Utils_Array::value('is_recur', $params) && $params['contributionRecurID']) {
-      return $this->doRecurPayment($params, $amount, $stripe_customer);
-    }
-       
-    //Fire away!
-    $stripe_response = Stripe_Charge::create($stripe_charge);
-    $params['trxn_id'] = $stripe_response->id;
-
-    return $params;
-  }
-  
- /**
-  * Submit a recurring payment using Stripe's PHP API:
-  * https://stripe.com/docs/api?lang=php
-  *
-  * @param  array $params assoc array of input parameters for this transaction
-  * @param  int $amount transaction amount in USD cents
-  * @param  object $stripe_customer Stripe customer object generated by Stripe API
-  * 
-  * @return array the result in a nice formatted array (or an error object)
-  * @public
-  */
-  function doRecurPayment(&$params, $amount, $stripe_customer) {
-    switch($this->_mode) {
-      case 'test':
-        $transaction_mode = 0;
-        break;
-      case 'live':
-        $transaction_mode = 1;
-    }
-    $frequency = $params['frequency_unit'];
-    $installments = $params['installments'];
-    $plan_id = "$frequency-$amount";
-    
-    $stripe_plan_query = CRM_Core_DAO::singleValueQuery("SELECT plan_id FROM civicrm_stripe_plans WHERE plan_id = '$plan_id'");
-
-    if(!isset($stripe_plan_query)) {
-      $formatted_amount =  "$" . number_format(($amount / 100), 2);
-      //Create a new Plan
-      $stripe_plan = Stripe_Plan::create(array( 
-      	"amount" => $amount,
-      	"interval" => $frequency,
-      	"name" => "CiviCRM $frequency" . 'ly ' . $formatted_amount,
-      	"currency" => "usd",
-      	"id" => $plan_id));
-      CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_plans (plan_id) VALUES ('$plan_id')");
-    }
-    
-    //Attach the Subscription to the Stripe Customer
-    $stripe_response = $stripe_customer->updateSubscription(array('prorate' => FALSE, 'plan' => $plan_id));
-    
-    $existing_subscription_query = CRM_Core_DAO::singleValueQuery("SELECT invoice_id FROM civicrm_stripe_subscriptions WHERE customer_id = '$stripe_customer->id'");
-    if(!empty($existing_subscription_query)) {
-      //Cancel existing Recurring Contribution in CiviCRM
-      $cancel_date = date("Y-m-d H:i:s");
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET cancel_date = '$cancel_date', contribution_status_id = '3' WHERE invoice_id = '$existing_subscription_query'");
-      //Delete the Stripe Subscription from our cron watch list.
-      CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_subscriptions WHERE invoice_id = '$existing_subscription_query'");
-    }
-
-    //Calculate timestamp for the last installment
-    $end_time = strtotime("+$installments $frequency");
-    $invoice_id = $params['invoiceID'];
-    CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_subscriptions (customer_id, invoice_id, end_time, is_live) VALUES ('$stripe_customer->id', '$invoice_id', '$end_time', '$transaction_mode')");
-    
-    $params['trxn_id'] = $stripe_response->id;
-    
-    return $params;
-  }
- 
-  /**
-   * Transfer method not in use
-   *
-   * @param array $params  name value pair of contribution data
-   *
-   * @return void
-   * @access public
-   *
-   */
-  function doTransferCheckout(&$params, $component) {
-    CRM_Core_Error::fatal(ts('Use direct billing instead of Transfer method.'));
-  }
-}
\ No newline at end of file
diff --git a/source/CRM/Core/Payment/Stripe.php b/source/CRM/Core/Payment/Stripe.php
deleted file mode 100644
index 7b32a3cf6658367fd42783f867f393836a6df12d..0000000000000000000000000000000000000000
--- a/source/CRM/Core/Payment/Stripe.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
- 
-require_once 'CRM/Core/Payment.php';
- 
-class CRM_Core_Payment_Stripe extends CRM_Core_Payment {
-  /**
-   * We only need one instance of this object. So we use the singleton
-   * pattern and cache the instance in this variable
-   *
-   * @var object
-   * @static
-   */
-  static private $_singleton = null;
- 
-  /**
-   * mode of operation: live or test
-   *
-   * @var object
-   * @static
-   */
-  static protected $_mode = null;
- 
-  /**
-   * Constructor
-   *
-   * @param string $mode the mode of operation: live or test
-   *
-   * @return void
-   */
-  function __construct($mode, &$paymentProcessor) {
-    $this->_mode             = $mode;
-    $this->_paymentProcessor = $paymentProcessor;
-    $this->_processorName    = ts('Stripe');
-  }
- 
-  /**
-   * Singleton function used to manage this object
-   *
-   * @param string $mode the mode of operation: live or test
-   *
-   * @return object
-   * @static
-   *
-   */
-  static function &singleton($mode, &$paymentProcessor) {
-      $processorName = $paymentProcessor['name'];
-      if (self::$_singleton[$processorName] === NULL ) {
-          self::$_singleton[$processorName] = new self($mode, $paymentProcessor);
-      } 
-      return self::$_singleton[$processorName];
-  }
- 
-  /**
-   * This function checks to see if we have the right config values
-   *
-   * @return string the error message if any
-   * @public
-   */
-  function checkConfig() {
-    $config = CRM_Core_Config::singleton();
-    $error = array();
-
-    //Create database tables if they haven't been.
-    if(!CRM_Core_DAO::checkTableExists('civicrm_stripe_customers')) {
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_customers` (
-  			`email` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
-  			`id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
-  			UNIQUE KEY `email` (`email`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-			");
-      
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_plans` (
-  			`plan_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  			UNIQUE KEY `plan_id` (`plan_id`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-		");
-      
-      CRM_Core_DAO::executeQuery("
-		CREATE TABLE IF NOT EXISTS `civicrm_stripe_subscriptions` (
-			`customer_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-			`invoice_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-			`end_time` int(11) NOT NULL DEFAULT '0',
-			`is_live` tinyint(4) NOT NULL COMMENT 'Whether this is a live or test transaction',
-			KEY `end_time` (`end_time`)
-			) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-		");
-      CRM_Core_Error::debug('Stripe Database tables created.');
-    }
-
-    if (empty($this->_paymentProcessor['user_name'])) {
-      $error[] = ts('The "Secret Key" is not set in the Stripe Payment Processor settings.');
-    }
-
-    if (empty($this->_paymentProcessor['password'])) {
-      $error[] = ts('The "Publishable Key" is not set in the Stripe Payment Processor settings.');
-    }
-
-    if (!empty($error)) {
-      return implode('<p>', $error);
-    }
-    else {
-      return NULL;
-    }
-  }
- 
-  /**
-   * Submit a payment using Stripe's PHP API:
-   * https://stripe.com/docs/api?lang=php
-   *
-   * @param  array $params assoc array of input parameters for this transaction
-   *
-   * @return array the result in a nice formatted array (or an error object)
-   * @public
-   */
-  function doDirectPayment(&$params) {
-    //Include Stripe library & Set API credentials.
-    require_once("stripe-php/lib/Stripe.php");
-    Stripe::setApiKey($this->_paymentProcessor['user_name']);
-
-    //Stripe amount required in cents.
-    $amount = $params['amount'] * 100;
-    //It would require 3 digits after the decimal for one to make it this far, CiviCRM prevents this, but let's be redundant.
-    $amount = number_format($amount, 0, '', '');
-
-    //Check for existing customer, create new otherwise.
-    $email = $params['email'];
-    $customer_query = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_stripe_customers WHERE email = '$email'");
-
-    //Use Stripe.js instead of raw card details.
-    if(isset($params['stripe_token'])) {
-      $card_details = $params['stripe_token'];
-    } else {
-      CRM_Core_Error::fatal(ts('Stripe.js token was not passed!  Have you turned on the CiviCRM-Stripe CMS module?'));
-    }
-
-    /****
-     * If for some reason you cannot use Stripe.js and you are aware of PCI Compliance issues, here is the alternative to Stripe.js:
-     ****/ 
-    //Prepare Card details in advance to use for new Stripe Customer object if we need.
-/*   
-    $cc_name = $params['first_name'] . " ";
-    if (strlen($params['middle_name']) > 0) {
-      $cc_name .= $params['middle_name'] . " ";
-    }
-    $cc_name .= $params['last_name'];
-    
-    $card_details = array(
-  	  'number' => $params['credit_card_number'], 
-  	  'exp_month' => $params['month'], 
-  	  'exp_year' => $params['year'],
-      'cvc' => $params['cvv2'],
-      'name' => $cc_name,
-      'address_line1' => $params['street_address'],
-      'address_state' => $params['state_province'],
-      'address_zip' => $params['postal_code'],
-    );
-    */
-    
-    //Create a new Customer in Stripe
-    if(!isset($customer_query)) {
-      $stripe_customer = Stripe_Customer::create(array(
-  		'description' => 'Payment from CiviCRM',
-  		'card' => $card_details,
-        'email' => $email,
-      ));
-      
-      //Store the relationship between CiviCRM's email address for the Contact & Stripe's Customer ID
-      if(isset($stripe_customer)) {
-        CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_customers (email, id) VALUES ('$email', '$stripe_customer->id')");
-      } else {
-        CRM_Core_Error::fatal(ts('There was an error saving new customer within Stripe.  Is Stripe down?'));
-      }
-    } else {
-      $stripe_customer = Stripe_Customer::retrieve($customer_query);
-      if(!empty($stripe_customer)) {
-        $stripe_customer->card = $card_details;
-        $stripe_customer->save();
-      } else {
-        $stripe_customer = Stripe_Customer::create(array(
-  		  'description' => 'Donor from CiviCRM',
-  		  'card' => $card_details,
-          'email' => $email,
-        ));
-        
-        //Somehow a customer ID saved in the system no longer pairs with a Customer within Stripe.  (Perhaps deleted using Stripe interface?) 
-        //Store the relationship between CiviCRM's email address for the Contact & Stripe's Customer ID
-        if(isset($stripe_customer)) {
-          CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_customers WHERE email = '$email'");
-          CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_customers (email, id) VALUES ('$email', '$stripe_customer->id')");
-        } else {
-          CRM_Core_Error::fatal(ts('There was an error saving new customer within Stripe.  Is Stripe down?'));
-        }
-      }
-    }
-    
-    //Prepare the charge array, minus Customer/Card details.
-    $stripe_charge = array(
-      'amount' => $amount, 
-      'currency' => 'usd',
-      'description' => '# CiviCRM Donation Page # ' . $params['description'] .  ' # Invoice ID # ' . $params['invoiceID'],
-    );
-
-    //Use Stripe Customer if we have a valid one.  Otherwise just use the card.
-    if(!empty($stripe_customer->id)) {
-      $stripe_charge['customer'] = $stripe_customer->id;
-    } else {
-      $stripe_charge['card'] = $card_details;
-    }
-    
-    //Handle recurring payments in doRecurPayment().
-    if (CRM_Utils_Array::value('is_recur', $params) && $params['contributionRecurID']) {
-      return $this->doRecurPayment($params, $amount, $stripe_customer);
-    }
-       
-    //Fire away!
-    $stripe_response = Stripe_Charge::create($stripe_charge);
-    $params['trxn_id'] = $stripe_response->id;
-
-    return $params;
-  }
-  
- /**
-  * Submit a recurring payment using Stripe's PHP API:
-  * https://stripe.com/docs/api?lang=php
-  *
-  * @param  array $params assoc array of input parameters for this transaction
-  * @param  int $amount transaction amount in USD cents
-  * @param  object $stripe_customer Stripe customer object generated by Stripe API
-  * 
-  * @return array the result in a nice formatted array (or an error object)
-  * @public
-  */
-  function doRecurPayment(&$params, $amount, $stripe_customer) {
-    switch($this->_mode) {
-      case 'test':
-        $transaction_mode = 0;
-        break;
-      case 'live':
-        $transaction_mode = 1;
-    }
-    $frequency = $params['frequency_unit'];
-    $installments = $params['installments'];
-    $plan_id = "$frequency-$amount";
-    
-    $stripe_plan_query = CRM_Core_DAO::singleValueQuery("SELECT plan_id FROM civicrm_stripe_plans WHERE plan_id = '$plan_id'");
-
-    if(!isset($stripe_plan_query)) {
-      $formatted_amount =  "$" . number_format(($amount / 100), 2);
-      //Create a new Plan
-      $stripe_plan = Stripe_Plan::create(array( 
-      	"amount" => $amount,
-      	"interval" => $frequency,
-      	"name" => "CiviCRM $frequency" . 'ly ' . $formatted_amount,
-      	"currency" => "usd",
-      	"id" => $plan_id));
-      CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_plans (plan_id) VALUES ('$plan_id')");
-    }
-    
-    //Attach the Subscription to the Stripe Customer
-    $stripe_response = $stripe_customer->updateSubscription(array('prorate' => FALSE, 'plan' => $plan_id));
-    
-    $existing_subscription_query = CRM_Core_DAO::singleValueQuery("SELECT invoice_id FROM civicrm_stripe_subscriptions WHERE customer_id = '$stripe_customer->id'");
-    if(!empty($existing_subscription_query)) {
-      //Cancel existing Recurring Contribution in CiviCRM
-      $cancel_date = date("Y-m-d H:i:s");
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET cancel_date = '$cancel_date', contribution_status_id = '3' WHERE invoice_id = '$existing_subscription_query'");
-      //Delete the Stripe Subscription from our cron watch list.
-      CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_subscriptions WHERE invoice_id = '$existing_subscription_query'");
-    }
-
-    //Calculate timestamp for the last installment
-    $end_time = strtotime("+$installments $frequency");
-    $invoice_id = $params['invoiceID'];
-    CRM_Core_DAO::executeQuery("INSERT INTO civicrm_stripe_subscriptions (customer_id, invoice_id, end_time, is_live) VALUES ('$stripe_customer->id', '$invoice_id', '$end_time', '$transaction_mode')");
-    
-    $params['trxn_id'] = $stripe_response->id;
-    
-    return $params;
-  }
- 
-  /**
-   * Transfer method not in use
-   *
-   * @param array $params  name value pair of contribution data
-   *
-   * @return void
-   * @access public
-   *
-   */
-  function doTransferCheckout(&$params, $component) {
-    CRM_Core_Error::fatal(ts('Use direct billing instead of Transfer method.'));
-  }
-}
\ No newline at end of file
diff --git a/source/README.txt b/source/README.txt
deleted file mode 100644
index 2481f029636af9df77db0000c5f5a1221b7ee78f..0000000000000000000000000000000000000000
--- a/source/README.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-------------
-Please Read:
-
-There are 3 versions of this extension available.  This is:
-source:  Pre-extension method, folder structure is in tact, manually place files accordingly.
-
-You also need a corresponding module for your CMS.  Here is where the modules can be found:
-Drupal:  git clone --recursive --branch master http://git.drupal.org/sandbox/drastik/1719796.git civicrm_stripe
-Joomla:  TBD
-WordPress:  TBD
-
-IMPORTANT:
-The Webhook.php file is in the 'extern' folder.  
-You have to make a Webhook rule in your Stripe account and enter the path to Webhook.php for recurring charges to end!
--You will need to run the .sql file to make sure the database tables get created & Stripe is added as a payment processor option.
-
-------------
-
-Installation Instructions:
-
-------------
-
-Pre-extension (source) instructions:
-
-Folder structure is left in tact.
-Place Stripe.php in civicrm/CRM/Core/Payment/Stripe.php
-
-Place civicrm_templates folder anywhere and inform CiviCRM of your "Custom Templates" location in this admin page:  site.com/civicrm/admin/setting/path
-
-Copy files in extern to your CiviCRM extern folder  "civicrm/extern"
-Make a Webhook rule in your Stripe account and enter the path to Webhook.php
-
-Copy Stripe's PHP library folder 'stripe-php' to civicrm/packages/stripe-php  
-You can get Stripe's PHP library here: https://github.com/stripe/stripe-php
-
-Run the included SQL file "civicrm_stripe.sql" to handle the DB-related needs.
-
-------------
\ No newline at end of file
diff --git a/source/civicrm_stripe.sql b/source/civicrm_stripe.sql
deleted file mode 100755
index b47b7235e2f20202518afd213d32f8ed7cefb34b..0000000000000000000000000000000000000000
--- a/source/civicrm_stripe.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `description`, `is_active`, `is_default`, `user_name_label`, `password_label`, `signature_label`, `subject_label`, `class_name`, `url_site_default`, `url_api_default`, `url_recur_default`, `url_button_default`, `url_site_test_default`, `url_api_test_default`, `url_recur_test_default`, `url_button_test_default`, `billing_mode`, `is_recur`, `payment_type`) VALUES
-('', 'Stripe', 'Stripe', NULL, 1, NULL, 'Secret Key', 'Publishable Key', NULL, NULL, 'Payment_Stripe', 'https://api.stripe.com/v1', NULL, 'https://api.stripe.com/v1', NULL, 'https://api.stripe.com/v1', NULL, 'https://api.stripe.com/v1', NULL, 1, 1, 1);
-
-
---
--- Table structure for table `civicrm_stripe_customers`
---
-
-CREATE TABLE IF NOT EXISTS `civicrm_stripe_customers` (
-  `email` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
-  `id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
-  UNIQUE KEY `email` (`email`)
-) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
-
---
--- Table structure for table `civicrm_stripe_plans`
---
-
-CREATE TABLE IF NOT EXISTS `civicrm_stripe_plans` (
-  `plan_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  UNIQUE KEY `plan_id` (`plan_id`)
-) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
-
---
--- Table structure for table `civicrm_stripe_subscriptions`
---
-
-CREATE TABLE IF NOT EXISTS `civicrm_stripe_subscriptions` (
-  `customer_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `invoice_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `end_time` int(11) NOT NULL DEFAULT '0',
-  `is_live` tinyint(4) NOT NULL COMMENT 'Whether this is a live or test transaction',
-  KEY `end_time` (`end_time`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
diff --git a/source/civicrm_templates/CRM/Core/BillingBlock.tpl b/source/civicrm_templates/CRM/Core/BillingBlock.tpl
deleted file mode 100644
index 89c3ff614fbe8ef8066468495d677e91d45bb09a..0000000000000000000000000000000000000000
--- a/source/civicrm_templates/CRM/Core/BillingBlock.tpl
+++ /dev/null
@@ -1,228 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | CiviCRM version 4.1                                                |
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2011                                |
- +--------------------------------------------------------------------+
- | This file is a part of CiviCRM.                                    |
- |                                                                    |
- | CiviCRM is free software; you can copy, modify, and distribute it  |
- | under the terms of the GNU Affero General Public License           |
- | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
- |                                                                    |
- | CiviCRM is distributed in the hope that it will be useful, but     |
- | WITHOUT ANY WARRANTY; without even the implied warranty of         |
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
- | See the GNU Affero General Public License for more details.        |
- |                                                                    |
- | You should have received a copy of the GNU Affero General Public   |
- | License and the CiviCRM Licensing Exception along                  |
- | with this program; if not, contact CiviCRM LLC                     |
- | at info[AT]civicrm[DOT]org. If you have questions about the        |
- | GNU Affero General Public License or the licensing of CiviCRM,     |
- | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
- +--------------------------------------------------------------------+
-*}
-{if $form.credit_card_number or $form.bank_account_number}
-<!-- START Stripe -->
-  {if $paymentProcessor.payment_processor_type == 'Stripe'}
-    <script type="text/javascript">
-  	var stripe_publishable_key = '{$paymentProcessor.password}';
-  	
-	{literal}
-	  cj(function() {
-		cj(document).ready(function(){
-		  cj.getScript('https://js.stripe.com/v1/', function(){ 
-		 	Stripe.setPublishableKey(stripe_publishable_key);
-		  });
-		  /* 
-		   * Identify the payment form.
-		   * Don't reference by form#id since it changes between payment pages (Contribution / Event / etc).
-		   */
-		  cj("#crm-container>form").addClass('stripe-payment-form');
-		  cj("form.stripe-payment-form").submit(function(event) {
-    	    // disable the submit button to prevent repeated clicks
-    	  	cj('form.stripe-payment-form input.form-submit').attr("disabled", "disabled");
-
-    	 	Stripe.createToken({
-        	  number: cj('#credit_card_number').val(),
-        	  cvc: cj('#cvv2').val(),
-        	  exp_month: cj('#credit_card_exp_date\\[M\\]').val(),
-        	  exp_year: cj('#credit_card_exp_date\\[Y\\]').val()
-    	  	}, stripeResponseHandler);
-
-    	  	// prevent the form from submitting with the default action
-    	  	return false;
-  		  });
-		});
-		
-		//Response from Stripe.createToken.
-		function stripeResponseHandler(status, response) {		  
-		  if (response.error) {
-        	// show the errors on the form
-        	if(cj(".messages.crm-error.stripe-message").length > 0) {
-        		cj(".messages.crm-error.stripe-message").slideUp();
-        		cj(".messages.crm-error.stripe-message").remove();
-        	}
-			cj("form.stripe-payment-form").prepend('<div class="messages crm-error stripe-message">'
-				+'<strong>Payment Error Response:</strong>'
-	   			  +'<ul id="errorList">'
-	         		+'<li>Error: ' + response.error.message + '</li>'
-	   			  +'</ul>'
-   				+'</div>');
-
-        	cj('form.stripe-payment-form input.form-submit').removeAttr("disabled");
-
-    	  } else {
-        	var token = response['id'];
-        	// Update form with the token & submit
-        	cj("input#stripe-token").val(token);
-        	cj("form.stripe-payment-form").get(0).submit();
-    	  }
-		}
-	  });
-    {/literal}
-    </script>
-  {/if}
-<!-- END Stripe -->
-    <div id="payment_information">
-        <fieldset class="billing_mode-group {if $paymentProcessor.payment_type & 2}direct_debit_info-group{else}credit_card_info-group{/if}">
-            <legend>
-               {if $paymentProcessor.payment_type & 2}
-                    {ts}Direct Debit Information{/ts}
-               {else}
-                   {ts}Credit Card Information{/ts}
-               {/if}
-            </legend> 
-            {if $paymentProcessor.billing_mode & 2 and !$hidePayPalExpress }
-            <div class="crm-section no-label paypal_button_info-section">	
-			    <div class="content description">
-			        {ts}If you have a PayPal account, you can click the PayPal button to continue. Otherwise, fill in the credit card and billing information on this form and click <strong>Continue</strong> at the bottom of the page.{/ts}
-				</div>
-			</div>
-			 <div class="crm-section no-label {$form.$expressButtonName.name}-section">	
-			    <div class="content description">
-			        {$form.$expressButtonName.html}
-			        <div class="description">Save time. Checkout securely. Pay without sharing your financial information. </div>
-				</div>
-			</div>
-            {/if} 
-
-            {if $paymentProcessor.billing_mode & 1}
-                <div class="crm-section billing_mode-section {if $paymentProcessor.payment_type & 2}direct_debit_info-section{else}credit_card_info-section{/if}">
-                   {if $paymentProcessor.payment_type & 2}
-                        <div class="crm-section {$form.account_holder.name}-section">	
-							<div class="label">{$form.account_holder.label}</div>
-                            <div class="content">{$form.account_holder.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_account_number.name}-section">	
-							<div class="label">{$form.bank_account_number.label}</div>
-                            <div class="content">{$form.bank_account_number.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_identification_number.name}-section">	
-							<div class="label">{$form.bank_identification_number.label}</div>
-                            <div class="content">{$form.bank_identification_number.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.bank_name.name}-section">	
-							<div class="label">{$form.bank_name.label}</div>
-                            <div class="content">{$form.bank_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                   {else}
-                		<div class="crm-section {$form.credit_card_type.name}-section">	
-							<div class="label">{$form.credit_card_type.label}</div>
-                			<div class="content">{$form.credit_card_type.html}</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.credit_card_number.name}-section">	
-							<div class="label">{$form.credit_card_number.label}</div>
-                			<div class="content">{$form.credit_card_number.html}
-                				<div class="description">{ts}Enter numbers only, no spaces or dashes.{/ts}</div>
-                			</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.cvv2.name}-section">	
-							<div class="label">{$form.cvv2.label}</div>
-                			<div class="content">
-                				{$form.cvv2.html}
-                				<img src="{$config->resourceBase}i/mini_cvv2.gif" alt="{ts}Security Code Location on Credit Card{/ts}" style="vertical-align: text-bottom;" />
-                				<div class="description">{ts}Usually the last 3-4 digits in the signature area on the back of the card.{/ts}</div>
-                			</div>
-                			<div class="clear"></div> 
-                		</div>
-                		<div class="crm-section {$form.credit_card_exp_date.name}-section">	
-							<div class="label">{$form.credit_card_exp_date.label}</div>
-                			<div class="content">{$form.credit_card_exp_date.html}</div>
-                			<div class="clear"></div> 
-                		</div>
-                    {/if}
-                </div>
-                </fieldset>
-
-                <fieldset class="billing_name_address-group">
-                	<legend>{ts}Billing Name and Address{/ts}</legend>
-                    <div class="crm-section billing_name_address-section">
-                        <div class="crm-section billingNameInfo-section">	
-                        	<div class="content description">
-                        	  {if $paymentProcessor.payment_type & 2}
-                        	     {ts}Enter the name of the account holder, and the corresponding billing address.{/ts}
-                        	  {else}
-                        	     {ts}Enter the name as shown on your credit or debit card, and the billing address for this card.{/ts}
-                        	  {/if}
-                        	</div>
-                        </div>
-                        <div class="crm-section {$form.billing_first_name.name}-section">	
-							<div class="label">{$form.billing_first_name.label}</div>
-                            <div class="content">{$form.billing_first_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.billing_middle_name.name}-section">	
-							<div class="label">{$form.billing_middle_name.label}</div>
-                            <div class="content">{$form.billing_middle_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        <div class="crm-section {$form.billing_last_name.name}-section">	
-							<div class="label">{$form.billing_last_name.label}</div>
-                            <div class="content">{$form.billing_last_name.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_street_address-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_city-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_country_id-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html|crmReplace:class:big}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_state_province_id-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html|crmReplace:class:big}</div>
-                            <div class="clear"></div> 
-                        </div>
-                        {assign var=n value=billing_postal_code-$bltID}
-                        <div class="crm-section {$form.$n.name}-section">	
-							<div class="label">{$form.$n.label}</div>
-                            <div class="content">{$form.$n.html}</div>
-                            <div class="clear"></div> 
-                        </div>
-                    </div>
-                </fieldset>
-            {else}
-                </fieldset>
-            {/if}
-    </div>
-{/if}
\ No newline at end of file
diff --git a/source/extern/Webhook.php b/source/extern/Webhook.php
deleted file mode 100644
index 56508e79b4e3a2d8575d151cef37e76135e57e6b..0000000000000000000000000000000000000000
--- a/source/extern/Webhook.php
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/*
- * Handle Stripe Webhooks for recurring payments
- */
-
-session_start();
-
-require_once '../civicrm.config.php';
-require_once 'CRM/Core/Config.php';
-
-$config = & CRM_Core_Config::singleton();
-
-//Get the data from stripe
-$data_raw = file_get_contents("php://input");
-$data = json_decode($data_raw);
-if(! $data) {
-  CRM_Core_Error::Fatal("Stripe Callback: cannot json_decode data, exiting. <br /> $data");
-}
-
-$test_mode = ! $data->livemode;
-
-$stripe_key = CRM_Core_DAO::singleValueQuery("SELECT user_name FROM civicrm_payment_processor WHERE payment_processor_type = 'Stripe' AND is_test = '$test_mode'");
-require_once ("packages/stripe-php/lib/Stripe.php");
-Stripe::setApiKey($stripe_key);
-
-//Retrieve Event from Stripe using ID even though we already have the values now.
-//This is for extra security precautions mentioned here: https://stripe.com/docs/webhooks
-$stripe_event_data = Stripe_Event::retrieve($data->id);
-$customer_id = $stripe_event_data->data->object->customer;
-switch($stripe_event_data->type) {
-  //Successful recurring payment
-  case 'invoice.payment_succeeded' :
-    //Get the Stripe charge object
-    try {
-      $charge = Stripe_Charge::retrieve($stripe_event_data->data->object->charge);
-    } catch(Exception $e) {
-      CRM_Core_Error::Fatal("Failed to retrieve Stripe charge.  Message: " . $e->getMessage());
-      break;
-    }
-    
-    //Find the recurring contribution in CiviCRM by mapping it from Stripe
-    $rel_info_query = CRM_Core_DAO::executeQuery("SELECT invoice_id, end_time FROM civicrm_stripe_subscriptions WHERE customer_id = '$customer_id'");
-    if(! empty($rel_info_query)) {
-      $rel_info_query->fetch();
-      $invoice_id = $rel_info_query->invoice_id;
-      $end_time = $rel_info_query->end_time;
-    } else {
-      CRM_Core_Error::Fatal("Error relating this customer ($customer_id) to the one in civicrm_stripe_subscriptions");
-    }
-    
-    //Compare against now + 24hrs to prevent charging 1 extra day.
-    $time_compare = time() + 86400;
-    
-    //Fetch Civi's info about this recurring object
-    $recur_contrib_query = CRM_Core_DAO::executeQuery("SELECT id, contact_id, currency, contribution_status_id, is_test, contribution_type_id, payment_instrument_id, campaign_id FROM civicrm_contribution_recur WHERE invoice_id = '$invoice_id'");
-    if(! empty($recur_contrib_query)) {
-      $recur_contrib_query->fetch();
-    } else {
-      CRM_Core_Error::Fatal("ERROR: Stripe triggered a Webhook on an invoice not found in civicrm_contribution_recur: " . $stripe_event_data);
-    }
-    //Build some params
-    $stripe_customer = Stripe_Customer::retrieve($customer_id);
-    $recieve_date = date("Y-m-d H:i:s", $charge->created);
-    $total_amount = $charge->amount / 100;
-    $fee_amount = $charge->fee / 100;
-    $net_amount = $total_amount - $fee_amount;
-    $transaction_id = $charge->id;
-    $new_invoice_id = $stripe_event_data->data->object->id;
-    if(empty($recur_contrib_query->campaign_id)) {
-      $recur_contrib_query->campaign_id = 'NULL';
-    }
-    
-    $first_contrib_check = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_contribution WHERE invoice_id = '$invoice_id' AND contribution_status_id = '2'");
-    if(! empty($first_contrib_check)) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution SET contribution_status_id = '1' WHERE id = '$first_contrib_check'");
-      return;
-    }
-    
-    //Create this instance of the contribution for accounting in CiviCRM
-    CRM_Core_DAO::executeQuery("
-        	INSERT INTO civicrm_contribution (
-        	contact_id, contribution_type_id, payment_instrument_id, receive_date, 
-        	total_amount, fee_amount, net_amount, trxn_id, invoice_id, currency,
-        	contribution_recur_id, is_test, contribution_status_id, campaign_id
-        	) VALUES (
-        	'$recur_contrib_query->contact_id', '$recur_contrib_query->contribution_type_id', '$recur_contrib_query->payment_instrument_id', '$recieve_date', 
-        	'$total_amount', '$fee_amount', '$net_amount', '$transaction_id', '$new_invoice_id', '$recur_contrib_query->currency', 
-        	'$recur_contrib_query->id', '$recur_contrib_query->is_test', '1', $recur_contrib_query->campaign_id
-        	)");
-    
-    if($time_compare > $end_time) {
-      $end_date = date("Y-m-d H:i:s", $end_time);
-      //Final payment.  Recurring contribution complete
-      $stripe_customer->cancelSubscription();
-      CRM_Core_DAO::executeQuery("DELETE FROM civicrm_stripe_subscriptions WHERE invoice_id = '$invoice_id'");
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET end_date = '$end_date', contribution_status_id = '1' WHERE invoice_id = '$invoice_id'");
-      return;
-    }
-    
-    //Successful charge & more to come so set recurring contribution status to In Progress
-    if($recur_contrib_query->contribution_status_id != 5) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET contribution_status_id = 5 WHERE invoice_id = '$invoice_id'");
-      return;
-    }
-    
-    break;
-  
-  //Failed recurring payment
-  case 'invoice.payment_failed' :
-    //Get the Stripe charge object
-    try {
-      $charge = Stripe_Charge::retrieve($stripe_event_data->data->object->charge);
-    } catch(Exception $e) {
-      CRM_Core_Error::Fatal("Failed to retrieve Stripe charge.  Message: " . $e->getMessage());
-      break;
-    }
-    
-    //Find the recurring contribution in CiviCRM by mapping it from Stripe
-    $invoice_id = CRM_Core_DAO::singleValueQuery("SELECT invoice_id FROM civicrm_stripe_subscriptions WHERE customer_id = '$customer_id'");
-    if(empty($invoice_id)) {
-      CRM_Core_Error::Fatal("Error relating this customer ($customer_id) to the one in civicrm_stripe_subscriptions");
-    }
-    
-    //Fetch Civi's info about this recurring object
-    $recur_contrib_query = CRM_Core_DAO::executeQuery("SELECT id, contact_id, currency, contribution_status_id, is_test, contribution_type_id, payment_instrument_id, campaign_id FROM civicrm_contribution_recur WHERE invoice_id = '$invoice_id'");
-    if(! empty($recur_contrib_query)) {
-      $recur_contrib_query->fetch();
-    } else {
-      CRM_Core_Error::Fatal("ERROR: Stripe triggered a Webhook on an invoice not found in civicrm_contribution_recur: " . $stripe_event_data);
-    }
-    //Build some params
-    $recieve_date = date("Y-m-d H:i:s", $charge->created);
-    $total_amount = $charge->amount / 100;
-    $fee_amount = $charge->fee / 100;
-    $net_amount = $total_amount - $fee_amount;
-    $transaction_id = $charge->id;
-    if(empty($recur_contrib_query->campaign_id)) {
-      $recur_contrib_query->campaign_id = 'NULL';
-    }
-    
-    //Create this instance of the contribution for accounting in CiviCRM
-    CRM_Core_DAO::executeQuery("
-        	INSERT INTO civicrm_contribution (
-        	contact_id, contribution_type_id, payment_instrument_id, receive_date, 
-        	total_amount, fee_amount, net_amount, trxn_id, invoice_id, currency,
-        	contribution_recur_id, is_test, contribution_status_id, campaign_id
-        	) VALUES (
-        	'$recur_contrib_query->contact_id', '$recur_contrib_query->contribution_type_id', '$recur_contrib_query->payment_instrument_id', '$recieve_date', 
-        	'$total_amount', '$fee_amount', '$net_amount', '$transaction_id', '$invoice_id', '$recur_contrib_query->currency', 
-        	'$recur_contrib_query->id', '$recur_contrib_query->is_test', '4', $recur_contrib_query->campaign_id
-        	)");
-    
-    //Failed charge.  Set to status to: Failed
-    if($recur_contrib_query->contribution_status_id != 4) {
-      CRM_Core_DAO::executeQuery("UPDATE civicrm_contribution_recur SET contribution_status_id = 4 WHERE invoice_id = '$invoice_id'");
-      return;
-    } else {  //This has failed more than once.  Now what?
-    }
-    
-    break;
-  
-  //One-time donation and per invoice payment
-  case 'charge.succeeded' :
-    //Not implemented
-    break;
-
-}