需要使用条纹(更多)重力表单插件将默认付款表单设置为“存档卡”

Need to default payment form to "card on file" using Stripe(more) gravity forms plugin

本文关键字:表单 设置 付款 默认 存档卡 插件 更多      更新时间:2023-09-26

我正在使用(更多)重力表单插件的 Stripe 来存储用户首次购买时的信用卡详细信息,这样我就可以在确认页面上为他们提供 1 次点击追加销售,而无需重新=输入信用卡详细信息。

信用卡详细信息已正确存储,但默认情况下不会在追加销售页面上选择存储的卡。

插件作者告诉我控制javascript中的默认卡,但没有提供任何进一步的细节。

我在追加销售页面上隐藏了信用卡表单,因此用户只需单击我的号召性用语按钮,如下所示

您可以在此处看到未选择默认卡的未隐藏表单

这是信用卡字段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();

这意味着您要选择的输入按钮的 id 属性以 gform_payment_method_card_ 开头。