Как использовать Stripe выплаты со счетами клиентов
У меня есть вопрос о том, как реализовать правильные выплаты для моей системы / платформы.
Позвольте мне объяснить немного дальше. У меня есть платформа вроде Lyft, но вместо того, чтобы создавать и выдавать сборы сразу после каждой поездки. Я создаю элементы счетов-фактур, так что с гонщика взимается плата только один раз за каждый цикл выставления счетов-фактур (например, каждые 2 недели). Теперь я понимаю, что не существует идентификатора пункта назначения для счета-фактуры или элемента счета-фактуры, использующего Stripe. Так что мне нужно как-то сообщить Stripe, какие средства нужно потратить на водителя. Как я могу это сделать? Похоже, что метод заключается в том, чтобы создать выплату Stripe с указанием места назначения в качестве идентификатора банковского счета водителя. Но после попытки сделать это как с внешним идентификатором счета водителя, так и с идентификатором банковского счета, Stripe сгенерировал исключение, говорящее "Нет такой внешней учетной записи acct_123456ABCD"
Будет ли метод, который я описал выше, быть правильным способом реализации этого? Или есть лучший способ или более предписанный способ?
К вашему сведению - чтобы понять, почему я создаю элементы счетов-фактур, а не мгновенные расходы сразу после поездки, это потому, что все сборы за мои услуги очень малы (1,00- 3,00 долл. США), поэтому следует избегать фиксированной платы за полосу в размере 0,30 долл. США / обвинение Я собираю их в счет-фактуру, где будет взиматься только одна фиксированная плата за цикл выставления счетов.
Спасибо за любую помощь.
Для бывших целей я приведу пример того, что я делаю ниже. Сначала я создаю элемент счета, а затем создаю выплату.
var invoiceItemOptions = new StripeInvoiceItemCreateOptions()
{
Amount = tipPricing.GetTotalAmountCharged(),
Currency = "USD", //defaultCard.CurrencyCode,
CustomerId = '12334567',
Metadata = new Dictionary<String, String>() { { "EventId", 123 } }
};
var invoiceItemService = new StripeInvoiceItemService();
StripeInvoiceLineItem invoiceItem = invoiceItemService.Create(invoiceItemOptions);
StripeResponse invoiceResponse = invoiceItem.StripeResponse;
////////////////////////////////////////////////////////////////////////
var payoutOptions = new StripePayoutCreateOptions()
{
Amount = tipPricing.GetTotalDestinationAmount(hasBeenChargedThisMonth),
Currency = "USD",
Destination = bankAccount.ExternalAccountId, //bankAccount.AccountId,
Metadata = new Dictionary<String, String>() { { "EventId", 123 } }
};
var payoutService = new StripePayoutService();
StripePayout payoutCharge = payoutService.Create(payoutOptions);
StripeResponse payoutResponse = payoutCharge.StripeResponse;
1 ответ
Выплаты должны осуществляться на Баланс Подключенной учетной записи -> Банковский счет, а не с вашей Платформы на банковский счет Подключенной учетной записи.
У вас есть как минимум два варианта для потоков денежных средств здесь:
- Вы можете запустить Счета-фактуры (или даже подписку на $0 с двухнедельным циклом выставления счетов) на своей Платформе. Вы могли бы слушать веб-уток, когда
invoice.payment_succeeded
, а затем переместите средства на связанный счет назначения, используяTransfer
см. https://stripe.com/docs/connect/charges-transfers. С баланса подключенной учетной записи она будет выплачиваться на их банковский счет, или вы можете инициировать выплату (если речь идет о ручных выплатах, https://stripe.com/docs/connect/payouts) - Вы можете создать элементы / счета-фактуры или подписку непосредственно на подключенной учетной записи. Это немного сложнее, так как вам нужно будет перевести плату за вашу платформу, но вы можете сделать это с помощью сборов приложений, см. https://stripe.com/docs/connect/subscriptions.