NoMethodError `sources' for #<Stripe::Customer with Rails
NoMethodError `sources' for #<Stripe::Customer with Rails
当我尝试从 Stripe 客户那里接收数据时,我收到错误未定义方法 'sources'。
这是我使用的代码:
def update_payment
if !current_user.stripe_id
customer = Stripe::Customer.create(
email: current_user.email,
source: params[:stripeToken]
)
else
customer = Stripe::Customer.update(
current_user.stripe_id,
source: params[:stripeToken]
)
end
if current_user.update(stripe_id: customer.id, stripe_last_4: customer.sources.data.first["last4"])
flash[:notice] = "New card is saved"
else
flash[:alert] = "Invalid card"
end
redirect_to request.referrer
rescue Stripe::CardError => e
flash[:alert] = e.message
redirect_to request.referrer
end
客户变量的输出不为空,所以我不明白为什么会出现这个错误。
sources
在 Stripe API 中不再默认提供,因为它是一个已弃用的集成路径:https://stripe.com/docs/api/customers/object?lang=ruby#customer_object-sources
您需要明确声明您希望 sources
参数通过展开返回。例如
cust = Stripe::Customer.create({
email: 'example@test.com',
source: 'tok_visa',
expand: ['sources']
})
// cust.sources is now populated
puts cust.sources
sources 属性现在是可选的。
为了将来源作为响应的一部分,您需要对其进行扩展。
将来源字段添加到 Stripe Create Customer。
示例:
customer = Stripe::Customer.create(
email: current_user.email,
source: params[:stripeToken],
expand: ['sources']
)
当我尝试从 Stripe 客户那里接收数据时,我收到错误未定义方法 'sources'。
这是我使用的代码:
def update_payment
if !current_user.stripe_id
customer = Stripe::Customer.create(
email: current_user.email,
source: params[:stripeToken]
)
else
customer = Stripe::Customer.update(
current_user.stripe_id,
source: params[:stripeToken]
)
end
if current_user.update(stripe_id: customer.id, stripe_last_4: customer.sources.data.first["last4"])
flash[:notice] = "New card is saved"
else
flash[:alert] = "Invalid card"
end
redirect_to request.referrer
rescue Stripe::CardError => e
flash[:alert] = e.message
redirect_to request.referrer
end
客户变量的输出不为空,所以我不明白为什么会出现这个错误。
sources
在 Stripe API 中不再默认提供,因为它是一个已弃用的集成路径:https://stripe.com/docs/api/customers/object?lang=ruby#customer_object-sources
您需要明确声明您希望 sources
参数通过展开返回。例如
cust = Stripe::Customer.create({
email: 'example@test.com',
source: 'tok_visa',
expand: ['sources']
})
// cust.sources is now populated
puts cust.sources
sources 属性现在是可选的。 为了将来源作为响应的一部分,您需要对其进行扩展。 将来源字段添加到 Stripe Create Customer。
示例:
customer = Stripe::Customer.create(
email: current_user.email,
source: params[:stripeToken],
expand: ['sources']
)