创建订单时在数据库中保存Bin和Last4 - WooCommerce

时间:2017-01-30 12:48:02

标签: php woocommerce checkout

创建订单时,我需要在数据库中保存用户在透明结帐时通知卡的Bin和Last4。

我在保存请求时尝试执行此插入,但它无法正常工作,因为它写为:NULL

enter image description here

的Javascript

$('.woocommerce-checkout, #order_review').submit(function (e) {
e.preventDefault();
// console.log($('input[name=pagarme_card_hash]').val());
var cardNumber = $('#pagarme-card-number').val();
var pagarmeCardNumber = cardNumber.replace(/ /g, ''); // remove spaces
var bin = pagarmeCardNumber.slice(0, 6);
var last4 = pagarmeCardNumber.slice(-4);

console.log('pagarmeCardNumber: ' + pagarmeCardNumber);
console.log('bin: ' + bin);
console.log('last4: ' + last4);

$.ajax({

    type: 'post',
    url: ajaxurl,
    data: {
        bin: bin,
        last4: last4,
        action: 'idx_save_bin_last4'
    },
    success: function (response) {
        console.log('success');

    },
    error: function (error){
        console.log('error');
        console.log(error);
    }
});
return false;
});

的functions.php

add_action( 'wp_ajax_idx_save_bin_last4', 'idx_save_bin_last4' );
add_action( 'wp_ajax_nopriv_idx_save_bin_last4', 'idx_save_bin_last4' );
add_action( 'save_post', 'idx_save_bin_last4', 10, 3 );
function idx_save_bin_last4($post_id)
{
   $bin = $_POST['bin'];
   $last4 = $_POST['last4'];
   $post_type = get_post_type($post_id);

   if ("shop_order" != $post_type ) {
     return;
   }
   update_post_meta($post_id, '_order_bin', $bin);
   update_post_meta($post_id, '_order_last4', $last4);
}

1 个答案:

答案 0 :(得分:1)

没有冒犯,但我永远不会从你的网站上购买任何类似的代码,并使用未经过滤的POST变种。

考虑使用Stripe API处理PAN数据,然后您需要担心的是事务,发票,客户和订阅哈希值。没有CC数据触及您的服务器。