我有一个网站,我将不得不实施电子支付。问题是,我对这些东西有0知识,我的网站甚至运行在http不是https ..从电子商务和Rails开始4
我知道我可以使用active_merchant来处理付款,但我该如何开始?
任何资源请为初学者?
我有一个网站,我将不得不实施电子支付。问题是,我对这些东西有0知识,我的网站甚至运行在http不是https ..从电子商务和Rails开始4
我知道我可以使用active_merchant来处理付款,但我该如何开始?
任何资源请为初学者?
我一直在思考这个做一个教程 - 我们已经有了一个基本的Rails的电子商务应用程序,你可以在http://firststopcosmeticshop.co.uk
查看这不是完全结束,但应该给你一个想法,怎么样你可以为人们创建一个电子商务应用程序。我将详细介绍一下结构的一些东西在这里为你:
-
电子商务
有几个特点考虑与电子商务应用:
- “购物车”将如何持续
- 如何在屏幕上显示产品
- 如何管理选项的产品
- 如何管理商店
的“后台”,我将介绍一些功能,这些在这里。我不能写太多,因为它最终会迷惑你...
1.车
如果你打算做一个电子商务应用程序,你需要一辆推车。我们使用了session-based model;但另一种方法是创建一个Cart
模型本身,它依赖于数据库
购物车的底线是你需要一种方法来保存数据。数据持久性就是让数据在浏览器中“停留”的方式,即使在您对Rails服务器的请求之间也是如此。由于Rails是一个stateless框架,它会将每个请求视为“裸体” - 这意味着如果要保留数据,则必须使用某种方法来识别它。
对于我们的车,我们用一个非常简单的sessions
系统 - 因此,如果你添加一个新的产品加入购物车,这将是产品ID添加到您的会话,从而给你一个永久车店:
[我可以包含代码,如果你想让它]
-
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
等,这是棘手的(尤其是在那里你必须容纳这么多不同的选择化妆品),但我们找到了一种方法:
#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
管理区,让您创建仅用于用户/管理员的一个私人区域。是为Rails最全面的支付网关管理器 -
更新
要处理款项,您使用ActiveMerchant
这已经从一些Shopify源的提取是最好的。我会高度推荐使用它,特别是如果你是新的。
我就不赘述了(你可以看到如何使用this Railscast设置它) - 来得到它的工作,我会创建一个“订单”控制器&型号:
#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或类似商品,然后将买家退还至“谢谢”页面。
你一定要看看Stripe API
我会说如果你不明白这一点,开始一个项目,可以让你开始。退房https://www.ruby-toolbox.com/categories/e_commerce
大礼包& ror_ecommerce是前2个选择。免责声明我写了ror_ecommerce,所以我很偏向。简单的事实是这些项目在处理数据模型&安全性方面有很好的开端。随时ping我通过https://github.com/drhenner
你好,感谢您的答案!但我想知道你如何处理银行/网关和东西?我的网站只需要支付一次,这不是产品相关 – 2014-08-28 11:58:08
嘿芽!你应该在你的问题上更具体一些!我会为你写一个更新! – 2014-08-28 12:39:50