2016-06-21 7 views
2

Ich benutze die WooCommerce-REST-API-Client-Library-v2 und versuche einen einfachen Abruf Bestellungen. Ich habe kein Problem mit dem Herstellen einer Verbindung zu meinem Testserver über HTTP, aber wenn ich versuche, eine Verbindung zu einem Produktionsserver über https herzustellen, erhalte ich einen ungültigen JSON-Fehler in der Antwort. Sicheres Auschecken ist in Woocommerce-Einstellungen aktiviert. Ich habe versucht mit und ohne base64_encoding die Anmeldeinformationen. Kann mir jemand bitte sagen, was ich falsch mache oder ein Beispiel für die korrekte Formatierung zur Authentifizierung über HTTPS mit WooCommerce-REST-API-Client-Library-v2 geben? Hier ist mein Code. Vielen Dank!Wie authentifiziere ich mich mit Woocommerce API mit HTTPS (Basic Auth)

$consumer_key = base64_encode('ck_removed'); // Add your own Consumer Key here 
$consumer_secret = base64_encode('cs_removed'); // Add your own Consumer Secret here 
$store_url = 'https://removed.co.uk'; // Add the home URL to the store you want to connect to here 
$is_ssl= TRUE; 

try { 
    $client = new WC_API_Client($consumer_key, $consumer_secret, $store_url); 
    // Get WC Orders Request 
    $orders=$client->orders->get(); 
    $orders=$orders['orders']; 
} catch (WC_API_Client_Exception $e) { 
    echo $e->getMessage() . PHP_EOL; 
    echo $e->getCode() . PHP_EOL; 
    if ($e instanceof WC_API_Client_HTTP_Exception) { 
     print_r($e->get_request()); 
     print_r($e->get_response()); 
    } 
} 

Antwort

1

Wenn der HTTP-Statuscode ist: 301 dauerhaft verschoben, dann ist der Endpunkt, den Sie versuchen zu erreichen, ist nicht SSL/TLS-fähig ist. Ändern Sie den Host von HTTPS zu HTTP und Sie werden fertig sein. Wenn der Endpunkt jedoch SSL/TLS-aktiviert ist, können Sie die Basisauthentifizierung auf Schlüsselbasis (öffentlicher Schlüssel, privater Schlüssel) verwenden. Auf einem SSL/TLS-aktivierten Endpunkt funktioniert OAuth nicht. Viel Glück!

$options = array(
    'debug'   => true, 
    'return_as_array' => false, 
    'validate_url' => false, 
    'timeout'   => 30, 
    'ssl_verify'  => false 
); 

try { 
    $client = new WC_API_Client($http_store_url, $consumer_key $consumer_secret, $options); 
    $orders=$client->orders->get(); 
    print_r($orders); 
} catch (WC_API_Client_Exception $e) { 
    echo $e->getMessage() . PHP_EOL; 
    echo $e->getCode() . PHP_EOL; 
    if ($e instanceof WC_API_Client_HTTP_Exception) { 
     print_r($e->get_request()); 
     print_r($e->get_response()); 
    } 
} 
Verwandte Themen