我使用的是Rails pay gem,当用户注册时,它会在user模型中使用以下方法自动为user分配一个Stripe Customer ID:
pay_customer default_payment_processor: :stripe
问题是,我有已经注册的老用户,当试图用旧帐户付款时,没有条带客户id,因此会出现错误。
我如何使用支付宝石自动为我的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 >
谢谢