Полоса: ошибка: получен неизвестный параметр: bank_account [имя_банка] - PullRequest
0 голосов
/ 20 июня 2019

Я пытался добавить bank_name во внешнюю учетную запись пользователя Stripe Connect, но я получаю сообщение об ошибке, как будто неправильно читаю документацию по этой функции.

Error: Received unknown parameter: bank_account[bank_name]

Документация показывает, что я должен иметь возможность доступа к bank_name из объекта bank_account, но моя ошибка сужена до того, что он будет нулевым.Мой console.log(newValue.externalAccount.bankName) возвращает bankName, как и ожидалось, который был введен, так что он не имеет значения null. Есть идеи, почему я получаю эту ошибку?

Функция Firebase:

exports.createStripeAccount = functions.firestore
  .document("users/{userId}")
  .onUpdate(async (change, context) => {
    const newValue = change.after.data();
    const previousValue = change.before.data();
    if (newValue.state === "technician" && previousValue.state === "client") {
      try {
        const account_add_response = await stripe.accounts.create(
          {
            type: "custom",
            country: "US",
            requested_capabilities: ["platform_payments"],
            email: newValue.email,
            tos_acceptance: newValue.stripeTosAcceptance,
            business_type: "individual",
            business_profile: {
              url: newValue.socialLinks.linkedin
            },
            individual: {
              first_name: newValue.firstName,
              last_name: newValue.lastName,
              gender: newValue.gender,
              email: newValue.email,
              phone: newValue.phone,
              address: {
                line1: newValue.address.line1,
                line2: newValue.address.line2,
                city: newValue.address.city,
                state: newValue.address.state,
                postal_code: newValue.address.zip,
                country: newValue.address.country
              },
              ssn_last_4: newValue.technician.ssnLast4,
              dob: {
                day: newValue.dob.day,
                month: newValue.dob.month,
                year: newValue.dob.year
              }
            }
          },
          async function(error, account) {
            if (error) {
              return console.error(error);
            } else {
              console.log(
                "Writing account.id " + account.id + " to user DB..."
              );
              console.log("newValue.externalAccount.bankName: " + newValue.externalAccount.bankName)
              const bank_add_response = await stripe.accounts.createExternalAccount(
                account.id,
                {
                  external_account: {
                    object: "bank_account",
                    country: "US",
                    currency: "USD",
                    account_holder_name:
                      newValue.externalAccount.accountHolderName, // Have user input manually, might be different than user's name
                    account_holder_type: "individual",
                    bank_name: newValue.externalAccount.bankName,
                    routing_number: newValue.externalAccount.routingNumber,
                    account_number: newValue.externalAccount.accountNumber
                  }
                },
                function(error, bank_account) {
                  if (error) {
                    return console.error(error);
                  } else {
                    console.log(
                      "Writing bank_account.id " +
                        bank_account.id +
                        " to user DB..."
                    );
                    return admin
                      .firestore()
                      .collection("users")
                      .doc(context.params.userId)
                      .set(
                        {
                          connectId: account.id,
                          externalAccount: {
                            bankAccountId: bank_account.id,
                            bankName: bank_account.bank_name,
                            last4: bank_account.last4,
                          }
                        },
                        { merge: true }
                      );
                  }
                }
              );
            }
          }
        );
      } catch (error) {
        console.log(error);
        await change.ref.set(
          { error: userFacingMessage(error) },
          { merge: true }
        );
        return reportError(error, { user: context.params.userId });
      }
    }
  });

1 Ответ

0 голосов
/ 20 июня 2019

Похоже, я неправильно понял цель поля bank_name.Я думал, что это было пользовательское имя, которое пользователь определяет для своего банковского счета, например, «Doug's Chase Checkings», но кажется, что оно автоматически генерируется Stripe и доступно только для чтения.

...