我正在使用 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 >
谢谢
如果有人遇到此问题,删除我所有现有的付费客户记录可以在开发中为我解决此问题。