Главная
Новости
Программирование Windows
Программирование Web
Поэзия
История
Шутки
Контакт
Где воздух гор - там тишина снегов, молчание камней и дремлет сила
Программирование Web
Stripe API в приложении Rails 5
2018-09-07 07:18:20
1. Помещаем gem 'stripe' в Gemfile. Запускаем sudo bundle.
2. Создадим новый файл конфигурации «secrets.yml» в папку «app/config» ключи для доступа к Stripe API:
development:
stripe_secret_key: 'pk_sd345345454dfdgfg'
stripe_publishable_key: 'sk_test_sdfdfdfdfd12132sds'
Далее поместим «app/config/initializares/stripe_api_keys.rb» скрипт инициализации:
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
3. Затем создадим новый контроллер для оплаты:
sudo rails g controller charges
Running via Spring preloader in process 3860
create app/controllers/charges_controller.rb
invoke haml
create app/views/charges
invoke test_unit
create test/controllers/charges_controller_test.rb
invoke helper
create app/helpers/charges_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/charges.coffee
invoke scss
create app/assets/stylesheets/charges.scss
invoke decorator
create app/decorators/charge_decorator.rb
invoke test_unit
create test/decorators/charge_decorator_test.rb
alexander@OverLand:/var/www/lead-commerce-engine$
В нем создадим 2 метода «new» и «create», которые будут обрабатывать запрос к Stripe API:
class ChargesController < ApplicationController
rescue_from Stripe::CardError, with: :catch_exception
def new
end
def create
amount = params[:stripeAmount].to_i * 100
customer = Stripe::Customer.create(
email: params[:stripeEmail],
card: params[:stripeToken]
)
charge = Stripe::Charge.create(
customer: customer,
amount: amount,
description: 'Your selected lead Stripe payment',
currency: 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
flash[:notice] = "Please try again, sorry"
end
private
def charges_params
params.permit(:stripeEmail, :stripeToken)
end
def catch_exception(exception)
flash[:error] = exception.message
end
end
Далее создадим для отправки платежей «new.html.haml» новый файл в папке «app/views/charges» :
= form_tag charges_path do
%article
- if flash[:error].present?
#error_explanation
%p= flash[:error]
= label_tag 'amount', 'Pay Now USD', class: 'amount'
= text_field 'amount', "$#{@amount}.00", class: 'amount-figure'
%script.stripe-button{"data-amount" => "#{@amount}", "data-description" => "Your payment description", "data-key" => "#{Rails.configuration.stripe[:publishable_key]}", :src => "https://checkout.stripe.com/checkout.js"}
:cdata
data-locale="auto">
Там же создадим другой файл «create.html.haml»
<h1>Thanks to your payment!
Он будет отображаться после проведения транзакции.
Затем поместим в файл роутера такой путь:
resources :charges, only: [:new, :create]
На этом все. Можно тестировать.
Назад
Здесь нет комментариев
Новый комментарий:
Публиковать