如何使用 wp stripe checkout 插件发送元数据?

问题描述 投票:0回答:1

我已经使用了wp-stripe-checkout插件进行付款,现在我想通过付款发送一些自定义字段,为此我已经完成了以下代码,

<div id="stripeButtonContainer" style="display: none;">
    <?php                     
        echo do_shortcode('[wp_stripe_checkout_session name="' . $product_name . '" price="' . $price . '" button_text="Pay Now" prefill_wp_email="true" metadata="'.json_encode(array('booking_data' => $bookingData)).'"]');
    ?>
</div>

<script>
    document.addEventListener('DOMContentLoaded', function() {
        $("#np-button").hide();
        const nextBtn = document.getElementById('next-btn');
        const prevBtn = document.getElementById('prev-btn');
        const step1 = document.getElementById('step-1');
        const step2 = document.getElementById('step-2');
        const multiStepForm = document.getElementById('multi-step-form');

        nextBtn.addEventListener('click', () => {
            
            if (multiStepForm.checkValidity()) {

                const bookingData = {                    
                    user_id:    document.getElementById('user_id').value,
                    guest_name: document.getElementById('full-name').value,
                    email:      document.getElementById('email').value,
                    phone:      document.getElementById('phone').value,
                    address:    "<?php echo $address; ?>",
                    zip_code:   document.getElementById('zip-code').value,
                    city:       document.getElementById('city').value,
                    country:    document.getElementById('country').value,
                    subscribe:  document.getElementById('subscribe').checked ? 1 : 0,                   
                    check_in:   "<?php echo $check_in->format('Y-m-d'); ?>",
                    check_out:  "<?php echo $check_out->format('Y-m-d'); ?>",                   
                    property_id: "<?php echo $lbb_p_id; ?>",                
                };
                console.log(bookingData);
                document.getElementById('booking_data').value = JSON.stringify(bookingData);

                step1.classList.remove('active');
                step2.classList.add('active');
                $("#np-button").show();
            } else {
                multiStepForm.reportValidity();
            }
        });

        prevBtn.addEventListener('click', () => {
            $("#np-button").hide();
            step2.classList.remove('active');
            step1.classList.add('active');
        });
    });
</script>

我在短代码中将 bookingData 作为元数据传递,但是当我签入 Stripe 仪表板时,元数据显示为空,现在请帮助我,我如何通过结帐发送元数据?

wordpress stripe-payments
1个回答
0
投票

您正在创建的是一个 Checkout Session,并且 - 假设

metadata
参数与此 wp 库的 Stripe 的本机参数 一样工作 - 元数据应用于 Session 对象,而不是付款 ( payment_intent)对象。

您将客户重定向到会话 URL,该会话完成后会创建一个付款意向(结帐会话 -> 付款意向)。要将元数据传递给支付意图而不是会话,您通常会使用

payment_intent_data.metadata
reference)。

查看 wp 库的文档,它的参数似乎与 Stripe 的本机参数非常相同(例如

success_url
tax_id_collection
)。也就是说,我不确定字典的格式如何。
理论上是这样的?

<?php                     
    echo do_shortcode('[wp_stripe_checkout_session ... payment_intent_data.metadata="{your metadata}"]');
?>
© www.soinside.com 2019 - 2024. All rights reserved.