mirror of
https://github.com/discourse/discourse-subscriptions.git
synced 2025-03-06 09:39:51 +00:00
add anon payments
This commit is contained in:
parent
118d71cfc7
commit
92e5bf76d7
@ -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]
|
||||
)
|
||||
|
||||
|
@ -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 => {
|
||||
|
@ -6,5 +6,5 @@ export default {
|
||||
};
|
||||
|
||||
export default function() {
|
||||
this.route('stripe');
|
||||
this.route('dd');
|
||||
};
|
||||
|
@ -15,6 +15,15 @@
|
||||
<div id="card-element" class="controls"></div>
|
||||
</div>
|
||||
|
||||
{{#if anon}}
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="card-element">{{i18n 'user.email.title'}}</label>
|
||||
<div class="controls">
|
||||
{{text-field value=email}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="control-group save-button">
|
||||
<div class="controls">
|
||||
{{#d-button action="submitStripeCard" disabled=transactionInProgress class="btn btn-primary btn-payment"}}
|
||||
@ -32,6 +41,10 @@
|
||||
</div>
|
||||
|
||||
{{#if success}}
|
||||
<span>{{i18n 'discourse_donations.messages.success'}}</span>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<span>{{i18n 'discourse_donations.messages.success'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</form>
|
||||
|
@ -1,5 +1,3 @@
|
||||
{{#if currentUser.username}}
|
||||
<a href="/users/{{currentUser.username}}/payments">
|
||||
{{i18n 'discourse_donations.nav_item'}}
|
||||
</a>
|
||||
{{/if}}
|
||||
<a href="/dd">
|
||||
{{i18n 'discourse_donations.nav_item'}}
|
||||
</a>
|
||||
|
2
assets/javascripts/discourse/templates/dd.hbs
Normal file
2
assets/javascripts/discourse/templates/dd.hbs
Normal file
@ -0,0 +1,2 @@
|
||||
<h1>{{i18n 'discourse_donations.title'}}</h1>
|
||||
{{stripe-card}}
|
@ -1 +0,0 @@
|
||||
hello world
|
@ -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
|
||||
|
@ -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
|
||||
|
136
spec/support/dd_helper.rb
Normal file
136
spec/support/dd_helper.rb
Normal file
@ -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']
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user