问题描述
您好,在此先感谢您的帮助。我们正在尝试将WooCommerce Intuit Payments网关用于程序化订单。这个想法是这样的:
我们拥有的代码似乎已经很接近了,但是一旦订单消息中显示以下内容,我们就会收到错误消息:
“ 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 (将#修改为@)