Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 55 additions & 6 deletions includes/API.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
use WooCommerce\Facebook\API\Request;
use WooCommerce\Facebook\API\Response;
use WooCommerce\Facebook\Events\Event;

use WooCommerce\Facebook\Framework\Api\Base;
use WooCommerce\Facebook\Framework\Api\Exception as ApiException;

Expand Down Expand Up @@ -276,24 +275,19 @@ public function delete_mbe_connection( string $external_business_id): API\FBE\In
*/
public function get_business_configuration( $external_business_id, $access_token = '', $fields = [] ) {
$request = new API\FBE\Configuration\Request( $external_business_id, 'GET' );

$params = [];

// Use provided access token or fall back to the instance token
if ( ! empty( $access_token ) ) {
$params['access_token'] = $access_token;
}

// Add fields parameter if specified
if ( ! empty( $fields ) ) {
$params['fields'] = is_array( $fields ) ? implode( ',', $fields ) : $fields;
}

// Set parameters if we have any
if ( ! empty( $params ) ) {
$request->set_params( $params );
}

$this->set_response_handler( API\FBE\Configuration\Read\Response::class );
return $this->perform_request( $request );
}
Expand Down Expand Up @@ -721,4 +715,59 @@ protected function get_new_request( $args = [] ) {
protected function get_plugin() {
return facebook_for_woocommerce();
}

/**
* Repairs the commerce integration connection.
*
* @param string $fbe_external_business_id The external business ID associated with the Facebook Business Extension
* @param string $shop_domain The domain of the WooCommerce site
* @param string $admin_url The admin URL of the WooCommerce site
* @param string $extension_version The version of the Facebook for WooCommerce extension
*
* @return API\Response|API\CommerceIntegration\Repair\Response
* @throws ApiException
*/
public function repair_commerce_integration( string $fbe_external_business_id, string $shop_domain, string $admin_url, string $extension_version ): API\CommerceIntegration\Repair\Response {
$request = new API\CommerceIntegration\Repair\RepairRequest( $fbe_external_business_id, $shop_domain, $admin_url, $extension_version );
$this->set_response_handler( API\CommerceIntegration\Repair\Response::class );
return $this->perform_request( $request );
}

/**
* Updates the commerce integration configuration.
*
* @param string $commerce_integration_id The ID of the commerce integration to update
* @param string|null $extension_version The version of the Facebook for WooCommerce extension
* @param string|null $admin_url The admin URL of the WooCommerce site
* @param string|null $country_code ISO2 country code
* @param string|null $currency ISO currency code
* @param string|null $platform_store_id The ID of the current website on a multisite setup
* @param string $commerce_partner_seller_platform_type The type of commerce partner platform
* @param string $installation_status The installation status of the integration
* @return API\Response|API\CommerceIntegration\Configuration\Update\Response
* @throws ApiException
*/
public function update_commerce_integration(
string $commerce_integration_id,
?string $extension_version = null,
?string $admin_url = null,
?string $country_code = null,
?string $currency = null,
?string $platform_store_id = null,
string $commerce_partner_seller_platform_type = 'SELF_SERVE',
string $installation_status = 'ACCESS_TOKEN_DEPOSITED'
): API\CommerceIntegration\Configuration\Update\Response {
$request = new API\CommerceIntegration\Configuration\Update\UpdateRequest(
$commerce_integration_id,
$extension_version,
$admin_url,
$country_code,
$currency,
$platform_store_id,
$commerce_partner_seller_platform_type,
$installation_status
);
$this->set_response_handler(API\CommerceIntegration\Configuration\Update\Response::class);
return $this->perform_request($request);
}
}
23 changes: 23 additions & 0 deletions includes/API/CommerceIntegration/Configuration/Request.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php
declare( strict_types=1 );

namespace WooCommerce\Facebook\API\CommerceIntegration\Configuration;

defined( 'ABSPATH' ) || exit;

use WooCommerce\Facebook\API;

/**
* Commerce Integration Configuration API request object.
*/
class Request extends API\Request {
/**
* API request constructor.
*
* @param string $commerce_integration_id commerce integration ID
* @param string $method request method
*/
public function __construct( $commerce_integration_id, $method ) {
parent::__construct( '/' . $commerce_integration_id, $method );
}
}
35 changes: 35 additions & 0 deletions includes/API/CommerceIntegration/Configuration/Update/Response.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace WooCommerce\Facebook\API\CommerceIntegration\Configuration\Update;

use WooCommerce\Facebook\API\Response as ApiResponse;

defined( 'ABSPATH' ) || exit;

