WordPress 사이트에서 주문을 처리하도록 Woocommerce 체크아웃을 변경하시겠습니까?
Woocommerce가 주문을 처리하는 방법을 만들어야 주문을 만들 수 있습니다.Site A
그리고 그 주문서를 다음으로 보냅니다.Site B
.
따라서 고객이 카트에 항목을 추가하고 체크아웃을 클릭하면 둘 다에서 주문이 생성됩니다.Site A
그리고.Site 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에서 제품을 구매하고, "페이팔로 결제"(인스턴트 체크아웃) 및 "결제 진행"을 클릭한 후, 고객과 고객이 작성한 정보는 사이트 B로 이동하여 결제를 완료하거나 사이트 B의 페이팔 게이트웨이로 직접 이동할 수 있습니다.
이쪽으로 오세요
사이트 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();
사이트 A의 모든 데이터를 아래 URL을 통해 사이트 B로 보냅니다.
http://yoursiteB.com/wp-json/api/v2/create_wc_order
메서드는 'POST'여야 합니다.
데이터는 A 사이트의 모든 세부 정보를 포함해야 합니다.
질문이 있으면 저에게 알려주세요.
WooCommerce에서 제공하는 웹 후크를 사용하여 제품 추가 및 주문 작성에 대해 사이트 B를 업데이트할 수 있습니다.
그런 다음 사이트 A에서 체크아웃을 후크하고 사이트 B 체크아웃 페이지로 리디렉션할 수 있습니다.
https://metorik.com/blog/how-to-create-woocommerce-custom-redirects https://developer.wordpress.org/reference/hooks/template_redirect/
언급URL : https://stackoverflow.com/questions/54431908/change-woocommerce-checkout-to-process-order-on-an-separate-wordpress-site
'source' 카테고리의 다른 글
Google Firebase 하위 항목이 있는지 확인 (0) | 2023.07.13 |
---|---|
Rprofile에서 .libPaths를 사용하여 R 기본 라이브러리 경로를 변경합니다.사이트가 작동하지 않음 (0) | 2023.07.13 |
IIS 오류, 웹 서버에서 디버깅을 시작할 수 없습니다. (0) | 2023.07.13 |
기능 구성 요소 정적 속성 반응 (0) | 2023.07.13 |
엑셀용 VBA에서 r1c1 형식을 사용하여 절대 참조를 작성하려면 어떻게 해야 합니까? (0) | 2023.07.13 |