ruby 在 rails 市场和条纹上

ruby on rails marketplace and stripe

我正在用 RoR 建立一个双边市场, 我想使用 stripe 来处理付款。

我希望用户提出请求并付款,(但​​使用 capture false,稍后收费),并在提供服务的用户接受或拒绝请求时收费(或取消)。

到目前为止我做了什么:

.提交请求 .在数据库中创建一个新请求(使用布尔值) .用户可否有效

但现在我不知道如何记录结果并更新此请求的状态,因此需要重新调用 api 来更新付款。

有人做过吗?

首先,您 create the chargecapture 设置为 false:

charge = Stripe::Charge.create({
  amount: 1000,
  currency: 'usd',
  destination: 'acct_...',
  application_fee: 200,
  capture: false,
})

如果收费成功,您将在您的数据库中保存收费的 ID (charge.id)。

然后,如果交易得到确认,您会capture the charge像这样:

# Retrieve charge_id from your database
charge = Stripe::Charge.retrieve(charge_id)
charge.capture

如果交易被取消,您将在refunding the charge之前解除授权:

# Retrieve charge_id from your database
refund = Stripe::Refund.create({
  charge: charge_id,
})

请注意,未捕获的费用是 automatically released after 7 days

在上面,我假设你是在创建收费 through the platform, i.e. with the destination parameter. If you are instead charging directly on connected accounts, you'd need to modify the requests to use the Stripe-Account header:

# Create the charge directly on the connected account
charge = Stripe::Charge.create({
  amount: 1000,
  currency: 'usd',
  application_fee: 200,
  capture: false,
}, {stripe_account: 'acct_...'})
# Save charge.id in your database

# Capture the charge
charge = Stripe::Charge.retrieve(charge_id, {stripe_account: 'acct_...'})
charge.capture

# Release the uncaptured charge
refund = Stripe::Refund.create({
  charge: charge_id,
}, {stripe_account: 'acct_...'})