/**
* Response object for Commerce Integration Configuration Update API.
*
* @property-read bool $success Whether the update request was successful
* @property-read string $commerce_partner_integration_id The ID of the commerce partner integration
*/
class Response extends ApiResponse {
/**
* Returns whether the update request was successful.
*
* @return bool
* @since 3.4.8
*/
public function is_successful(): bool {
return (bool) $this->success;
}

/**
* Returns the commerce partner integration ID.
*
* @return string
* @since 3.4.8
*/
public function get_commerce_partner_integration_id(): string {
return $this->get_id() ?? '';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php
declare( strict_types=1 );

namespace WooCommerce\Facebook\API\CommerceIntegration\Configuration\Update;

defined( 'ABSPATH' ) || exit;

use WooCommerce\Facebook\API;

/**
* Commerce Integration Configuration Update API request object with payload.
*
* This class handles the creation of configuration update requests for the Commerce Integration API.
* It constructs the necessary payload for updating integration settings between WooCommerce
* and Facebook's Commerce platform.
*/
class UpdateRequest extends API\Request {
/**
* API request constructor.
*
* Initializes a new configuration update request with the required parameters for the Commerce Integration API.
* The request is used to update the configuration settings between WooCommerce and Facebook's Commerce platform.
*
* @param string $commerce_integration_id The ID of the commerce integration to update
* @param string|null $extension_version The version of the Facebook for WooCommerce extension
* @param string|null $admin_url The admin URL of the WooCommerce site
* @param string|null $country_code ISO2 country code
* @param string|null $currency ISO currency code
* @param string|null $platform_store_id The ID of the current website on a multisite setup
* @param string $commerce_partner_seller_platform_type The type of commerce partner platform
* @param string $installation_status The installation status of the integration
*/
public function __construct(
string $commerce_integration_id,
?string $extension_version = null,
?string $admin_url = null,
?string $country_code = null,
?string $currency = null,
?string $platform_store_id = null,
string $commerce_partner_seller_platform_type = 'SELF_SERVE',
string $installation_status = 'ACCESS_TOKEN_DEPOSITED'
) {
parent::__construct( "/$commerce_integration_id", 'POST' );

$data = array(
'commerce_partner_seller_platform_type' => $commerce_partner_seller_platform_type,
'installation_status' => $installation_status,
);

if ( $extension_version ) {
$data['extension_version'] = $extension_version;
}

if ( $admin_url ) {
$data['admin_url'] = $admin_url;
}

if ( $country_code ) {
$data['country_code'] = $country_code;
}

if ( $currency ) {
$data['currency'] = $currency;
}

if ( $platform_store_id ) {
$data['platform_store_id'] = $platform_store_id;
}

$this->set_data( $data );
}
}
43 changes: 43 additions & 0 deletions includes/API/CommerceIntegration/Repair/RepairRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
declare( strict_types=1 );

namespace WooCommerce\Facebook\API\CommerceIntegration\Repair;

defined( 'ABSPATH' ) || exit;

use WooCommerce\Facebook\API;

/**
* Commerce Integration Repair API request object with payload.
*
* This class handles the creation of repair requests for the Commerce Integration API.
* It constructs the necessary payload for repairing integration object between WooCommerce
* and Facebook's Commerce platform.
*/
class RepairRequest extends API\Request {
/**
* API request constructor.
*
* Initializes a new repair request with the required parameters for the Commerce Integration API.
* The request is used to repair or re-establish the connection between WooCommerce and Facebook's Commerce platform.
*
* @param string $fbe_external_business_id The external business ID associated with the Facebook Business Extension
* @param string $shop_domain The domain of the WooCommerce site
* @param string $admin_url The admin URL of the WooCommerce site
* @param string $extension_version The version of the Facebook for WooCommerce extension
* @param string $platform_type The type of the integration method
*/
public function __construct( $fbe_external_business_id, $shop_domain, $admin_url, $extension_version, $platform_type = 'SELF_SERVE_PLATFORM' ) {
parent::__construct( '/commerce_partner_integrations_repair', 'POST' );

$data = array(
'fbe_external_business_id' => $fbe_external_business_id,
'shop_domain' => $shop_domain,
'admin_url' => $admin_url,
'extension_version' => $extension_version,
'commerce_partner_seller_platform_type' => $platform_type,
);

$this->set_data( $data );
}
}
32 changes: 32 additions & 0 deletions includes/API/CommerceIntegration/Repair/Request.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*
* @package FacebookCommerce
*/

namespace WooCommerce\Facebook\API\CommerceIntegration\Repair;

defined( 'ABSPATH' ) || exit;

use WooCommerce\Facebook\API;

/**
* Commerce Integration Repair API request object.
*
* @since 3.4.8
*/
class Request extends API\Request {

/**
* API request constructor.
*
* @since 3.4.8
*/
public function __construct() {
parent::__construct( '/commerce_integration_repair', 'POST' );
}
}
35 changes: 35 additions & 0 deletions includes/API/CommerceIntegration/Repair/Response.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php
declare( strict_types=1 );

namespace WooCommerce\Facebook\API\CommerceIntegration\Repair;

use WooCommerce\Facebook\API\Response as ApiResponse;

defined( 'ABSPATH' ) || exit;

/**
* Response object for Commerce Integration Repair API.
*
* @property-read string commerce_partner_integration_id The ID of the commerce partner integration
*/
class Response extends ApiResponse {
/**
* Returns whether the repair request was successful.
*
* @return bool
* @since 3.4.8
*/
public function is_successful(): bool {
return (bool) $this->success;
}

/**
* Returns the commerce partner integration ID.
*
* @return string
* @since 3.4.8
*/
public function get_commerce_partner_integration_id(): string {
return $this->get_id() ?? '';
}
}
Loading