op_cart 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 610dac6246a5453a82a975057e32f529808eb14f
4
- data.tar.gz: 8eba9722c01b7487a8221cd54c5cc3a381ea7ae3
3
+ metadata.gz: 80553909efd0c95f0fed6955e399223f241b2efe
4
+ data.tar.gz: 2416d21f1b359f719f0e51e09ac2fb90c191c7e0
5
5
  SHA512:
6
- metadata.gz: f40c8147466cd51549ce58e10836faa04bffb503158e6195a4df29e15e7e27f8b686b4bccbecbd674bb7e7016d8c095fbd2406538f8515c73ea89e3300048715
7
- data.tar.gz: e5cd2bbcae84025482a186cb951399349304b3c6c2a76943b1eca7a2783eab9672e238f01bd09713c8d9fc51cb534e2d2572917fe67f9b5159d19670f8b2b043
6
+ metadata.gz: 7883f2f9685b75e35d8c0942cc8079d2d94f50378dd59571f93ae22293db8292310299e9287236ddd82d60d7e9a05aa73270999ba57de69d110c5eaaaa191678
7
+ data.tar.gz: 67246ac06134e68ac64d8c0ad65981694f1e54ee8863ecb8c926475c9ffcbad0092048d6c244d6b38db031b45a102ac27a362c54a590c8432c0571680800e105
@@ -1,27 +1,49 @@
1
1
  OpCart =
2
- ready: -> @stripeCreateToken()
2
+ ready: ->
3
+ $number = $ '#order_credit_card_number'
4
+ $expiry = $ '#order_credit_card_expiry'
5
+ $cvc = $ '#order_credit_card_cvc'
6
+
7
+ $number.payment 'formatCardNumber'
8
+ $expiry.payment 'formatCardExpiry'
9
+ $cvc.payment 'formatCardCVC'
10
+
11
+ @stripeCreateToken()
12
+
3
13
  load: -> @ready()
4
14
 
5
15
  stripeCreateToken: ->
6
- $("#payment-form").submit (event) ->
16
+ $("#new_order").submit (event) ->
7
17
  $form = $(this)
8
-
9
18
  $form.find("button").prop "disabled", true
10
- Stripe.card.createToken $form, OpCart.stripeResponseHandler
19
+
20
+ expiration = $("#order_credit_card_expiry").payment "cardExpiryVal"
21
+
22
+ Stripe.card.createToken
23
+ number: $("#order_credit_card_number").val()
24
+ cvc: $("#order_credit_card_cvc").val()
25
+ exp_month: expiration.month || 0
26
+ exp_year: expiration.year || 0
27
+ , OpCart.stripeResponseHandler
11
28
 
12
29
  false # Prevent the form from submitting with the default action
13
30
 
14
31
  stripeResponseHandler: (status, response) ->
15
- $form = $("#payment-form")
32
+ $form = $("#new_order")
16
33
 
17
34
  debugger
18
- if response.error
19
- $form.find(".payment-errors").text response.error.message
35
+ if response.error || !$form.get(0).checkValidity()
36
+ if response.error
37
+ errorMessage = response.error.message
38
+ else
39
+ errorMessage = 'Email or shipping information missing'
40
+ $form.find(".payment-errors").text errorMessage
20
41
  $form.find("button").prop "disabled", false
21
42
  else
22
43
  $form.append $("<input type=\"hidden\" name=\"stripeToken\" />").val(response.id)
23
44
  $form.get(0).submit()
24
45
 
46
+
25
47
  $ -> OpCart.ready()
26
48
  $(document).on 'page:load', -> OpCart.load()
27
49
 
@@ -1,16 +1,25 @@
1
1
  module OpCart
2
2
  class OrdersController < ApplicationController
3
3
  def new
4
- @product = Product.first # Temp hack to display first product as order
4
+ @products = [Product.first] # Temp hack to display first product as order
5
+ @order = Order.new
5
6
  end
6
7
 
7
8
  def create
8
9
  product = Product.find params[:product_id]
9
10
 
