从电子商务和Rails开始4

时间:2014-08-28 09:37:23

标签: ruby-on-rails e-commerce

我有一个网站,我将不得不实施电子支付。问题是我对这些事情有0知识,我的网站甚至运行在http而不是https ..

我知道我可以使用active_merchant来处理付款,但我该如何开始使用?

任何资源都适合初学者?

3 个答案:

答案 0 :(得分:1)

我一直在考虑做一个关于此的教程 - 我们制作了一个基本的Rails电子商务应用程序,您可以在http://firststopcosmeticshop.co.uk

查看

它尚未完全完成,但应该为您提供有关如何为人们创建电子商务应用程序的想法。我将为您详细介绍一下这里的结构:

-

<强>电子商务

电子商务应用程序需要考虑几个功能:

  
      
  1. “购物车”将如何持续
  2.   
  3. 如何在屏幕上显示产品
  4.   
  5. 如何管理产品的选项
  6.   
  7. 如何管理商店的“后端”
  8.   

我将在这里描述一些这些功能。我不能写太多,因为它最终会让你感到困惑......


<强> 1。车

如果您要制作电子商务应用,则需要制作购物车。我们使用了session-based model;但另一种方法是创建一个Cart模型本身,它依赖于数据库

购物车的底线是您需要一种方法来保存数据。数据持久性只是您在Rails服务器请求之间能够使数据“保持”在浏览器中的方式。由于Rails是一个stateless框架,它将每个请求视为“裸体” - 这意味着如果您想保留数据,则必须使用某种方式来识别它。

对于我们的购物车,我们使用了一个非常简单的sessions系统 - 如果您将新产品添加到购物车,它会将该产品ID添加到您的会话中,从而为您提供持久的购物车商店: / p>

[[如果你需要,我可以包含代码]]

-

<强> 2。产品

您将能够创建Product模型:

#config/routes.rb
resources :products, only: [:index, :show] 

#app/models/product.rb
class Product < ActiveRecord::Base
   belongs_to :category
end

#app/controllers/products_controller.rb
class ProductsController < ApplicationController
   def index
       @products = Product.all
   end

   def show
       @product = Product.find params[:id]
   end
end

#app/views/products/index.html.erb
<% @products.each do |product| %>
   <%= product.name %>
<% end %>

-

第3。产品选项

您还需要一种管理产品选项的方法。如果你买T恤,你会想要确保你有不同的sizes等。这很棘手(特别是对于你必须容纳这么多不同选择的化妆品),但我们找到了一种方法:< / p>

#app/models/option.rb
class Option < ActiveRecord::Base
   has_many :product_options
   has_many :products, through: :product_options
end

#app/models/product_option.rb
class ProductOption < ActiveRecord::Base
   belongs_to :product
   belongs_to :option
end

#app/models/product.rb
class Product < ActiveRecord::Base
   has_many :product_options
   has_many :options, through: :product_options
end

这样您就可以调用@product.options等。

这里的技巧是使用与选项本身相关的一系列不同属性填充ProductOption模型。例如:

#products
id | title |  price  | created_at | updated_at
x  | xbox  |  399.99 |      x     |     x

#product_options
id | product_id | option_id | name | created_at | updated_at
x  |     1      |     2     | blue |     x      |     x
x  |     1      |     1     | wifi |     x      |     x
x  |     1      |     3     | chip |     x      |     x
x  |     1      |     2     | pink |     x      |     x

#options
id | name       | created_at | updated_at 
x  | accessory  |     x      |     x
y  | colour     |     x      |     x 
z  | upgrades   |     x      |     x

这将为您提供大量的可扩展性 - 让您能够为商店创建真正引人注目的结构。你的产品

-

<强> 4。后端

您可以使用namespace

来完成此操作
#config/routes.rb
namespace :admin do
   root "products#index"
   resources :products, only: [:index, :new, :create] #-> domain.com/admin/products/new
end

这允许您在/admin文件夹中创建“迷你应用程序”:

#app/controllers/admin/products_controller.rb
class Admin::ProductsController < ApplicationController
   before_action :authenticate_user!

   def index
      @products = Product.all
   end

   def new 
      @product = Product.new
   end

   def create
      @product = Product.new product_params
      @product.save
   end

   private

   def product_params
       params.require(:product).permit(:title, :price)
   end
end

您需要使用Devise对管理区域进行身份验证,以便仅为用户/管理员创建私有区域。


<强>更新

要处理付款,您最好使用ActiveMerchant

这是从一些Shopify源中提取的 - 是Rails最全面的支付网关管理器。我高度建议使用它,特别是如果你是新手。

我不会详细介绍(你可以看看如何使用this Railscast进行设置) - 为了让它工作,我会创建一个“订单”控制器&amp;模型:

#config/routes.rb
resources :orders, only: [:new, :create], path_names: { new: "" }, path: :order

#app/models/order.rb
Class Order < ActiveRecord::Base
end

#app/controllers/orders_controller.rb
class OrdersController < ApplicationController

   def new
       #start payment here
   end

   def create
      #if payment successful, continue
      @order = Order.new order_params
      @order.save
   end

   private

   def order_params
       params.require(:order).permit(:x, :y, :z)
   end
end

这样,您就可以拨打以下网址:domain.com/order,您可以从中输入付款详细信息,将付款方式发送给PayPal或类似网站,然后将买家退回“感谢您” “各种各样的页面

答案 1 :(得分:1)

您一定要查看Stripe API

https://stripe.com/docs/api

答案 2 :(得分:0)

我想说如果你不理解这一点,可以从一个可以帮助你入门的项目开始。查看https://www.ruby-toolbox.com/categories/e_commerce

狂欢&amp; ror_ecommerce是前2个选择。免责声明我写了ror_ecommerce所以我有偏见。简单的事实是这些项目有一个很好的开始处理数据模型和安全。随意通过https://github.com/drhenner

ping我