需要使用 Stripe(more) gravity forms 插件将付款方式默认为 "card on file"
Need to default payment form to "card on file" using Stripe(more) gravity forms plugin
我正在使用 (more)Stripe for gravity forms 插件来存储用户首次购买时的信用卡详细信息,这样我就可以在确认页面上为他们提供一键加售,而无需重新输入信用卡详情。
信用卡详细信息已正确存储,但在加售页面上默认未选择存储的卡。
插件作者告诉我控制javascript中的默认卡,但没有提供任何进一步的细节。
我在追加销售页面上隐藏了信用卡表格,因此用户只需点击我的号召性用语按钮,如图所示 here
您可以在未选择默认卡片的情况下看到未隐藏的表单here
这是信用卡字段js:
/**
*
*/
jQuery( document ).ready( function ( jQuery ) {
jQuery( "input[name='gform_payment_method']" ).on( 'click', gfpStripeToggleCreditCard );
} );
function gfpStripeToggleCreditCard() {
var card = jQuery( this );
if ( jQuery( "#gform_payment_method_creditcard" ).is( ":checked" ) ) {
gfpStripeShowCreditCardFields();
}
else {
gfpStripeHideCreditCardFields();
gfpStripeSetCardNumber( card );
}
}
function gfpStripeShowCreditCardFields() {
var card_number = jQuery( '.gform_card_icon_container' ).next();
var card_number_label = card_number.next();
var card_exp_and_code = jQuery( '.ginput_cardextras' );
var card_name = card_exp_and_code.next();
card_number.fadeIn();
card_number_label.fadeIn();
card_exp_and_code.fadeIn();
card_name.fadeIn();
}
function gfpStripeHideCreditCardFields() {
var card_number = jQuery( '.gform_card_icon_container' ).next();
var card_number_label = card_number.next();
var card_exp_and_code = jQuery( '.ginput_cardextras' );
var card_name = card_exp_and_code.next();
card_number.fadeOut();
card_number_label.fadeOut();
card_exp_and_code.fadeOut();
card_name.fadeOut();
}
function gfpStripeSetCardNumber( card ) {
var form = card.closest( 'form' );
var field_id = card.closest( 'li' ).attr( 'id' );
field_id = field_id.split( '_' );
field_id = field_id[2];
var card_number = card.val();
form.append( "<input type='hidden' name='input_" + field_id + ".1' value='" + card_number + "' />" );
var card_type = jQuery( 'div.gform_payment_' + card_number ).text();
card_type = card_type.trim();
card_type = card_type.split( '(' );
card_type = card_type[0].trim();
form.append( "<input type='hidden' name='input_" + field_id + ".4' value='" + card_type + "' />" );
}
您可以使用 click()
触发默认选项,方法是在绑定后添加它:
jQuery( document ).ready( function ( jQuery ) {
//binds to the plugin's function
jQuery( "input[name='gform_payment_method']" ).on( 'click', gfpStripeToggleCreditCard );
//triggers the change to default option
jQuery( "input#ID_OF_DEFAULT_OPTION" ).click();
} );
您只需要检查您要默认选择的单选按钮输入(在您的浏览器中:右键单击+检查),查看该输入的 id 属性,复制并替换 ID_OF_DEFAULT_OPTION
根据您在其中找到的内容。
在引用插件的 js 文件(在页面本身)之后,可以在另一个 .ready
块中调用这一新行,这样您就不会更改插件中的任何内容...
如果 id 是随机的,您也可以使用另一个选择器:
jQuery( "input[id^=gform_payment_method_card_]" ).click();
这意味着您正在选择具有以 gform_payment_method_card_
开头的 id 属性的输入按钮。
我正在使用 (more)Stripe for gravity forms 插件来存储用户首次购买时的信用卡详细信息,这样我就可以在确认页面上为他们提供一键加售,而无需重新输入信用卡详情。
信用卡详细信息已正确存储,但在加售页面上默认未选择存储的卡。
插件作者告诉我控制javascript中的默认卡,但没有提供任何进一步的细节。
我在追加销售页面上隐藏了信用卡表格,因此用户只需点击我的号召性用语按钮,如图所示 here
您可以在未选择默认卡片的情况下看到未隐藏的表单here
这是信用卡字段js:
/**
*
*/
jQuery( document ).ready( function ( jQuery ) {
jQuery( "input[name='gform_payment_method']" ).on( 'click', gfpStripeToggleCreditCard );
} );
function gfpStripeToggleCreditCard() {
var card = jQuery( this );
if ( jQuery( "#gform_payment_method_creditcard" ).is( ":checked" ) ) {
gfpStripeShowCreditCardFields();
}
else {
gfpStripeHideCreditCardFields();
gfpStripeSetCardNumber( card );
}
}
function gfpStripeShowCreditCardFields() {
var card_number = jQuery( '.gform_card_icon_container' ).next();
var card_number_label = card_number.next();
var card_exp_and_code = jQuery( '.ginput_cardextras' );
var card_name = card_exp_and_code.next();
card_number.fadeIn();
card_number_label.fadeIn();
card_exp_and_code.fadeIn();
card_name.fadeIn();
}
function gfpStripeHideCreditCardFields() {
var card_number = jQuery( '.gform_card_icon_container' ).next();
var card_number_label = card_number.next();
var card_exp_and_code = jQuery( '.ginput_cardextras' );
var card_name = card_exp_and_code.next();
card_number.fadeOut();
card_number_label.fadeOut();
card_exp_and_code.fadeOut();
card_name.fadeOut();
}
function gfpStripeSetCardNumber( card ) {
var form = card.closest( 'form' );
var field_id = card.closest( 'li' ).attr( 'id' );
field_id = field_id.split( '_' );
field_id = field_id[2];
var card_number = card.val();
form.append( "<input type='hidden' name='input_" + field_id + ".1' value='" + card_number + "' />" );
var card_type = jQuery( 'div.gform_payment_' + card_number ).text();
card_type = card_type.trim();
card_type = card_type.split( '(' );
card_type = card_type[0].trim();
form.append( "<input type='hidden' name='input_" + field_id + ".4' value='" + card_type + "' />" );
}
您可以使用 click()
触发默认选项,方法是在绑定后添加它:
jQuery( document ).ready( function ( jQuery ) {
//binds to the plugin's function
jQuery( "input[name='gform_payment_method']" ).on( 'click', gfpStripeToggleCreditCard );
//triggers the change to default option
jQuery( "input#ID_OF_DEFAULT_OPTION" ).click();
} );
您只需要检查您要默认选择的单选按钮输入(在您的浏览器中:右键单击+检查),查看该输入的 id 属性,复制并替换 ID_OF_DEFAULT_OPTION
根据您在其中找到的内容。
在引用插件的 js 文件(在页面本身)之后,可以在另一个 .ready
块中调用这一新行,这样您就不会更改插件中的任何内容...
如果 id 是随机的,您也可以使用另一个选择器:
jQuery( "input[id^=gform_payment_method_card_]" ).click();
这意味着您正在选择具有以 gform_payment_method_card_
开头的 id 属性的输入按钮。