Где воздух гор - там тишина снегов, молчание камней и дремлет сила

Программирование 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]

На этом все. Можно тестировать.






Здесь нет комментариев


Новый комментарий:
























Яндекс.Метрика