WooCommerce Intuit Payments网关:获得令牌化的信用卡吗?

问题描述

您好,在此先感谢您的帮助。我们正在尝试将WooCommerce Intuit Payments网关用于程序化订单。这个想法是这样的:

  1. 用户购买积分用于下载
  2. 如果用户拥有超过50个积分,请使用6美元的积分进行收费
  3. 如果用户的信用额度不足50,请先使用存储的信用卡通过Intuit向其帐户添加“充值”,然后再收取$ 6的信用额度。

我们拥有的代码似乎已经很接近了,但是一旦订单消息中显示以下内容,我们就会收到错误消息:

“ Intuit Payments信用卡付款失败(付款令牌丢失。)订单状态从“待处理付款”更改为“失败”。

这是我们用于程序化订单的代码

<?PHP
require('wp-load.PHP');

$servername = "xxxxxxx";
$username = "xxxxxxx";
$password = "xxxxxxx";
$dbname = "xxxxxxx";

// Set up DB connection
$conn = MysqLi_connect($servername,$username,$password,$dbname);
$result = $conn->query("SELECT load_history.LoadId AS OrderID,bidformsubmission.email AS Email
    FROM load_history 
    INNER JOIN bidformsubmission ON load_history.LoadId = bidformsubmission.LoadId WHERE load_history.State = 'Won'");

while ($row = $result->fetch_assoc())
{

        //$the_user = get_user_by('email',$row['Email']);
        $the_user = get_user_by('email','abab@ababab.com');
        $load_id = $row['OrderID'];
        $user_id = $the_user->ID;

        $gateways = WC()->payment_gateways->payment_gateways();
        $address = array(
            'first_name' => get_user_Meta( $user_id,'first_name',true ),'last_name'  => get_user_Meta( $user_id,'last_name','company'    => get_user_Meta( $user_id,'billing_company','email'      => get_user_Meta( $user_id,'billing_email','phone'      => get_user_Meta( $user_id,'billing_phone','address_1'  => get_user_Meta( $user_id,'billing_address_1','address_2'  => get_user_Meta( $user_id,'billing_address_2','city'       => get_user_Meta( $user_id,'billing_city','state'      => get_user_Meta( $user_id,'billing_state','postcode'   => get_user_Meta( $user_id,'billing_postcode','country'    => get_user_Meta( $user_id,'billing_country',true )
        );           
        $args = array(
            'customer_id'   => $user_id
        );  

        $available_funds = WC_Account_Funds::get_account_funds( $user_id,false );

        // Check if funds are less than or equal to 50,top up the funds.  woocommerce-gateway-intuit-payments
        if($available_funds <= 50){
            $order = wc_create_order($args);
           // $order->set_payment_method( $gateways['intuit_payments_credit_card'] );
            //$order->set_payment_method( $gateways['woocommerce-gateway-intuit-payments'] );

           // $available_payment_methods = WC()->payment_gateways->get_available_payment_gateways();
//$order->set_payment_method( $available_payment_methods );
            //// Temporary commented out top up of $250
            // $order->add_product( get_product( '1631' ),1 );

            $order->add_product( get_product( '1629' ),1 ); //// Temporary top up of $2.19 for testing
            $order->set_address( $address,'billing' );
            $order->set_address( $address,'shipping' );
            //$available_payment_methods = WC()->payment_gateways->get_available_payment_gateways();
            //$payment_methods = WC()->payment_gateways->get_available_payment_gateways();

            $order->set_payment_method( $gateways['intuit_payments_credit_card'] );
            //$order->set_payment_method($payment_gateways);
            $order->calculate_totals();
           
             
            $default_token = WC_Payment_Tokens::get_customer_default_token( $user_id );
            $token = $order->add_payment_token($default_token);

            $result = $gateways[ 'intuit_payments_credit_card' ]->process_payment( $order->id );

            $order->update_status('completed','Order added programmatically!',true);
            $order->save(); 
        }
              
        // Charge $6 credits to the account for a successful bid
        $order = wc_create_order($args);
        $order->add_product( get_product( '1630' ),1 ); 
        $order->set_address( $address,'billing' );
        $order->set_address( $address,'shipping' );
        $order->set_payment_method( $gateways['accountfunds'] );
        $order->calculate_totals();
        $funds_used = $order->calculate_totals();
        WC_Account_Funds::remove_funds( $order->get_user_id(),$funds_used );
        $order->update_status('completed',true);
        $order_id = $order->save();
            
        // Update freightbot DB to give a State of WonCharged (successful credit deduction occured)
        if($order_id != NULL) {
           $conn->query("UPDATE load_history SET load_history.State = 'WonCharged' WHERE load_history.LoadId = $load_id");
        }
 
}

                                    


?> ```

I am grateful for any solutions that are out there. Thanks in advance.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)