20180127

肖威工作总结

使用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 案例非常有借鉴价值;

results matching ""

    No results matching ""