我已经使用了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 仪表板时,元数据显示为空,现在请帮助我,我如何通过结帐发送元数据?
您正在创建的是一个 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}"]');
?>