我是Rails的新手,目前正在开发我的第一个网站。 所以这里是我的问题:
每次我创建一个服务的订阅,它给了我一个Stripe :: InvalidRequestError说“计划已经存在”。我发现这是必须对Stripe Plan ID做些什么的。Rails条纹“计划已经存在”
我想要做的是,当用户点击订阅时,它应该检查具有相同ID的计划是否已经存在。如果具有相同ID的计划不存在,则应该创建该计划。如果它确实存在,它不应该创建该计划,而只是订阅该计划的客户。
这里是我的尝试:
class PaymentsController < ApplicationController
before_action :set_order
def create
@user = current_user
unless Stripe::Plan.id == @order.service.title
plan = Stripe::Plan.create(
:name => @order.service.title,
:id => @order.service.title,
:interval => "month",
:currency => @order.amount.currency,
:amount => @order.amount_pennies,
)
end
在上面,你可以看到,我想,我可以只使用条纹的ID,但显然这是行不通的。
customer = Stripe::Customer.create(
source: params[:stripeToken],
email: params[:stripeEmail],
)
# Storing the customer.id in the customer_id field of user
@user.customer_id = customer.id
Stripe::Subscription.create(
:customer => @user.customer_id,
:plan => @order.service.title,
)
@order.update(payment: plan.to_json, state: 'paid')
redirect_to order_path(@order)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_order_payment_path(@order)
end
private
def set_order
@order = Order.where(state: 'pending').find(params[:order_id])
end
end
检查'条纹:: Plan.id'并打印它的值 – Pavan
它告诉我! #未定义的方法'id“。所以当我尝试打印时没有任何价值。当我第一次创建它时,我将ID分配给字符串“测试”。 –
您可以发布用户点击订阅按钮时生成的参数吗? – Pavan