我有一个网站,我将不得不实施电子支付。问题是我对这些事情有0知识,我的网站甚至运行在http而不是https ..
我知道我可以使用active_merchant来处理付款,但我该如何开始使用?
任何资源都适合初学者?
答案 0 :(得分:1)
我一直在考虑做一个关于此的教程 - 我们制作了一个基本的Rails电子商务应用程序,您可以在http://firststopcosmeticshop.co.uk
查看它尚未完全完成,但应该为您提供有关如何为人们创建电子商务应用程序的想法。我将为您详细介绍一下这里的结构:
-
<强>电子商务强>
电子商务应用程序需要考虑几个功能:
- “购物车”将如何持续
- 如何在屏幕上显示产品
- 如何管理产品的选项
- 如何管理商店的“后端”
醇>
我将在这里描述一些这些功能。我不能写太多,因为它最终会让你感到困惑......
<强> 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
答案 2 :(得分:0)
我想说如果你不理解这一点,可以从一个可以帮助你入门的项目开始。查看https://www.ruby-toolbox.com/categories/e_commerce
狂欢&amp; ror_ecommerce是前2个选择。免责声明我写了ror_ecommerce所以我有偏见。简单的事实是这些项目有一个很好的开始处理数据模型和安全。随意通过https://github.com/drhenner ping我