首页 > 解决方案 > 保存来自 Stripe Webhook Rails 的数据时出现问题

问题描述

我想从 Stripe webhook 获取数据(客户 ID),然后将其保存到我的数据库中,我得到了数据,但问题是我的数据库上的 customer_id 仍然为零。这是我的代码

StripeEvent.configure do |events|
 events.all do |event|
if event.type == 'customer.created'
 customer = event.data.object
 user = User.where('customer_id LIKE ?', "%#{customer['id']}%").first
 if user
   customer = Stripe::Customer.retrieve(JSON.parse(user.customer_id)['id'])
   user.customer_id = customer.to_json
   user.save!
  end
 end
 end
end

这段代码:

user = User.where('customer_id LIKE ?', "%#{customer['id']}%").first

给出这个输出:

SELECT  "users".* FROM "users" WHERE (customer_id LIKE '%cus_EEIReNX3M4je2U%') ORDER BY "users"."id" ASC LIMIT

当我到达我的数据库时,我的 customer_id 字段仍然为零,这是输出:

<User id: 3, email: "achielinda44@yahoo.com", created_at: "2018-12-27 03:47:41", updated_at: "2018-12-27 03:47:41", first_name: "Achie", last_name: nil, gender: nil, gender_preferences: nil, description: "trial stripe", photo: nil, provider: nil, uid: nil, name: nil, image: nil, customer_id: nil>

谁能看到我错过的东西?我将非常感谢您的帮助。谢谢!

标签: ruby-on-railsstripe-paymentswebhooks

解决方案


我的代码全错了,但不是全错。用户对象为 nil,因为我试图获取一个尚不可用的 customer_id,所以我使用电子邮件获取了用户,然后将条带客户 ID 传递给他们,最后保存了他们。有效!

StripeEvent.configure do |events|
 events.all do |event|
  if event.type == 'customer.created'
   customer = event.data.object
   user = User.find_by(email: customer.email)
   if user
    user.customer_id = customer.id
    user.save!
 end
end
end

推荐阅读