我正在使用ruby 2.4.0p0(2016-12-24修订版57164)[x86_64-linux],Rails 5.2.4.4和using stripe 5.26.0
我已经创建了条纹订阅
customer = if current_user.stripe_customer_id?
Stripe::Customer.retrieve(current_user.stripe_customer_id)
else
Stripe::Customer.create({
:email => current_user.email,
:source => params[:stripeToken],
:description => "Tukaweb Stripe Subscriptions customer= #{current_user.email}"
},
{
api_key: Rails.configuration.stripe[:secret_key]
}
)
end
## check if user have already took the subscription
if current_user.subscriptions.where(payment_status: 'paid', software_package_id: @subscription.software_package_id).empty?
## with trail period
subscription = Stripe::Subscription.create({
customer: customer,
items: [
{price: 'price_1HVF68E9ijv19IzXdDVmKN5e'},
],
trial_end: (Time.now + 1.month).to_i,
})
else
## without trail period
subscription = Stripe::Subscription.create({
customer: customer,
items: [
{price: 'price_1HVF68E9ijv19IzXdDVmKN5e'},
],
})
end
current_user.update({
stripe_customer_id: customer.id
})
现在,我要更新带区订阅卡的详细信息,从而给出错误:
customer = Stripe::Customer.retrieve(current_user.stripe_customer_id)
stripe_subscription = SoftwareUser.find(params[:software_user_id])
subscription = customer.subscriptions.retrieve(stripe_subscription.stripe_subscription_id)
subscription.source = params[:stripeToken]
subscription.save
错误为:
Stripe::InvalidRequestError (Received unknown parameter: source):
能否请您建议如何更新订阅的卡详细信息。
答案 0 :(得分:1)
此操作失败,因为订阅上没有源属性。
在这种特殊情况下,您依赖于这样的事实,即在创建订阅时,由于没有默认的付款方式,该订阅将退回到使用客户的默认来源为订阅[1]筹集资金的事实。如果要更改支付订阅的来源,则必须更改客户的默认来源[2]。
说了这么多,今天的建议根本不是使用Sources,而是使用Stripe.js和Elements创建PaymentMethod [3]。您将此付款方式附加到客户[4],然后在发票[5],订购[6]或客户[7]上将此付款方式设置为默认付款方式。
这里的步骤在[8]中有更详细的概述。
[2] https://stripe.com/docs/api/customers/object?lang=ruby#customer_object-default_source
[3] https://stripe.com/docs/js/payment_intents/confirm_card_payment
[4] https://stripe.com/docs/api/payment_methods/attach?lang=ruby
[5] https://stripe.com/docs/api/invoices/object?lang=ruby#invoice_object-default_payment_method
[8] https://stripe.com/docs/billing/subscriptions/fixed-price#create-subscription