我有一個網站,我將不得不實施電子支付。問題是,我對這些東西有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