为什么 stripe 要做两个账户?

Why is stripe making two accounts?

我正在 Stripe 中创建一个托管帐户,出于某种原因,当我创建一个帐户时,它会在我的仪表板中创建两个。

这在 Laravel 中。这是我的代码:

$user = Auth::user();

    //create them a connect account
    $account = \Stripe\Account::create(
        array(
            "country" => "GB",
            "managed" => true,
            "external_account" => request('stripeToken'),
            "legal_entity[type]" => $user->legal_entity_type,
            "legal_entity[first_name]" => $user->name,
            "legal_entity[last_name]" => $user->last_name,
            "tos_acceptance[date]" => $user->tos_acceptance_date,
            "tos_acceptance[ip]" => $user->tos_acceptance_ip,
            "legal_entity[dob][day]" => $user->dob_day,
            "legal_entity[dob][month]" => $user->dob_month,
            "legal_entity[dob][year]" => $user->dob_year,
            "legal_entity[address][city]" => $user->address_city,
            "legal_entity[address][line1]" => $user->address_line1,
            "legal_entity[address][postal_code]" => $user->address_postal_code,
        )
    );
    //grab the stripe users ID, secret key and publishable key 
    $acc_id = $account->id;
    $secret_key = $account->keys->secret;
    $publishable = $account->keys->publishable;

    //update the users table to reflect the changes
    $user->stripe_id=$acc_id;
    $user->stripe_secret=$secret_key;
    $user->stripe_key=$publishable;
    $user->save();

    return redirect()->action('HomeController@index');

我使用所有必需的信息(包括从以前的表格创建并提交的银行令牌)创建管理帐户,然后使用条带 ID 等更新我的用户 tables 并保存。

然而,当我转到我的 Stripe 仪表板时,我有两个条目具有不同的帐户 ID,但所有详细信息都相同。

任何我出错的建议都会很棒

当我死掉并转储帐户 ID 时,它始终是第二个帐户 ID。

编辑:第一个帐户从未收到外部帐户属性,但仪表板中的第二个帐户收到,并且最终在用户 table 中被归因于 stripe_id

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script>
  Stripe.setPublishableKey('{{ config('services.stripe.key') }}');

  function stripeResponseHandler(status, response) {

    // Grab the form:
    var $form = $('#bank-account-form');

    if (response.error) { // Problem!

      // Show the errors on the form:
      $form.find('.bank-errors').text(response.error.message);
      $form.find('button').prop('disabled', false); // Re-enable submission

    } else { // Token created!

      // Get the token ID:
      var token = response.id;

      // Insert the token into the form so it gets submitted to the server:
      $form.append($('<input type="hidden" name="stripeToken" />').val(token));

      // Submit the form:
      $form.get(0).submit();

    }
  }
$(document).ready(function () {
$("#bank-account-form").submit(function (event) {
    // disable the submit button to prevent repeated clicks
    $('.submit-button').attr("disabled", "disabled");
    // bank account parameters
    var bankAccountParams = {
        country: $('.country').val(),
        currency: $('.currency').val(),
        //routing_number: $('.routing-number').val(),
        account_number: $('.account-number').val(),
        account_holder_name: $('.account-holder-name').val(),
        account_holder_type: $('.account-holder-type').val()
    }
    if ($('.routing-number').val() != '') {
      bankAccountParams['routing_number'] = $('.routing-number').val();
    }
    // createToken returns immediately - the supplied callback submits the form if there are no errors
    Stripe.bankAccount.createToken(bankAccountParams, stripeResponseHandler);
});
});
</script>

谢谢,

检查您的浏览器网络请求是否发送多个请求。任何 javascript 错误或重定向都可能是问题的原因,因为 php 代码看起来没问题。

您的 creating the managed account 后端代码被调用了两次,一次没有 stripeToken POST 参数,一次有它。

我的猜测是您有一个使用 Stripe.js 收集用户银行帐户信息的客户端表单,并且浏览器提交两次的表单存在问题,一次没有令牌并且用过一次。

在表单的事件处理程序中,确保通过在提交事件 and/or 上调用 preventDefault(); 并在处理程序中返回 false 来禁用默认提交。

表单只能在创建令牌后由 Stripe.js 自己的回调提交。