-
-
Save phillipwilhelm/b5c29a0ff55302041e3c29c54e37f44a to your computer and use it in GitHub Desktop.
WooCommerce REST API authentication: Use Oauth 1 and the WooCommerce REST API to retrieve order details. https://www.damiencarbery.com/2019/06/woocommerce-rest-api-authentication/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": 7755, | |
"parent_id": 0, | |
"number": "7755", | |
"order_key": "wc_order_YjITxJBWgJIFu", | |
"created_via": "programatically", | |
"version": "3.6.4", | |
"status": "completed", | |
"currency": "EUR", | |
"date_created": "2019-06-11T08:58:35", | |
"date_created_gmt": "2019-06-11T08:58:35", | |
"date_modified": "2019-06-11T08:58:36", | |
"date_modified_gmt": "2019-06-11T08:58:36", | |
"discount_total": "0.00", | |
"discount_tax": "0.00", | |
"shipping_total": "0.00", | |
"shipping_tax": "0.00", | |
"cart_tax": "0.00", | |
"total": "42.00", | |
"total_tax": "0.00", | |
"prices_include_tax": false, | |
"customer_id": 8, | |
"customer_ip_address": "::1", | |
"customer_user_agent": "PostmanRuntime/7.13.0", | |
"customer_note": "", | |
"billing": { | |
"first_name": "John", | |
"last_name": "Smith", | |
"company": "", | |
"address_1": "1234 Main Street", | |
"address_2": "", | |
"city": "Auckland", | |
"state": "NA", | |
"postcode": "3345", | |
"country": "NZ", | |
"email": "[email protected]", | |
"phone": "" | |
}, | |
"shipping": { | |
"first_name": "", | |
"last_name": "", | |
"company": "", | |
"address_1": "", | |
"address_2": "", | |
"city": "", | |
"state": "", | |
"postcode": "", | |
"country": "" | |
}, | |
"payment_method": "bacs", | |
"payment_method_title": "Direct bank transfer", | |
"transaction_id": "", | |
"date_paid": "2019-06-11T08:58:36", | |
"date_paid_gmt": "2019-06-11T08:58:36", | |
"date_completed": "2019-06-11T08:58:36", | |
"date_completed_gmt": "2019-06-11T08:58:36", | |
"cart_hash": "", | |
"meta_data": [], | |
"line_items": [ | |
{ | |
"id": 20, | |
"name": "Hoodie", | |
"product_id": 33, | |
"variation_id": 0, | |
"quantity": 1, | |
"tax_class": "", | |
"subtotal": "42.00", | |
"subtotal_tax": "0.00", | |
"total": "42.00", | |
"total_tax": "0.00", | |
"taxes": [], | |
"meta_data": [], | |
"sku": "", | |
"price": 42 | |
} | |
], | |
"tax_lines": [], | |
"shipping_lines": [], | |
"fee_lines": [], | |
"coupon_lines": [], | |
"refunds": [], | |
"_links": { | |
"self": [ | |
{ | |
"href": "http://localhost/storefront/wp-json/wc/v3/orders/7755" | |
} | |
], | |
"collection": [ | |
{ | |
"href": "http://localhost/storefront/wp-json/wc/v3/orders" | |
} | |
], | |
"customer": [ | |
{ | |
"href": "http://localhost/storefront/wp-json/wc/v3/customers/8" | |
} | |
] | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function join_params( $params ) { | |
$query_params = array(); | |
foreach ( $params as $param_key => $param_value ) { | |
$string = $param_key . '=' . $param_value; | |
$query_params[] = str_replace( array( '+', '%7E' ), array( ' ', '~' ), rawurlencode( $string ) ); | |
} | |
return implode( '%26', $query_params ); | |
} | |
// WooCommerce REST API keys. Update these with your keys. | |
$consumer_key = 'ck_8d8b5e0ee1d65081f1270736db585dc62d3a3e88'; | |
$consumer_secret = 'cs_c483bc1b79a0e81c15763cc990bdf8f2cb7f0020'; | |
// Request URI. | |
$request_uri = 'http://localhost/storefront/wp-json/wc/v3/orders/7753'; | |
// Unique once-off parameters. | |
$nonce = uniqid(); | |
$timestamp = time(); | |
$oauth_signature_method = 'HMAC-SHA1'; | |
$hash_algorithm = strtolower( str_replace( 'HMAC-', '', $oauth_signature_method ) ); // sha1 | |
$secret = $consumer_secret . '&'; | |
$http_method = 'GET'; | |
$base_request_uri = rawurlencode( $request_uri ); | |
$params = array( 'oauth_consumer_key' => $consumer_key, 'oauth_nonce' => $nonce, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_timestamp' => $timestamp ); | |
$query_string = join_params( $params ); | |
$string_to_sign = $http_method . '&' . $base_request_uri . '&' . $query_string; | |
$oauth_signature = base64_encode( hash_hmac( $hash_algorithm, $string_to_sign, $secret, true ) ); | |
$curl = curl_init(); | |
curl_setopt_array($curl, array( | |
CURLOPT_URL => $request_uri, | |
CURLOPT_RETURNTRANSFER => true, | |
CURLOPT_ENCODING => "", | |
CURLOPT_MAXREDIRS => 10, | |
CURLOPT_TIMEOUT => 30, | |
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, | |
CURLOPT_CUSTOMREQUEST => $http_method, | |
CURLOPT_HTTPHEADER => array( | |
"Accept: */*", | |
"Authorization: OAuth oauth_consumer_key=\"".$consumer_key."\",oauth_signature_method=\"".$oauth_signature_method."\",oauth_timestamp=\"".$timestamp."\",oauth_nonce=\"".$nonce."\",oauth_signature=\"".$oauth_signature."\"", | |
"Cache-Control: no-cache", | |
"Connection: keep-alive", | |
"Host: localhost", | |
"User-Agent: PostmanRuntime/7.13.0", | |
"accept-encoding: gzip, deflate", | |
"cache-control: no-cache" | |
), | |
)); | |
$response = curl_exec($curl); | |
$err = curl_error($curl); | |
curl_close($curl); | |
if ($err) { | |
echo "cURL Error #:" . $err; | |
} else { | |
echo $response; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment