Итак, я пытаюсь настроить этот пример https://stripe.com/docs/recipes/variable-amount-checkout
Я использую версию Debian 8 Rails: 5.2.3 Версия Ruby: 2.6.3 (x86_64-linux)
Iя хочу использовать SQLite, который должен быть параметром по умолчанию
Вот что я делаю, я нахожусь в своем домашнем каталоге и хочу создать новый проект.
Я делаю
rails new stripetest
, что завершается, затем я делаю cd stripetest
nano Gemfile
и иду до конца, добавляем новую строку, вставьте gem 'stripe'
, добавьте еще одну новую строку, вставьте gem 'jquery-rails'
, затем сохраните ее, затем я сделаю bundle install
Это работает, я получаю "Bundle complete!"и теперь, глядя на учебник Stripe, сделайте первый шаг, пока я все еще в ~ / stripetest
nano config/initializers/stripe.rb
Я вставляю в него 5 строк кода и сохраняю его
Далее я запускаю rails g controller charges new create
, как мне подсказывают, в ~ / stripetest напрямую, и это успешно.
Теперь в руководстве рассказывается, что я должен отредактировать "rout.rb" ", заменив любой Rails-сгенерированные маршруты для сборов с resources :charges
"
Так я делаю cd config
, nano routes.rb
, тогда я вижу, что уже есть
Rails.application.routes.draw do
get 'charges/new'
get 'charges/create'
# For details on the DSL available within this file, see http://guides.r$
end
Так я заменяю
get 'charges/new'
get 'charges/create'
с resources :charges
и сохраните его.мой файл rout.rb теперь выглядит следующим образом:
Rails.application.routes.draw do
resources :charges
# For details on the DSL available within this file, see http://guides.r$
end
, затем я cd ..
выхожу из директории config
. Теперь я перехожу к «Создать форму оплаты истраница подтверждения », часть этого урока, за которой я следую
Я делаю nano app/views/charges/new.html.erb
, стираю 2 строки в этом файле, копирую и вставляю первые 15 строк кода в примере, затем сохраняю его
Затем я делаю nano app/views/charges/create.html.erb
, стираю 2 ранее существующие строки и вставляю 3 строки кода, которые он мне показывает, и сохраняю их.
Теперь я перехожу к части «Определить JavaScript»этот урок
Я делаю nano app/views/charges/new.html.erb
, добавляю новую пустую строку, затем копирую и вставляю дополнительные 14 строк кода, затем добавляю новую пустую строку, затем копирую и вставляю 23 строки кода, которые мне показываетзатем сохраните его.
Я понял, что первые 14 строк кода, которые он хочет добавить, имеют </script>
в конце.После того, как это вставлено, мне нужно было удалить </script>
, затем вставить последние 23 строки кода под начальные 14 строк, а затем в самом конце завершить его с помощью </script>
внизу файла или же пожертвоватьJavaScript-код кнопки не будет работать должным образом.
Теперь у него есть еще 4 строки кода, которые он хочет, чтобы я добавил в app / views / new.html.erb, поэтому я делаю nano app/views/new.html.erb
и вставляю его, затем сохраняюit.
После этого я перехожу к части «Write the controller»
Я делаю nano app/controllers/charges_controller.rb
и вижу некоторый код, который уже там.
class ChargesController < ApplicationController
def new
end
def create
end
end
LookingВозвращаясь к коду в учебнике, я вижу, что
def new
end
не трогается, поэтому я спускаюсь, чтобы определить def, нажимаю ввод, чтобы создать новую пустую строку под ним, и копирую и вставляю все, покапоследняя строка в примере кода урока для этого, сохраняя ранее существовавший последний до «конца» и сохраняйте его
Вот как выглядит мой app / controllers / char_controller.rb после того, как ясделал это
class ChargesController < ApplicationController
def new
end
def create
@amount = params[:amount]
@amount = @amount.gsub('$', '').gsub(',', '')
begin
@amount = Float(@amount).round(2)
rescue
flash[:error] = 'Charge not completed. Please enter a valid amount in USD ($).'
redirect_to new_charge_path
return
end
@amount = (@amount * 100).to_i # Must be an integer!
if @amount < 500
flash[:error] = 'Charge not completed. Donation amount must be at least $5.'
redirect_to new_charge_path
return
end
Stripe::Charge.create({
amount: @amount,
currency: 'usd',
source: params[:stripeToken],
description: 'Custom donation',
})
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
Теперь, когда это сделано, яВернитесь к уроку и увидите, что я выполнил все, что он от меня хочет, теперь осталось только проверить его.
Во-первых, мне нужно добавить переменные окружения, чтобы они работали правильно.Это два тестовых ключа, предоставленных нам.и перезагрузите виртуальную машину, чтобы убедиться, что они вступили в силу.
После того, как я снова вошел в систему, я делаю cd stripetest
и
bundle exec rails s -b 0.0.0.0
для проверкиit.
Я получаю следующий вывод консоли
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
Итак, я открываю веб-браузер, перехожу к http://[Server IP]: 3000 / и вижу «YayВы на Рельсах!сообщение
Затем я перехожу на http://[Server IP]: 3000 / сборов / новых, как в учебном пособии говорит мне
Когда я пытаюсь ввести сумму в текстовое поле, скажем, «50», затем нажимаю кнопку «пожертвовать», я получаю сообщение об ошибке
«Stripe :: InvalidRequestError в ChargesController # create Invalid sourceобъект: должен быть словарем или непустой строкой. См. документацию API по https://stripe.com/docs'"
и там написано «Извлеченный источник (около строки # 26):»
24: end
25:
26: Stripe::Charge.create({
27: amount: @amount,
28: currency: 'usd',
29: source: params[:stripeToken],
Вв этот момент я не знаю, что делать, я не понимаю, в чем тут дело. Я пытался несколько раз, меняя то, что я делал для chargecontroller.rb и для файлов /config/routes.rb, но могу 'Кажется, он работает неправильно.
Возможно, у меня что-то не так с файлом /config/routes.rb или с файлами app / controllers / char_controller.rb, но я не уверен, что