10
- charge = Stripe::Charge.create(
11
- amount: product.price,
11
+ customer = Stripe::Customer.create(
12
+ card: params[:stripeToken],
13
+ email: params[:order][:email]
14
+ )
15
+
16
+ # TODO Create Order w/ Line Items
17
+ # TODO Create shipping address
18
+
19
+ Stripe::Charge.create(
20
+ amount: product.price,
12
21
  currency: "usd",
13
- card: params[:stripeToken]
22
+ customer: customer.id
14
23
  )
15
24
 
16
25
  redirect_to new_order_path, notice: 'Thank you for your purchase'
@@ -7,5 +7,13 @@ module OpCart
7
7
  { only_integer: true, greater_than_or_equal_to: 0 } if :tax_amount?
8
8
  validates :status, presence: true
9
9
  validates :user, presence: true
10
+
11
+ before_save :charge_customer
12
+
13
+ private
14
+
15
+ def charge_customer
16
+ # TODO Create and charge customer
17
+ end
10
18
  end
11
19
  end
@@ -1,29 +1,45 @@
1
+ script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.payment/1.0.2/jquery.payment.min.js" type="text/javascript"
1
2
  script src="https://js.stripe.com/v2/" type="text/javascript"
2
3
 
3
4
  javascript:
4
5
  Stripe.setPublishableKey('#{Rails.configuration.stripe[:publishable_key]}')
5
6
 
6
- -# Hack to display products temporarily
7
- p = @product.name
8
- p = number_to_currency @product.price / 100
7
+ - if @products.any?
8
+ -# Hack to display products temporarily
9
+ .new_order
10
+ h2 Items in Order
11
+ ul style="list-style-type: none"
12
+ - @products.each do |product|
13
+ li
14
+ p = product.name
15
+ p = product.description
16
+ p = number_to_currency product.price / 100
9
17
 
10
- form#payment-form action="/store/orders" method="POST"
11
- = hidden_field_tag :authenticity_token, form_authenticity_token
12
- = hidden_field_tag :product_id, @product.id
18
+ = simple_form_for @order do |f|
19
+ span.payment-errors
20
+ p
21
+ h2 Your Information
22
+ = f.input :email, autofocus: true, input_html: { autocomplete: 'email' }
13
23
 
14
- span.payment-errors
15
- .form-row
16
- label
17
- span Card Number
18
- input data-stripe="number" size="20" type="text" /
19
- .form-row
20
- label
21
- span Expiration (MM/YYYY)
22
- input data-stripe="exp-month" size="2" type="text" /
23
- span /
24
- input data-stripe="exp-year" size="4" type="text" /
25
- .form-row
26
- label
27
- span CVC
28
- input data-stripe="cvc" size="4" type="text" /
29
- button type="submit" Submit Payment
24
+ p
25
+ h2 Shipping Address
26
+ = f.simple_fields_for :shipping_address do |sa|
27
+ = sa.input :full_name, input_html: { autocomplete: 'name' }
28
+ = sa.input :address, input_html: { autocomplete: 'street-address' }
29
+ = sa.input :zip_code, input_html: { autocomplete: 'postal-code' }
30
+ = sa.input :city, disabled: true, input_html: { autocomplete: 'city' }
31
+ = sa.input :state, disabled: true, input_html: { autocomplete: 'state' }
32
+
33
+ p
34
+ h2 Card Details
35
+ = f.simple_fields_for :credit_card do |c|
36
+ = c.input :number, input_html: { autocomplete: 'cc-number' }
37
+ = c.input :expiry, input_html: { autocomplete: 'cc-exp' }
38
+ = c.input :cvc, input_html: { autocomplete: 'cc-csc' }
39
+
40
+ = hidden_field_tag :product_id, @products.first.id
41
+
42
+ .form-actions
43
+ = f.button :button, "Submit Payment"
44
+ - else
45
+ p Add an item to your order.
@@ -0,0 +1,15 @@
1
+ en:
2
+ simple_form:
3
+ placeholders:
4
+ order:
5
+ email: "Email"
6
+ shipping_address:
7
+ full_name: "Full Name"
8
+ address: "Street Address"
9
+ zip_code: "Zip Code"
10
+ city: "City"
11
+ state: "State"
12
+ credit_card:
13
+ number: "Card Number"
14
+ expiry: 'MM/YY'
15
+ cvc: 'CVC'
@@ -0,0 +1,11 @@
1
+ product1_attrs = {
2
+ name: 'Device 3000',
3
+ description: 'The original Device 3000',
4
+ sku: 'A1000',
5
+ price: 15000,
6
+ allow_purchases: true,
7
+ charge_taxes: true,
8
+ user: User.first,
9
+ }
10
+
11
+ product1 = OpCart::Product.where(sku: product1_attrs[:sku]).first_or_create product1_attrs
@@ -1,3 +1,3 @@
1
1
  module OpCart
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: op_cart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Boehs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-05 00:00:00.000000000 Z
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: OpCart makes things simple through inflexibility and lack of features
69
+ description: Opinionated cart engine for Ruby on Rails
70
70
  email:
71
71
  - ericboehs@gmail.com
72
72
  executables: []
@@ -87,10 +87,12 @@ files:
87
87
  - app/models/op_cart/product.rb
88
88
  - app/views/op_cart/orders/new.html.slim
89
89
  - config/initializers/stripe.rb
90
+ - config/locales/op_cart.en.yml
90
91
  - config/routes.rb
91
92
  - db/migrate/20140829191646_create_op_cart_products.rb
92
93
  - db/migrate/20140829200318_create_op_cart_orders.rb
93
94
  - db/migrate/20140829201756_create_op_cart_line_items.rb
95
+ - db/seeds.rb
94
96
  - lib/op_cart.rb
95
97
  - lib/op_cart/engine.rb
96
98
  - lib/op_cart/version.rb