Я использую проверку полосы в приложении Rails 4x. Моя цель - ежемесячные подписки. Я получаю следующее.Рельсы: нельзя использовать маркер Stripe более одного раза - [Stripe :: InvalidRequestError]
Stripe :: InvalidRequestError Нельзя использовать stripeToken более одного раза. Это происходит, когда create_stripe_subscription
вызывается в subscriptions_controller#create
.
Несмотря на это сообщение об ошибке, у меня есть клиенты, которые взимают сборы, которые появляются на моей приборной панели.
Я хотел бы узнать, где я дублирую этот одноразовый токен и понять, какая полоса требуется для этой подписки.
Здесь приведены файлы &, чтобы продемонстрировать, какие мои усилия по реализации выглядят так.
Инициализаторов/stripe.rb:
Rails.configuration.stripe = {
publishable_key: ENV["STRIPE_PUBLISHABLE_KEY"],
secret_key: ENV["STRIPE_SECRET_KEY"]
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
подписки (кнопка "маленькая" план полосы фотографии)/новой
<script src="https://checkout.stripe.com/checkout.js"
class="stripe-button",
data-key="<%= ENV["STRIPE_PUBLISHABLE_KEY"] %>",
data-email="<%= current_employee.email %>",
data-image="app/assets/images/mascot_favicon.ico",
data-name="Small Group Home",
data-description="Monthly subcription plan",
data-amount="<%= @small_plan.amount %>",
data-id="<%= @small_plan.id %>",
data-label="Subscribe!">
</script>
subscriptions_controller.rb
def create
create_stripe_subscription
if create_stripe_subscription.valid?
AdminMailer.welcome_email(@admin).deliver_now
flash[:success] = "#{ @admin.full_name.pluralize } created!"
redirect_to root_path
else
flash.now[:notice] = "There was a problem with the form"
render :new
end
end
.
.
.
def create_stripe_subscription
plan_id = params[:plan_id]
plan = Stripe::Plan.retrieve(plan_id)
token = params[:stripeToken]
email = params[:stripeEmail]
customer = Stripe::Customer.create(
source: token,
email: email,
plan: plan
)
subscription = Subscription.new
subscription.stripe_card_token = customer.id
same_customer = Stripe::Customer.retrieve(subscription.stripe_card_token)
same_customer.subscriptions.create(plan: params[:plan_id])
end
ножка тир
Hiya, нам очень сложно отладить вербальное описание вашего кода ... Пожалуйста, отредактируйте свой вопрос и добавьте * соответствующие разделы вашего кода, которые касаются полос. –
Эй, спасибо за такой быстрый ответ! Я сделал изменения, чтобы более четко указать, где моя проблема. Ждем вашего ответа. – sirramongabriel
Похоже, вы включаете свой секретный ключ API в свой код на стороне клиента как метатег. Это необязательно и огромный недостаток безопасности - с вашим секретным ключом API, каждый может сделать что угодно с вашей учетной записью (создавать сборы, возмещать, удалять данные и т. Д.) – Ywain