effective_orders 4.2.7 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/effective_orders/stripe.png +0 -0
- data/app/assets/javascripts/effective_orders/providers/stripe.js +97 -0
- data/app/controllers/effective/providers/pretend.rb +6 -2
- data/app/controllers/effective/providers/stripe.rb +49 -46
- data/app/helpers/effective_stripe_helper.rb +34 -10
- data/app/models/effective/customer.rb +13 -0
- data/app/models/effective/subscripter.rb +1 -6
- data/app/views/effective/orders/_checkout_step2.html.haml +18 -19
- data/app/views/effective/orders/pretend/_form.html.haml +4 -1
- data/app/views/effective/orders/stripe/_element.html.haml +8 -0
- data/app/views/effective/orders/stripe/_form.html.haml +29 -6
- data/config/routes.rb +1 -1
- data/db/migrate/01_create_effective_orders.rb.erb +1 -0
- data/lib/effective_orders/engine.rb +4 -0
- data/lib/effective_orders/version.rb +1 -1
- metadata +5 -3
- data/app/assets/javascripts/effective_orders/providers/stripe.js.coffee +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78fe7109ba11df3b289f3fe0180f8d0b2696115899428f38b7862d509e0f9f90
|
4
|
+
data.tar.gz: 5681ed2fce8ede2be574c640e04f782af4ddabaab054df96b67273011416acc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b967a19a627fe54a542887483ca2868ff56cca6fb7fdf59a10efcb4979b1d3a9e6beaa055a655fca8a4af6480b111eee5b3fafa57af0b6ee9760903ab5e5b9ca
|
7
|
+
data.tar.gz: 125899ef092719eda6cda5f22b02a1d2eb4e56a31c6812b80eabb66a603ba1b918aa72ae7ebae10ce4f18f6cbbf19d986ac6ce755c1c531959befd477e2e212f
|
Binary file
|
@@ -0,0 +1,97 @@
|
|
1
|
+
class StripeForm {
|
2
|
+
initialize() {
|
3
|
+
let $form = $('form[data-stripe-form]').first();
|
4
|
+
if ($form.length == 0) { return false; }
|
5
|
+
|
6
|
+
this.$form = $form;
|
7
|
+
this.$paymentIntentId = this.$form.find("input[name$='[payment_intent_id]']").first();
|
8
|
+
|
9
|
+
this.data = $form.data('stripe-form');
|
10
|
+
this.stripe = Stripe(this.data.key);
|
11
|
+
this.card = this.stripe.elements().create("card", { style: this.style() });
|
12
|
+
|
13
|
+
this.mount();
|
14
|
+
}
|
15
|
+
|
16
|
+
mount() {
|
17
|
+
this.card.mount("#stripe-card-element");
|
18
|
+
|
19
|
+
this.card.addEventListener('change', function ({ error }) {
|
20
|
+
if (error) {
|
21
|
+
$('#stripe-card-errors').text(error.message);
|
22
|
+
} else {
|
23
|
+
$('#stripe-card-errors').text('');
|
24
|
+
}
|
25
|
+
});
|
26
|
+
|
27
|
+
this.$form.on('click', '[type=submit]', (event) => { this.submit(event) });
|
28
|
+
}
|
29
|
+
|
30
|
+
shouldUseNewCard() {
|
31
|
+
let $newCardForm = this.$form.children('.collapse.show')
|
32
|
+
|
33
|
+
return (
|
34
|
+
this.$form.get(0).checkValidity() &&
|
35
|
+
(this.data.token_required || $newCardForm.length > 0) &&
|
36
|
+
this.$paymentIntentId.val().length == 0
|
37
|
+
)
|
38
|
+
}
|
39
|
+
|
40
|
+
submit(event) {
|
41
|
+
event.preventDefault();
|
42
|
+
|
43
|
+
let payment = this.shouldUseNewCard() ? this.useNewCard() : this.useExistingCard();
|
44
|
+
|
45
|
+
payment.then((result) => {
|
46
|
+
if (result.error) {
|
47
|
+
this.errorPayment(result.error)
|
48
|
+
} else if (result.paymentIntent.status == 'succeeded') {
|
49
|
+
this.submitPayment(result.paymentIntent);
|
50
|
+
}
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
54
|
+
useExistingCard() {
|
55
|
+
return this.stripe.confirmCardPayment(this.data.client_secret, {
|
56
|
+
payment_method: this.data.payment_method
|
57
|
+
});
|
58
|
+
}
|
59
|
+
|
60
|
+
useNewCard() {
|
61
|
+
return this.stripe.confirmCardPayment(this.data.client_secret, {
|
62
|
+
payment_method: {
|
63
|
+
card: this.card,
|
64
|
+
billing_details: {
|
65
|
+
email: this.data.email
|
66
|
+
}
|
67
|
+
},
|
68
|
+
setup_future_usage: 'off_session'
|
69
|
+
});
|
70
|
+
}
|
71
|
+
|
72
|
+
errorPayment(error) {
|
73
|
+
$('#stripe-card-errors').text(error.message);
|
74
|
+
EffectiveForm.invalidate(this.$form);
|
75
|
+
}
|
76
|
+
|
77
|
+
submitPayment(payment) {
|
78
|
+
this.$paymentIntentId.val('' + payment['id']);
|
79
|
+
this.$form.submit();
|
80
|
+
}
|
81
|
+
|
82
|
+
style() {
|
83
|
+
return {
|
84
|
+
base: {
|
85
|
+
color: "#32325d",
|
86
|
+
fontSize: "16px",
|
87
|
+
},
|
88
|
+
invalid: {
|
89
|
+
color: "#dc3545",
|
90
|
+
iconColor: "#dc3545"
|
91
|
+
}
|
92
|
+
};
|
93
|
+
}
|
94
|
+
|
95
|
+
}
|
96
|
+
|
97
|
+
$(document).ready(function () { new StripeForm().initialize(); });
|
@@ -12,11 +12,15 @@ module Effective
|
|
12
12
|
payment: 'for pretend',
|
13
13
|
provider: 'pretend',
|
14
14
|
card: 'none',
|
15
|
-
purchased_url:
|
16
|
-
declined_url:
|
15
|
+
purchased_url: pretend_params[:purchased_url],
|
16
|
+
declined_url: pretend_params[:declined_url]
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
20
|
+
def pretend_params
|
21
|
+
params.require(:pretend).permit(:purchased_url, :declined_url)
|
22
|
+
end
|
23
|
+
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
@@ -3,65 +3,68 @@ module Effective
|
|
3
3
|
module Stripe
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
def stripe_charge
|
10
|
-
@order ||= Effective::Order.find(stripe_charge_params[:effective_order_id])
|
11
|
-
@stripe_charge = Effective::Providers::StripeCharge.new(stripe_charge_params)
|
12
|
-
@stripe_charge.order = @order
|
6
|
+
def stripe
|
7
|
+
@order = Order.find(params[:id])
|
8
|
+
@customer = Effective::Customer.for_user(@order.user)
|
13
9
|
|
14
10
|
EffectiveOrders.authorize!(self, :update, @order)
|
15
11
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
render :show
|
12
|
+
payment = validate_stripe_payment(stripe_params[:payment_intent_id])
|
13
|
+
|
14
|
+
if payment.blank? || !payment.kind_of?(Hash)
|
15
|
+
return order_declined(payment: payment, provider: 'stripe', declined_url: stripe_params[:declined_url])
|
16
|
+
end
|
17
|
+
|
18
|
+
# Update the customer payment fields
|
19
|
+
if payment[:payment_method_id].present?
|
20
|
+
@customer.update!(payment.slice(:payment_method_id, :active_card))
|
26
21
|
end
|
22
|
+
|
23
|
+
order_purchased(
|
24
|
+
payment: payment,
|
25
|
+
provider: 'stripe',
|
26
|
+
card: payment[:card],
|
27
|
+
purchased_url: stripe_params[:purchased_url],
|
28
|
+
declined_url: stripe_params[:declined_url]
|
29
|
+
)
|
27
30
|
end
|
28
31
|
|
29
32
|
private
|
30
33
|
|
31
|
-
def
|
32
|
-
|
33
|
-
begin
|
34
|
-
subscripter = Effective::Subscripter.new(user: charge.order.user, stripe_token: charge.stripe_token)
|
35
|
-
subscripter.save!
|
36
|
-
|
37
|
-
return charge_with_stripe(charge, subscripter.customer)
|
38
|
-
rescue => e
|
39
|
-
charge.errors.add(:base, "Unable to process order with Stripe. Your credit card has not been charged. Message: \"#{e.message}\".")
|
40
|
-
raise ActiveRecord::Rollback
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
false
|
34
|
+
def stripe_params
|
35
|
+
params.require(:stripe).permit(:payment_intent_id, :purchased_url, :declined_url)
|
45
36
|
end
|
46
37
|
|
47
|
-
def
|
48
|
-
|
38
|
+
def validate_stripe_payment(payment_intent_id)
|
39
|
+
begin
|
40
|
+
intent = ::Stripe::PaymentIntent.retrieve(payment_intent_id)
|
41
|
+
raise('status is not succeeded') unless intent.status == 'succeeded'
|
42
|
+
raise('charges are not present') unless intent.charges.present?
|
49
43
|
|
50
|
-
|
51
|
-
|
52
|
-
amount: charge.order.total,
|
53
|
-
currency: EffectiveOrders.stripe[:currency],
|
54
|
-
customer: customer.stripe_customer.id,
|
55
|
-
description: "Charge for Order ##{charge.order.to_param}"
|
56
|
-
).to_json)
|
57
|
-
end
|
44
|
+
charge = intent.charges.data.first
|
45
|
+
raise('charge not succeeded') unless charge.status == 'succeeded'
|
58
46
|
|
59
|
-
|
60
|
-
|
47
|
+
card = charge.payment_method_details.try(:card) || {}
|
48
|
+
active_card = "**** **** **** #{card['last4']} #{card['brand']} #{card['exp_month']}/#{card['exp_year']}" if card.present?
|
49
|
+
|
50
|
+
{
|
51
|
+
charge_id: charge.id,
|
52
|
+
payment_method_id: charge.payment_method,
|
53
|
+
payment_intent_id: intent.id,
|
61
54
|
|
62
|
-
|
63
|
-
|
64
|
-
|
55
|
+
active_card: active_card,
|
56
|
+
card: card['brand'],
|
57
|
+
|
58
|
+
amount: charge.amount,
|
59
|
+
created: charge.created,
|
60
|
+
currency: charge.currency,
|
61
|
+
customer: charge.customer,
|
62
|
+
status: charge.status
|
63
|
+
}.compact
|
64
|
+
|
65
|
+
rescue => e
|
66
|
+
e.message
|
67
|
+
end
|
65
68
|
end
|
66
69
|
|
67
70
|
end
|
@@ -45,17 +45,41 @@ module EffectiveStripeHelper
|
|
45
45
|
"#{order.num_items} items (#{price_to_currency(order.total)})"
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
48
|
+
def stripe_payment_intent(order)
|
49
|
+
customer = Effective::Customer.for_user(order.user)
|
50
|
+
customer.create_stripe_customer! # Only creates if customer not already present
|
51
|
+
|
52
|
+
payment = {
|
53
|
+
amount: order.total,
|
54
|
+
currency: EffectiveOrders.stripe[:currency],
|
55
|
+
customer: customer.stripe_customer_id,
|
56
|
+
payment_method: customer.payment_method_id.presence,
|
57
|
+
description: stripe_order_description(order),
|
58
|
+
metadata: { order_id: order.id },
|
59
|
+
}
|
60
|
+
|
61
|
+
token_required = customer.token_required?
|
62
|
+
|
63
|
+
intent = begin
|
64
|
+
Rails.logger.info "[STRIPE] create payment intent : #{payment}"
|
65
|
+
Stripe::PaymentIntent.create(payment)
|
66
|
+
rescue Stripe::CardError => e
|
67
|
+
token_required = true
|
68
|
+
Rails.logger.info "[STRIPE] (error) get payment intent : #{e.error.payment_intent.id}"
|
69
|
+
Stripe::PaymentIntent.retrieve(e.error.payment_intent.id)
|
70
|
+
end
|
71
|
+
|
72
|
+
payload = {
|
73
|
+
key: EffectiveOrders.stripe[:publishable_key],
|
74
|
+
client_secret: intent.client_secret,
|
75
|
+
payment_method: intent.payment_method,
|
76
|
+
|
77
|
+
active_card: customer.active_card,
|
78
|
+
email: customer.email,
|
79
|
+
token_required: token_required
|
58
80
|
}
|
81
|
+
|
82
|
+
payload
|
59
83
|
end
|
60
84
|
|
61
85
|
end
|
@@ -10,6 +10,7 @@ module Effective
|
|
10
10
|
|
11
11
|
# Attributes
|
12
12
|
# stripe_customer_id :string # cus_xja7acoa03
|
13
|
+
# payment_method_id :string # Last payment method used
|
13
14
|
# active_card :string # **** **** **** 4242 Visa 05/12
|
14
15
|
|
15
16
|
# timestamps
|
@@ -31,6 +32,18 @@ module Effective
|
|
31
32
|
user.email if user
|
32
33
|
end
|
33
34
|
|
35
|
+
def create_stripe_customer!
|
36
|
+
return if stripe_customer.present?
|
37
|
+
raise('expected a user') unless user.present?
|
38
|
+
|
39
|
+
Rails.logger.info "[STRIPE] create customer: #{user.email}"
|
40
|
+
|
41
|
+
self.stripe_customer = Stripe::Customer.create(email: user.email, description: user.to_s, metadata: { user_id: user.id })
|
42
|
+
self.stripe_customer_id = stripe_customer.id
|
43
|
+
|
44
|
+
save!
|
45
|
+
end
|
46
|
+
|
34
47
|
def stripe_customer
|
35
48
|
@stripe_customer ||= if stripe_customer_id.present?
|
36
49
|
Rails.logger.info "[STRIPE] get customer: #{stripe_customer_id}"
|
@@ -79,12 +79,7 @@ module Effective
|
|
79
79
|
protected
|
80
80
|
|
81
81
|
def create_customer!
|
82
|
-
|
83
|
-
|
84
|
-
Rails.logger.info "[STRIPE] create customer: #{user.email}"
|
85
|
-
customer.stripe_customer = Stripe::Customer.create(email: user.email, description: user.to_s, metadata: { user_id: user.id })
|
86
|
-
customer.stripe_customer_id = customer.stripe_customer.id
|
87
|
-
customer.save!
|
82
|
+
customer.create_stripe_customer!
|
88
83
|
end
|
89
84
|
|
90
85
|
# Update stripe customer card
|
@@ -5,33 +5,32 @@
|
|
5
5
|
= link_to 'Change Addresses', effective_orders.edit_order_path(order), rel: :nofollow, class: 'btn btn-secondary'
|
6
6
|
|
7
7
|
.effective-order-purchase-actions
|
8
|
-
|
9
|
-
- provider_locals = { order: order, purchased_url: purchased_url, declined_url: declined_url }
|
8
|
+
- provider_locals = { order: order, purchased_url: purchased_url, declined_url: declined_url }
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
- if EffectiveOrders.free? && order.free?
|
11
|
+
= render partial: '/effective/orders/free/form', locals: provider_locals
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
- elsif EffectiveOrders.refunds? && order.refund?
|
14
|
+
-# Nothing
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
- else
|
17
|
+
- if EffectiveOrders.pretend? && EffectiveOrders.pretend_message.present?
|
18
|
+
%p.text-right= EffectiveOrders.pretend_message
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
- if EffectiveOrders.pretend?
|
21
|
+
= render partial: '/effective/orders/pretend/form', locals: provider_locals
|
23
22
|
|
24
|
-
|
25
|
-
|
23
|
+
- if EffectiveOrders.moneris?
|
24
|
+
= render partial: '/effective/orders/moneris/form', locals: provider_locals
|
26
25
|
|
27
|
-
|
28
|
-
|
26
|
+
- if EffectiveOrders.paypal?
|
27
|
+
= render partial: '/effective/orders/paypal/form', locals: provider_locals
|
29
28
|
|
30
|
-
|
31
|
-
|
29
|
+
- if EffectiveOrders.stripe?
|
30
|
+
= render partial: '/effective/orders/stripe/form', locals: provider_locals
|
32
31
|
|
33
|
-
|
34
|
-
|
32
|
+
- if EffectiveOrders.cheque? && order.user == current_user
|
33
|
+
= render partial: '/effective/orders/cheque/form', locals: provider_locals
|
35
34
|
|
36
35
|
- if EffectiveOrders.authorized?(controller, :admin, :effective_orders) && order.user != current_user
|
37
36
|
- if EffectiveOrders.refunds? && order.refund?
|
@@ -1,2 +1,5 @@
|
|
1
|
-
= effective_form_with(scope: :pretend, url: effective_orders.pretend_order_path(order
|
1
|
+
= effective_form_with(scope: :pretend, url: effective_orders.pretend_order_path(order), method: :post) do |f|
|
2
|
+
= f.hidden_field :purchased_url, value: purchased_url
|
3
|
+
= f.hidden_field :declined_url, value: declined_url
|
4
|
+
|
2
5
|
= f.submit order_checkout_label(:pretend), border: false
|
@@ -1,8 +1,31 @@
|
|
1
|
-
= javascript_include_tag 'https://
|
1
|
+
= javascript_include_tag 'https://js.stripe.com/v3/'
|
2
2
|
|
3
|
-
|
4
|
-
= effective_form_with(model: @stripe_charge || Effective::Providers::StripeCharge.new(order: order), url: effective_orders.stripe_charge_orders_path) do |f|
|
5
|
-
= f.hidden_field :stripe_token
|
6
|
-
= f.hidden_field :effective_order_id
|
3
|
+
- stripe = stripe_payment_intent(order)
|
7
4
|
|
8
|
-
|
5
|
+
.card
|
6
|
+
.card-body
|
7
|
+
%h3= order_checkout_label(:stripe)
|
8
|
+
%p
|
9
|
+
%em This checkout is powered by stripe.
|
10
|
+
|
11
|
+
.my-4.text-center
|
12
|
+
= link_to(image_tag('effective_orders/stripe.png'), 'https://www.stripe.com', target: '_blank')
|
13
|
+
|
14
|
+
= effective_form_with(scope: :stripe, url: effective_orders.stripe_order_path(order), data: { 'stripe-form': stripe.to_json }) do |f|
|
15
|
+
= f.hidden_field :purchased_url, value: purchased_url
|
16
|
+
= f.hidden_field :declined_url, value: declined_url
|
17
|
+
|
18
|
+
-# This is set by the stripe.js javascript
|
19
|
+
= f.hidden_field :payment_intent_id
|
20
|
+
|
21
|
+
- if stripe[:token_required]
|
22
|
+
%p Please enter your credit card information.
|
23
|
+
= render('effective/orders/stripe/element')
|
24
|
+
- else
|
25
|
+
%p Your existing card <strong>#{stripe[:active_card]}</strong> will be charged.
|
26
|
+
|
27
|
+
= collapse('Use this card instead...', class: 'update-stripe-payment-method') do
|
28
|
+
= render('effective/orders/stripe/element')
|
29
|
+
|
30
|
+
.mt-4
|
31
|
+
= f.submit 'Pay Now', center: true, border: false
|
data/config/routes.rb
CHANGED
@@ -11,6 +11,7 @@ EffectiveOrders::Engine.routes.draw do
|
|
11
11
|
post :pay_by_cheque if EffectiveOrders.cheque?
|
12
12
|
post :pretend if EffectiveOrders.pretend?
|
13
13
|
post :refund if EffectiveOrders.refunds?
|
14
|
+
post :stripe if EffectiveOrders.stripe?
|
14
15
|
end
|
15
16
|
|
16
17
|
collection do
|
@@ -18,7 +19,6 @@ EffectiveOrders::Engine.routes.draw do
|
|
18
19
|
|
19
20
|
post :moneris_postback if EffectiveOrders.moneris?
|
20
21
|
post :paypal_postback if EffectiveOrders.paypal?
|
21
|
-
post :stripe_charge if EffectiveOrders.stripe?
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -23,6 +23,10 @@ module EffectiveOrders
|
|
23
23
|
)
|
24
24
|
end
|
25
25
|
|
26
|
+
initializer "effective_orders.append_precompiled_assets" do |app|
|
27
|
+
Rails.application.config.assets.precompile += ['effective_orders/*']
|
28
|
+
end
|
29
|
+
|
26
30
|
initializer 'effective_orders.stripe', after: :load_config_initializers do
|
27
31
|
if EffectiveOrders.stripe?
|
28
32
|
begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_orders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -118,9 +118,10 @@ extra_rdoc_files: []
|
|
118
118
|
files:
|
119
119
|
- MIT-LICENSE
|
120
120
|
- README.md
|
121
|
+
- app/assets/images/effective_orders/stripe.png
|
121
122
|
- app/assets/javascripts/effective_orders.js
|
122
123
|
- app/assets/javascripts/effective_orders/customers.js.coffee
|
123
|
-
- app/assets/javascripts/effective_orders/providers/stripe.js
|
124
|
+
- app/assets/javascripts/effective_orders/providers/stripe.js
|
124
125
|
- app/assets/javascripts/effective_orders/subscriptions.js.coffee
|
125
126
|
- app/assets/stylesheets/effective_orders.scss
|
126
127
|
- app/assets/stylesheets/effective_orders/_cart.scss
|
@@ -217,6 +218,7 @@ files:
|
|
217
218
|
- app/views/effective/orders/purchased.html.haml
|
218
219
|
- app/views/effective/orders/refund/_form.html.haml
|
219
220
|
- app/views/effective/orders/show.html.haml
|
221
|
+
- app/views/effective/orders/stripe/_element.html.haml
|
220
222
|
- app/views/effective/orders/stripe/_form.html.haml
|
221
223
|
- app/views/effective/orders_mailer/order_error.html.haml
|
222
224
|
- app/views/effective/orders_mailer/order_receipt_to_admin.html.haml
|
@@ -1,26 +0,0 @@
|
|
1
|
-
stripeCheckoutHandler = (key, form) ->
|
2
|
-
StripeCheckout.configure
|
3
|
-
key: key
|
4
|
-
closed: -> EffectiveBootstrap.reset(form) unless form.hasClass('stripe-success')
|
5
|
-
token: (token, args) ->
|
6
|
-
if token.error
|
7
|
-
alert("An error ocurred when contacting Stripe. Your card has not been charged. Please refresh the page and try again. #{token.error.message}")
|
8
|
-
else
|
9
|
-
form.find("input[name$='[stripe_token]']").val('' + token['id'])
|
10
|
-
form.addClass('stripe-success').submit()
|
11
|
-
|
12
|
-
$(document).on 'click', "#effective-orders-new-charge-form form [type='submit']", (event) ->
|
13
|
-
event.preventDefault()
|
14
|
-
|
15
|
-
obj = $('#effective-orders-new-charge-form')
|
16
|
-
$form = obj.find('form').first()
|
17
|
-
stripe = obj.data('stripe')
|
18
|
-
|
19
|
-
EffectiveForm.submitting($form)
|
20
|
-
|
21
|
-
stripeCheckoutHandler(stripe.key, $form).open
|
22
|
-
image: stripe.image
|
23
|
-
name: stripe.name
|
24
|
-
description: stripe.description
|
25
|
-
email: stripe.email
|
26
|
-
amount: stripe.amount
|