如何将 Stripe 客户 IDS 分配给 Pay Gem 中的现有用户

问题描述 投票:0回答:1

我正在使用 Rails pay gem,当用户注册时,它会在用户模型中使用以下方法自动将 Stripe 客户 ID 分配给用户:

pay_customer default_payment_processor: :stripe

问题是,我有已经注册的老用户,当尝试使用旧帐户付款时,没有条带客户 ID,因此会出现错误。

¿如何使用 pay gem 自动为 ddbb 中的每个用户分配 Stripe 客户 ID?

我尝试迭代每个用户,例如:

User.find_each do |user|
  unless user.payment_processor.present?
    user.set_payment_processor :stripe
    user.save
    puts "Created Stripe Customer ID for user: #{user.email}"
  end
end

这将分配一个支付处理器,但不会为用户创建 Stripe 客户 ID。

请问有人可以帮忙吗?我真的被困住了:(

我的日志

3.0.0 :011 > u.set_payment_processor :stripe
  TRANSACTION (0.2ms)  BEGIN
  Pay::Customer Update All (0.7ms)  UPDATE "pay_customers" SET "default" = $1 WHERE "pay_customers"."owner_id" = $2 AND "pay_customers"."owner_type" = $3  [["default", false], ["owner_id", 388], ["owner_type", "User"]]
  Pay::Customer Load (0.4ms)  SELECT "pay_customers".* FROM "pay_customers" WHERE "pay_customers"."owner_id" = $1 AND "pay_customers"."owner_type" = $2 AND "pay_customers"."deleted_at" IS NULL AND "pay_customers"."processor" = $3 ORDER BY "pay_customers"."id" ASC LIMIT $4  [["owner_id", 388], ["owner_type", "User"], ["processor", "stripe"], ["LIMIT", 1]]
  Pay::Customer Exists? (0.2ms)  SELECT 1 AS one FROM "pay_customers" WHERE "pay_customers"."processor_id" = $1 AND "pay_customers"."id" != $2 AND "pay_customers"."processor" = $3 LIMIT $4  [["processor_id", "cus_XXXXXXXXXXXXXX"], ["id", 1], ["processor", "stripe"], ["LIMIT", 1]]
  Pay::Customer Update (0.2ms)  UPDATE "pay_customers" SET "default" = $1, "updated_at" = $2 WHERE "pay_customers"."id" = $3  [["default", true], ["updated_at", "2023-08-31 20:18:04.191958"], ["id", 1]]
  TRANSACTION (0.6ms)  COMMIT
  Pay::Customer Load (0.4ms)  SELECT "pay_customers".* FROM "pay_customers" WHERE "pay_customers"."owner_id" = $1 AND "pay_customers"."owner_type" = $2 AND "pay_customers"."default" = $3 AND "pay_customers"."deleted_at" IS NULL LIMIT $4  [["owner_id", 388], ["owner_type", "User"], ["default", true], ["LIMIT", 1]]
 => 
#<Pay::Customer:XXXXXXXXXXXXX
 id: 1,
 owner_type: "User",
 owner_id: 388,
 processor: "stripe",
 processor_id: "cus_XXXXXXXXXXXXXX",
 default: true,
 data: {},
 deleted_at: nil,
 created_at: Mon, 24 Jul 2023 11:19:25.540934000 UTC +00:00,
 updated_at: Thu, 31 Aug 2023 20:18:04.191958000 UTC +00:00,
 payment_method_token: nil> 
3.0.0 :012 > u.payment_processor.customer
/Users/XXXXXX/.rvm/gems/ruby-3.0.0/gems/pay-6.6.1/lib/pay/stripe/billable.rb:66:in `rescue in customer': No such customer: 'cus_XXXXXXXXXXXX' (Pay::Stripe::Error)
/Users/XXXXXXXX/.rvm/gems/ruby-3.0.0/gems/stripe-8.5.0/lib/stripe/stripe_client.rb:722:in `handle_error_response': No such customer: 'cus_XXXXXXXXXXXXX' (Stripe::InvalidRequestError)
3.0.0 :013 > 

谢谢

ruby-on-rails stripe-payments
1个回答
0
投票

如果有人遇到此问题,删除我所有现有的付费客户记录可以在开发中为我解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.