Plaid’s link API - это отличный инструмент для аутентификации информации о банковском счете при совершении онлайн-платежей. Суть в том, что они предоставляют вам полностью функционирующее модальное окно, где вы можете выбрать из растущего списка примерно пятнадцати популярных банков и фактически войти в свой банковский счет. Затем вы можете выбрать, какую из ваших учетных записей вы хотите использовать для транзакций, нажать отправить, и окно закроется. В результате возвращается токен аутентификации Plaid, который можно использовать для запроса у Plaid другой информации о банке (остатки на счетах, истории транзакций и т. Д.). Однако мне больше всего нравится в этом токене то, что его можно передать Stripe вместо информации о кредитной карте или банковском счете. Это означает, что вместо того, чтобы иметь дело с конфиденциальной информацией, такой как номера карт клиентов или номера маршрутов или счетов (тем более, если они вводят все правильно), они могут просто войти в свой собственный банковский счет и, по сути, предоставить вашему приложению разрешение на создание сборы и переводы.

Учетные данные и коды безопасности никогда не касаются вашего сервера

Ссылка Plaid полностью обрабатывается на стороне клиента. После импорта Plaid вы можете просто вставить HTML и Javascript, и все готово. Как только пользователь войдет в свой банк и токен будет возвращен, просто отправьте этот токен на свой сервер.

Полоса

С токеном Plaid на вашем сервере вы, наконец, можете творить чудеса с Stripe. Stripe - это платформа для онлайн-платежей, такая же, как Paypal, за исключением того, что она удобна, а документация довольно обширна. С банковским токеном от Plaid мы будем использовать службу ACH Stripe для списания средств непосредственно с банковского счета пользователя.

Вот кое-что важное: когда я впервые начал эту интеграцию, я хранил все токены Plaid в базе данных, планируя добавлять на них плату Stripe при каждой транзакции. Это не сработает. Если вы платите напрямую с токена Plaid, его можно использовать один раз. Что вам нужно сделать, так это создать объект клиента Stripe для каждого токена Plaid, с которого вы будете оплачивать:

const stripe = require("stripe")("STRIPE_SECRET_KEY");

stripe.customers.create({
  source: PLAID_TOKEN_GOES_HERE,
  description: "Example customer"
}, function(err, customer) {
});

Вот еще одна интересная функция: всякий раз, когда вы создаете нового клиента без Plaid, этот клиент должен быть подтвержден Stripe. Это делается автоматически с помощью Plaid.

Вышеупомянутый метод возвращает нам объект клиента, который мы можем отправить в базу данных. Всякий раз, когда нам нужно добавить платеж к учетной записи этого клиента, мы просто используем метод Stripe «charge» и вставляем идентификатор из соответствующего объекта клиента:

stripe.charges.create({
  amount: 1000, // this is written in cents
  currency: "usd",
  description: "Example charge",
  customer: CUSTOMER_ID,
}, function(err, charge) {
});

Банковские переводы

Stripe также работает для перевода денег на банковский счет пользователя. Для использования этой функции вам необходимо создать управляемую учетную запись для каждого пользователя, что предполагает сбор гораздо большей информации о пользователе, чем просто его учетную запись. Вот пример:

         stripe.accounts.create({
            managed: true,
            country: 'US',
            external_account: CUSTOMER_ID,
            legal_entity: {
              dob: {
                day: 31,
                month: 5,
                year: 1948,
              },
              first_name: 'John',
              last_name: 'Bonham',
              type: 'individual',
            },
            tos_acceptance: {
              date: Math.floor(Date.now() / 1000),
              ip: request.connection.remoteAddress,
            },
          }, function (err, account) {
             }

Как видите, банковские переводы могут быть гораздо более утомительными при создании новых учетных записей. Сама передача довольно проста:

stripe.transfers.create({
   amount: total,
   currency: 'usd',
   destination: 'default_for_currency',
},
 { stripe_account: CUSTOMER_ID }
);

В качестве пункта назначения задано значение «default_for_currency», что означает учетную запись по умолчанию для объекта учетной записи этого клиента (вы можете хранить несколько банковских счетов на одну учетную запись клиента).

Это почти все для Plaid and Stripe! Не забудьте проверить связанные документы!