20180127
肖威工作总结
- 上午:完成前端welcome的页面布局梳理+动态数据呈现的思考;
- 下午:查看前端界面的优化和支付的逻辑体系; 可以参考一个环境搭建的逻辑体系的框架; https://www.youtube.com/watch?v=hyEsiwc0ys4 https://stripe.com/docs/checkout/rails
- 晚上:完成heroku的专案的部署;
使用Checkout和Rails 将Checkout快速集成到基于Ruby on Rails的网站上,为用户提供简化的移动就绪付款体验。
入门 第一步是将条纹宝石添加到应用程序的Gemfile中:
gem 'stripe'
然后,运行bundle install安装宝石。
接下来,生成一个新的Charges控制器:
终奌站
rails g controller charges
控制器做了两件事情:
显示一张信用卡表格(使用结帐)。 通过调用我们的API来创建实际的费用。 将两个操作添加到控制器:
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
代码首先使用两个POST参数创建一个Customer对象。您可以直接创建费用,但首先创建客户可以重复计费。该:source属性设置为stripeToken参数,代表所提供的付款方式。令牌由Checkout自动创建。
Stripe预计金额为美分; 由于收费为$ 5,因此amount参数分配为500。A Charge也采用一个可选的:description参数,这对你来说可能是有意义的。收费请求中提供了客户ID,这意味着先前存储的付款方式将被收取。
一些付款尝试失败的原因有多种,例如CVC无效,卡号不正确,或一般拒绝。任何Stripe::CardError异常将被捕获并存储在flash散列中。
定义路线 所以用户可以访问新创建的控制器,在config / routes.rb中添加一个路由到它:
resources :charges
配置应用程序 该应用程序使用您的可发布和秘密的API密钥来与Stripe进行交互。初始化器是设置这些值的好地方,这些值将在应用程序启动时提供。
将以下内容添加到config / initializers / stripe.rb中:
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
这些键值被拉出环境变量,以免硬编码。最好的做法是不要将API密钥写入代码,在那里他们可以轻松地结束在源代码控制库和其他非私人目的地。
创建视图 下一步是创建相关视图:信用卡表单和收费响应。在app / views / layouts下创建一个charges.html.erb 布局:
<!DOCTYPE html>
<html>
<head></head>
<body>
<%= yield %>
</body>
</html>
现在在app / views / charges下面创建new.html.erb,这是结账页面。注意该页面使用Checkout。结帐显示信用卡覆盖表单,执行基本验证,并在线报告错误。
该表单还可以报告可能发生的任何服务器端错误:
<%= form_tag charges_path do %>
<article>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
<label class="amount">
<span>Amount: $5.00</span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="A month's subscription"
data-amount="500"
data-locale="auto"></script>
<% end %>
最后,在app / views / charges下创建一个create.html.erb视图,向用户显示成功消息:
<h2>Thanks, you paid <strong>$5.00</strong>!</h2>
这是一个包装!一个完整的条纹和Rails集成在几分钟内。
测试集成 要测试集成,请启动Rails服务器,确保将环境变量设置为可发布的密钥。现在,使用测试键,而不是你的活的:
终奌站
PUBLISHABLE_KEY=pk_test_6pRNASCoBOKtIshFeQd4XMUh \
SECRET_KEY=sk_test_BQokikJOvBiI2HlWgH4olfQ2 rails s
我们已经在代码中放置了随机的API密钥。将这些替换为您的实际API密钥,以便自己测试此代码。
现在,导航到http:// localhost:3000 / charges / new,查看可以使用的付款表单。如果您正在使用测试API密钥,则可以使用一些虚拟数据尝试该过程。请输入特殊信用卡号码4242 4242 4242 4242,三位CVC以及将来的任何失效日期。提交表格应显示成功的收费页面,您可以在仪表板中查看费用。
部署到Heroku 现在您已经创建了一个基本的付款页面,您可以将其部署到某个地方,以便人们可以使用它!Heroku是一个很好的方法来完成这个任务,并且与Rails和Rack无缝集成。首先,获得一个Heroku帐户,并安装Heroku Toolbelt。
现在告诉Heroku部署应用程序:
终奌站
git init
git add .
git commit -m 'My simple Stripe application'
heroku create
heroku config:set PUBLISHABLE_KEY=pk_test_6pRNASCoBOKtIshFeQd4XMUh SECRET_KEY=sk_test_BQokikJOvBiI2HlWgH4olfQ2
git push heroku master
heroku open
再次,当您准备好使用生产时,请在部署中提供您的实时API密钥。
对于支付的逻辑有部分的了解,查看了新手大学第一期线下成员和第二期线下成员,明显比第三期的人的整体的能力更强一些; 推荐的项目为: 第一期:浓缩书、人才火箭、HackSchool、GrowthHack黑板报、学霸在线 第二期:Resumehack、包整、大咖私藏、伴律、DesignDeck、EatZgether 刘思宁的学习笔记(師父:那些我在課堂外學會的本事) 后续更新会在简书进行:http://www.jianshu.com/u/99f3318bcc01 朱英楠,一只程序猿(http://paulgraham.com/startupideas.html) http://dyz2102-blog.logdown.com/posts/1173899
非常漂亮的博客编辑器: How to build a blog with Rails 5 and Bootstrap 4 - Part 15 https://www.youtube.com/watch?v=kL7xPuCOjMw
Creating a chocolate store using Ruby on Rails https://www.youtube.com/watch?v=be_EHQnpb8k&t=62s 案例非常有借鉴价值;