我一直试图在我的Stripe用户的外部帐户中添加一个bank_name,但是我一直收到一个错误,好像我误解了函数上的文档。
Error: Received unknown parameter: bank_account[bank_name]
文档显示,我应该能够从bank_name对象访问bank_account,但是我的错误被缩小到为null。我的console.log(newValue.externalAccount.bankName)按预期返回输入的bankName,所以它不是空的。知道我为什么会犯这个错误吗?
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 });
      }
    }
  });发布于 2019-06-20 14:24:45
看来我误解了bank_name字段的用途。我以为这是用户为他们的银行账户定义的一个自定义名称,比如“Doug检查”,但它似乎是由Stripe和只读自动生成的。
https://stackoverflow.com/questions/56677870
复制相似问题