diff --git a/app/controllers/discourse_donations/charges_controller.rb b/app/controllers/discourse_donations/charges_controller.rb
index 9fcac4f..c45122c 100644
--- a/app/controllers/discourse_donations/charges_controller.rb
+++ b/app/controllers/discourse_donations/charges_controller.rb
@@ -11,7 +11,7 @@ module DiscourseDonations
currency = SiteSetting.discourse_donations_currency
customer = Stripe::Customer.create(
- :email => current_user.email,
+ :email => params[:email] || current_user.email,
:source => params[:stripeToken]
)
diff --git a/assets/javascripts/discourse/components/stripe-card.js.es6 b/assets/javascripts/discourse/components/stripe-card.js.es6
index 8dc32cc..82a63f1 100644
--- a/assets/javascripts/discourse/components/stripe-card.js.es6
+++ b/assets/javascripts/discourse/components/stripe-card.js.es6
@@ -18,6 +18,7 @@ export default Ember.Component.extend({
init() {
this._super();
+ this.set('anon', (Discourse.User.current() == null));
this.set('settings', getRegister(this).lookup('site-settings:main'));
this.set('stripe', Stripe(this.get('settings').discourse_donations_public_key));
},
@@ -51,7 +52,8 @@ export default Ember.Component.extend({
let params = {
stripeToken: data.token.id,
- amount: self.get('amount') * 100
+ amount: self.get('amount') * 100,
+ email: self.get('email')
};
ajax('/charges', { data: params, method: 'post' }).then(data => {
diff --git a/assets/javascripts/discourse/discourse-payments-route-map.js.es6 b/assets/javascripts/discourse/discourse-payments-route-map.js.es6
index 85513dd..690c16e 100644
--- a/assets/javascripts/discourse/discourse-payments-route-map.js.es6
+++ b/assets/javascripts/discourse/discourse-payments-route-map.js.es6
@@ -6,5 +6,5 @@ export default {
};
export default function() {
- this.route('stripe');
+ this.route('dd');
};
diff --git a/assets/javascripts/discourse/templates/components/stripe-card.hbs b/assets/javascripts/discourse/templates/components/stripe-card.hbs
index fdfa2cb..73b7471 100644
--- a/assets/javascripts/discourse/templates/components/stripe-card.hbs
+++ b/assets/javascripts/discourse/templates/components/stripe-card.hbs
@@ -15,6 +15,15 @@
{{#d-button action="submitStripeCard" disabled=transactionInProgress class="btn btn-primary btn-payment"}}
@@ -32,6 +41,10 @@
{{#if success}}
-
{{i18n 'discourse_donations.messages.success'}}
+
+
+ {{i18n 'discourse_donations.messages.success'}}
+
+
{{/if}}
diff --git a/assets/javascripts/discourse/templates/connectors/extra-nav-item/donate.hbs b/assets/javascripts/discourse/templates/connectors/extra-nav-item/donate.hbs
index e5e32c5..1d5e6d6 100644
--- a/assets/javascripts/discourse/templates/connectors/extra-nav-item/donate.hbs
+++ b/assets/javascripts/discourse/templates/connectors/extra-nav-item/donate.hbs
@@ -1,5 +1,3 @@
-{{#if currentUser.username}}
-
- {{i18n 'discourse_donations.nav_item'}}
-
-{{/if}}
+
+ {{i18n 'discourse_donations.nav_item'}}
+
diff --git a/assets/javascripts/discourse/templates/dd.hbs b/assets/javascripts/discourse/templates/dd.hbs
new file mode 100644
index 0000000..5287aa0
--- /dev/null
+++ b/assets/javascripts/discourse/templates/dd.hbs
@@ -0,0 +1,2 @@
+
{{i18n 'discourse_donations.title'}}
+{{stripe-card}}
diff --git a/assets/javascripts/discourse/templates/stripe.hbs b/assets/javascripts/discourse/templates/stripe.hbs
deleted file mode 100644
index 3b18e51..0000000
--- a/assets/javascripts/discourse/templates/stripe.hbs
+++ /dev/null
@@ -1 +0,0 @@
-hello world
diff --git a/config/routes.rb b/config/routes.rb
index 6e644df..74f4f98 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,5 +1,5 @@
DiscourseDonations::Engine.routes.draw do
resources :charges, only: [:create]
get 'users/:username/payments' => 'payments#show'
- get 'stripe' => 'payments#show'
+ get 'dd' => 'payments#show'
end
diff --git a/spec/controllers/discourse_donations/charges_controller_spec.rb b/spec/controllers/discourse_donations/charges_controller_spec.rb
index eef34d2..09aab13 100644
--- a/spec/controllers/discourse_donations/charges_controller_spec.rb
+++ b/spec/controllers/discourse_donations/charges_controller_spec.rb
@@ -1,11 +1,16 @@
require 'rails_helper'
+require_relative '../../support/dd_helper'
module DiscourseDonations
RSpec.describe ChargesController, type: :controller do
routes { DiscourseDonations::Engine.routes }
- #
+
+ before do
+ SiteSetting.stubs(:discourse_donations_secret_key).returns('secret-key-yo')
+ current_user = log_in(:coding_horror)
+ end
+
it 'responds with ok' do
- skip 'need to get fixtures'
post :create
expect(response).to have_http_status(200)
end
diff --git a/spec/support/dd_helper.rb b/spec/support/dd_helper.rb
new file mode 100644
index 0000000..6dd0ef8
--- /dev/null
+++ b/spec/support/dd_helper.rb
@@ -0,0 +1,136 @@
+
+#TODO register some fixtures
+
+FakeWeb.register_uri(:post, 'https://api.stripe.com/v1/customers',
+ :body => '{
+ "id": "cus_AJqrL4OU1sffPl",
+ "object": "customer",
+ "account_balance": 0,
+ "created": 1489965018,
+ "currency": "aud",
+ "default_source": "card_19zDADEfVxQsvRbHVooMYHqg",
+ "delinquent": false,
+ "description": null,
+ "discount": null,
+ "email": "jo@example.com",
+ "livemode": false,
+ "metadata": {
+ },
+ "shipping": null,
+ "sources": {
+ "object": "list",
+ "data": [
+ {
+ "id": "card_19zDADEfVxQsvRbHVooMYHqg",
+ "object": "card",
+ "address_city": null,
+ "address_country": null,
+ "address_line1": null,
+ "address_line1_check": null,
+ "address_line2": null,
+ "address_state": null,
+ "address_zip": null,
+ "address_zip_check": null,
+ "brand": "MasterCard",
+ "country": "US",
+ "customer": "cus_AJqrL4OU1sffPl",
+ "cvc_check": "pass",
+ "dynamic_last4": null,
+ "exp_month": 11,
+ "exp_year": 2022,
+ "funding": "credit",
+ "last4": "4444",
+ "metadata": {
+ },
+ "name": null,
+ "tokenization_method": null
+ }
+ ],
+ "has_more": false,
+ "total_count": 1,
+ "url": "/v1/customers/cus_AJqrL4OU1sffPl/sources"
+ }
+ }',
+ :status => ['200', 'OK']
+)
+
+FakeWeb.register_uri(:post, 'https://api.stripe.com/v1/charges',
+ :body => '{
+ "id": "ch_19zDAFEfVxQsvRbHtAwsCvV0",
+ "object": "charge",
+ "amount": 100,
+ "amount_refunded": 0,
+ "application": null,
+ "application_fee": null,
+ "balance_transaction": "txn_19wkkaEfVxQsvRbH8rnq3SAK",
+ "captured": true,
+ "created": 1489965019,
+ "currency": "aud",
+ "customer": "cus_AJqrL4OU1sffPl",
+ "description": "Donation",
+ "destination": null,
+ "dispute": null,
+ "failure_code": null,
+ "failure_message": null,
+ "fraud_details": {
+ },
+ "invoice": null,
+ "livemode": false,
+ "metadata": {
+ },
+ "on_behalf_of": null,
+ "order": null,
+ "outcome": {
+ "network_status": "approved_by_network",
+ "reason": null,
+ "risk_level": "normal",
+ "seller_message": "Payment complete.",
+ "type": "authorized"
+ },
+ "paid": true,
+ "receipt_email": null,
+ "receipt_number": null,
+ "refunded": false,
+ "refunds": {
+ "object": "list",
+ "data": [
+
+ ],
+ "has_more": false,
+ "total_count": 0,
+ "url": "/v1/charges/ch_19zDAFEfVxQsvRbHtAwsCvV0/refunds"
+ },
+ "review": null,
+ "shipping": null,
+ "source": {
+ "id": "card_19zDADEfVxQsvRbHVooMYHqg",
+ "object": "card",
+ "address_city": null,
+ "address_country": null,
+ "address_line1": null,
+ "address_line1_check": null,
+ "address_line2": null,
+ "address_state": null,
+ "address_zip": null,
+ "address_zip_check": null,
+ "brand": "MasterCard",
+ "country": "US",
+ "customer": "cus_AJqrL4OU1sffPl",
+ "cvc_check": "pass",
+ "dynamic_last4": null,
+ "exp_month": 11,
+ "exp_year": 2022,
+ "funding": "credit",
+ "last4": "4444",
+ "metadata": {
+ },
+ "name": null,
+ "tokenization_method": null
+ },
+ "source_transfer": null,
+ "statement_descriptor": null,
+ "status": "succeeded",
+ "transfer_group": null
+ }',
+ :status => ['200', 'OK']
+)