Во-первых, вы должны создать платеж с capture
установленным на false
:
charge = Stripe::Charge.create({
amount: 1000,
currency: 'usd',
destination: 'acct_...',
application_fee: 200,
capture: false,
})
В случае успешного списания вы должны сохранить идентификатор списания (charge.id
) в своей базе данных.
Затем, если транзакция будет подтверждена, вы должны фиксировать платеж следующим образом:
# Retrieve charge_id from your database
charge = Stripe::Charge.retrieve(charge_id)
charge.capture
Если транзакция будет отменена, вы разблокируете авторизацию, возместив платеж:
# Retrieve charge_id from your database
refund = Stripe::Refund.create({
charge: charge_id,
})
Обратите внимание, что неучтенные платежи автоматически сбрасываются через 7 дней.
В вышеизложенном я предполагал, что вы создаете платежи через платформу, т.е. с параметром destination
. Если вместо этого вы взимаете плату напрямую с подключенных аккаунтов, вам потребуется измените запросы, чтобы использовать заголовок Stripe-Account
:
# 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_...'})
person
Ywain
schedule
19.10.2016