payjpのcheckoutでtokenが認識されません
解決したいこと
クレジットカード情報入力画面を作っています。
payjpのcheckoutを使用していますが、トークンが認識されないようです。
トークンを取得するために直すべきところを教えていただきたいです。
発生している問題・エラー
検証のコンソールで出力されるエラー
Uncaught SyntaxError: Cannot use import statement outside a module
該当するソースコード
↓ index.html,erb
<%# カード情報の入力 %>
<div class='credit-card-form'>
<h1 class='info-input-haedline'>
クレジットカード情報入力
</h1>
<script
type="text/javascript"
src="https://checkout.pay.jp/"
class="payjp-button"
data-key="pk_***********"
data-submit-text="トークンを作成する"
data-partial="true">
</script>
<%# /カード情報の入力 %>
↓ order_controller.rb
class OrdersController < ApplicationController
before_action :authenticate_user!
before_action :non_matched_coach, only: [:index, :create]
def index
@order_form = OrderForm.new
end
def create
@order_form = OrderForm.new(order_params)
#binding.pry
if @order_form.valid?
match
@order_form.save
redirect_to root_path
else
render :index
end
end
private
def order_params
params.require(:order_form).permit(:rank_id, {:character => []}, :play_style, :play_time, {:play_device => []}, {:communication_tool => []}, :goal).merge(user_id: current_user.id, coach_id: params[:coach_id], token: params[:token])
end
def match
Payjp.api_key = ENV["sk_************"]
Payjp::Charge.create(
amount: @coach.price,
card: order_params['payjp-token'],
currency: 'jpy'
)
end
def non_matched_coach
@coach = Coach.find(params[:coach_id])
if current_user.id == @coach.user_id
redirect_to root_path
end
end
end
↓ order_form.rb
class OrderForm
include ActiveModel::Model
attr_accessor :user_id, :coach_id, :rank_id, :character, :play_style, :play_time, :play_device, :communication_tool, :goal, :token
with_options presence: true do
validates :user_id
validates :coach_id
validates :rank_id
validates :character
validates :play_time
validates :play_device
validates :communication_tool
validates :goal
validates :token
end
def save
order = Order.create(user_id: user_id, coach_id: coach_id)
Payment.create(coach_id: coach_id, order_id: order.id, rank_id: rank_id, character: character, play_style: play_style, play_time: play_time, play_device: play_device, communication_tool: communication_tool, goal: goal)
end
end
自分で試したこと
order_paramsに['payjp-token']を入れてみた
足りない情報等あればお教えください。