为什么条纹制作两个帐户?

时间:2017-05-15 15:36:54

标签: php laravel stripe-payments stripe-connect

我在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等更新我的用户表并保存。

但是,当我转到Stripe仪表板时,我有两个不同帐户ID的条目但所有相同的细节。

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

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

编辑:第一个帐户永远不会收到“外部帐户”属性,但是仪表板中的第二个帐户会收到,并且最终会在users表中将其归为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>

谢谢,

2 个答案:

答案 0 :(得分:2)

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

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

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

只有在创建令牌时,Stripe.js自己的回调才能提交表单。

答案 1 :(得分:0)

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