Я пытаюсь создать несколько клиентских токенов для отправки на сервер, чтобы произвести несколько целевых сборов в Stripe Connect.
Я не могу использовать объект «Клиент», потому что для целевого сбора клиент должен быть подключенной учетной записью на платформе, поэтому гостевые проверки не будут работать.
Поэтому мне нужно вызвать Stripe.createToken «x» раз и сохранить токены в «x» количестве скрытых входов, используя функцию stripeResponseHandler, которые затем отправляются на сервер для обработки сборов.
Вот как мне удалось это сделать для 2 токенов очень-очень вручную:
Stripe.createToken( {
number: card,
cvc: cvc,
exp_month: month,
exp_year: year,
name: name,
address_line1: address_line1,
address_line2: address_line2,
address_state: address_state,
address_city: address_city,
address_zip: address_zip,
address_country: address_country
}, stripeResponseHandler1 );
Stripe.createToken( {
number: card,
cvc: cvc,
exp_month: month,
exp_year: year,
name: name,
address_line1: address_line1,
address_line2: address_line2,
address_state: address_state,
address_city: address_city,
address_zip: address_zip,
address_country: address_country
}, stripeResponseHandler2 );
function stripeResponseHandler1( status, response ) {
var $form = jQuery("form.checkout, form#order_review");
if ( response.error ) {
jQuery('.woocommerce_error, .woocommerce-error, .woocommerce-message, .woocommerce_message, .stripe_token').remove();
jQuery('#dokan-stripe-connect-card-number').closest('p').before( '<ul class="woocommerce_error woocommerce-error"><li>' + response.error.message + '</li></ul>' );
$form.unblock();
} else {
var token = response['id'];
wc_stripe_connect_params.token_done = true;
jQuery( '.stripe_token').remove();
$form.append("<input type='hidden' class='stripe_token' name='stripe_token1' value='" + token + "'/>");
}
}
function stripeResponseHandler2( status, response ) {
var $form = jQuery("form.checkout, form#order_review");
if ( response.error ) {
jQuery('.woocommerce_error, .woocommerce-error, .woocommerce-message, .woocommerce_message, .stripe_token').remove();
jQuery('#dokan-stripe-connect-card-number').closest('p').before( '<ul class="woocommerce_error woocommerce-error"><li>' + response.error.message + '</li></ul>' );
$form.unblock();
} else {
var token = response['id'];
wc_stripe_connect_params.token_done = true;
$form.append("<input type='hidden' class='stripe_token2' name='stripe_token2' value='" + token + "'/>");
$form.submit();
}
}
Очевидно, что это не то, как что-либо должно быть закодировано, поэтому я думаю, что мне нужно сделать что-то вроде:
var vendor_count = jQuery(".vendor_count").first().data("count");
for(i = 1; i <= vendor_count; i++ ) {
Stripe.createToken( {
number: card,
cvc: cvc,
exp_month: month,
exp_year: year,
name: name,
address_line1: address_line1,
address_line2: address_line2,
address_state: address_state,
address_city: address_city,
address_zip: address_zip,
address_country: address_country
}, stripeResponseHandler );
}
Но я не могу понять, как передать индекс vendor_count в stripeResponseHandler, чтобы создать дополнительные скрытые поля ввода для отправки.
Я полностью иду об этом неправильно? Я чувствую, что, основываясь на моих причинах в начале этого поста, у меня есть причина требовать создания нескольких токенов таким образом.
for
для создания нескольких токенов? Вы не должны этого делать, если это не разрешено в Stripe, кстати. - person Edward   schedule 27.05.2017