gpt4 book ai didi

php - 更改 Woocommerce 结帐以在单独的 WordPress 网站上处理订单?

转载 作者:可可西里 更新时间:2023-11-01 13:23:45 25 4
gpt4 key购买 nike

我需要创建 Woocommerce 处理订单的方式,以便我可以在 站点 A 上创建订单并将该订单发送到 站点 B

因此,当客户将商品添加到他们的购物车并点击结帐时,它会在 站点 A站点 B 上创建订单,但是,它还会将用户重定向到 Site B 处理付款。

到目前为止我只能更改结帐按钮:

add_filter( 'woocommerce_get_checkout_url', 'my_change_checkout_url', 30 );

function my_change_checkout_url( $url ) {
$url = "your checkout url ";
return $url;
}

并创建订单。

if (isset($_POST['isOrder']) && $_POST['isOrder'] == 1) {
$address = array(
'first_name' => $_POST['notes']['domain'],
'last_name' => '',
'company' => $_POST['customer']['company'],
'email' => $_POST['customer']['email'],
'phone' => $_POST['customer']['phone'],
'address_1' => $_POST['customer']['address'],
'address_2' => '',
'city' => $_POST['customer']['city'],
'state' => '',
'postcode' => $_POST['customer']['postalcode'],
'country' => 'NL'
);

$order = wc_create_order();
foreach ($_POST['product_order'] as $productId => $productOrdered) :
$order->add_product( get_product( $productId ), 1 );
endforeach;

$order->set_address( $address, 'billing' );
$order->set_address( $address, 'shipping' );

$order->calculate_totals();

update_post_meta( $order->id, '_payment_method', 'ideal' );
update_post_meta( $order->id, '_payment_method_title', 'iDeal' );

// Store Order ID in session so it can be re-used after payment failure
WC()->session->order_awaiting_payment = $order->id;

// Process Payment
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
$result = $available_gateways[ 'ideal' ]->process_payment( $order->id );

// Redirect to success/confirmation/payment page
if ( $result['result'] == 'success' ) {

$result = apply_filters( 'woocommerce_payment_successful_result', $result, $order->id );

wp_redirect( $result['redirect'] );
exit;
}
}

虽然我不确定如何将所有这些放在一起,以便我可以同时使用站点 A 和站点 B。

我该怎么做?

编辑:为了更多地解释我需要这样做,我需要在第二个网站上处理付款,该网站也有产品。

因此,客户在站点 A 上购买产品,在单击“使用 Paypal 付款”(即时结帐)和“继续付款”后,客户及其填写的信息将被带到站点 B,在那里他们要么能够完成付款,或直接转到站点 B 上的 Paypal 网关。

最佳答案

试试这个

在站点 A 中添加此代码。

function action_woocommerce_new_order( $order_id ) { 

//get all order details by $order_id
//post your data to site B

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://yoursiteB.com/wp-json/api/v2/create_wc_order");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2");

// In real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS,
// http_build_query(array('postvar1' => 'value1')));

// Receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);

curl_close ($ch);
};
add_action( 'woocommerce_payment_complete', 'action_woocommerce_new_order', 10, 1 );

在站点 B 中添加此代码。

Class WC_Rest_API {

public function __construct() {
add_action( 'rest_api_init', array( $this, 'init_rest_api') );
}

public function init_rest_api() {
register_rest_route('api/v2', '/create_wc_order', array(
'methods' => 'POST',
'callback' => array($this,'create_wc_order'),
));
}

public function create_wc_order( $data ) {

//$data - all the details needs to be send from site A

global $woocommerce;
$user_id = $data['user_id'];
$user = get_user_by( 'ID', $user_id);
$phonenumer = get_user_meta( $user_id,'user_phoneno', true);

if($user) {

$address = array(
'first_name' => $user->display_name,
'last_name' => $user->display_name,
'email' => $user->user_email,
'phone' => $phonenumer,
);

$order = wc_create_order();
//get product details from rest api site A
$order->add_product();
$order->set_address( $address, 'billing' );

$order->calculate_totals();
$order = wc_get_order( $order->id );

$response['status'] = 'success';
$response['message'] = 'Order created on wordpress site B.';
return new WP_REST_Response($response, 200);

}

}
}

$rest_api = new WC_Rest_API();

通过下面的 URL 将站点 A 的所有数据发送到站点 B。

http://yoursiteB.com/wp-json/api/v2/create_wc_order

方法应该是'POST'

数据应包含从站点 A 订购的所有详细信息。

如果您有任何问题,请告诉我。

关于php - 更改 Woocommerce 结帐以在单独的 WordPress 网站上处理订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com