我在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>
谢谢,
答案 0 :(得分:2)
creating the managed account的后端代码被调用两次,一次没有stripeToken
POST参数,一次调用它。
我的猜测是你有一个客户端表单使用Stripe.js收集用户的银行帐户信息,并且浏览器提交两次的表单存在问题,一次没有令牌,一次是它
在表单的事件处理程序中,请确保通过在提交事件上调用preventDefault();
和/或在处理程序中返回false
来禁用默认提交。
只有在创建令牌时,Stripe.js自己的回调才能提交表单。
答案 1 :(得分:0)
检查您的浏览器网络请求是否查看是否发送了多个请求。任何javascript错误或重定向都可能导致问题,因为php代码看起来没问题。