Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A user's cart information is stored as the individual items they've placed in their cart. In EthosCE terms, it is the list of cart items currently assigned to the user's cart id (their uid). A call to the uc_cart_item endpoint, filtering by cart id will display a list of all items currently in their cartthe requested user's cart. As a reference, the user we're enrolling in these requests has a uid of 200.

Code Block
languagephp
titleAdding a uc_cart_item
<?php
// Login to the site and request the access token
$curl = curl_init('http://74.localhostyour-domain/restws/session/token');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); // Your web service user credentials goes here.
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$token = curl_exec($curl);
// The token looks like "q71OBx05wtECfjA0KmXf6wiktewrywNhkMZv-OcfyOA%"

// Send the user creation request, via POST
$data = array(
      'cart_id' => 213, // The user's uid
  query request via GET
$curl = curl_init("http://your-domain/uc_cart_item.json?cart_id=200");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-CSRF-Token: $token", "Content-Type: application/json"));
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

$json = curl_exec($curl);
$response = json_decode($json);
$product_list = $response['list'];


This call will return an array of information. In the array, the list value will contain an additional array of cart items, which represent the courses the users have placed in their EthosCE cart. In the array returned the user has added nodes 70 and 75 for purchasing. If the user had no items in their cart, the list value would be empty.

Code Block
languagephp
titleReturned cart items in $product_list
linenumberstrue
Array
(
    [0] => stdClass Object
        (
            [cart_item_id] => 36
            [cart_id] => 200
            [nid] => 70
            [qty] => 1
            [changed] => 1458745078
            [node] => stdClass Object
                (
                    [uri] => http://your-domain/node/70
                    [id] => 70
                    [resource] => node
                    [uuid] => c8de7a61-0d7c-48b0-b146-289d8ed2524d
                )
        )

    [1] => stdClass Object
        (
            [cart_item_id] => 37
            [cart_id] => 200
            [nid] => 75
            [qty] => 1
            [changed] => 1458745078
            [node] => stdClass Object
                (
                    [uri] => http://your-domain/node/75
                    [id] => 75
                    [resource] => node
                    [uuid] => 289d8ed2524d-48b0-byr6-as34kn4iopwn
                )
        )

)

Enrolling the user in their purchased courses

In the context of this request, the courses to enroll in are identified by the cart item nid's, which were returned in the request above. A detailed explanation of enrolling a user in a course is found on Enrolling a user via web service. The page details instructions on how to also verify if a user is currently enrolled in a particular course before making the enrollment request. For this request, we will assume the user is not enrolled in either of the courses, and send the enrollment requests immediately. Each enrollment request must be sent individually, as bulk enrollment via web services is not supported.

Code Block
languagephp
linenumberstrue
// Iterate through the products to create the enrollment request
foreach ($product_list as $product) {
  $data = array(
    'nid' => 70, // The product's nid
  $product->nid,
    'uid' => 200,
    'enrollmenttype' => 'webservice_call',
    'type' => 'webservice_call',
    'qtystatus' => 1,
  );
// Send the enrollment creation request
  $curl = curl_init("http://74your-domain.localhostcom/uc_cart_item.json?cart_id=213course_enrollment");
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETEPOST');
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-CSRF-Token: $token", "Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); //Your credentials goesgo here
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

  $response = curl_exec($curl);
} 

Each successful creation request will return an array of values containing the "URI" of the new enrollment record, as well as it's enrollment "id".

Code Block
languagejs
{"uri":"http://your-domain.com/course_enrollment/500","id":"500","resource":"course_enrollment"}

Clearing the cart of data

Now that the user has been enrolled in their courses, we must remove the cart items from their session. This can be done by sending individual deletion requests for each cart item.

Code Block
languagephp
titleDeleting cart items
linenumberstrue
// Iterate through the products to create the deletion request
foreach ($product_list as $product) {
  $curl = curl_init("http://your-domain.com/uc_cart_item/{$product->nid}");
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-CSRF-Token: $token", "Content-Type: application/json"));
  curl_setopt($curl =, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_init("http://74.localhost/uc_cart_item/37");
setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); //Your credentials goes here
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

  $json = curl_exec($curl);
  $cinfo = curl_getinfo($curl);
  $response = json_decode($json);
print_r($response);

Enrolling the user in their purchased courses

A detailed explanation of enrolling a user in a course is found on the page, Enrolling a user via web service. In the context of this request, the course node ids to be used in the enrollment calls are

 

Clearing the cart of data

...


  if ($cinfo['http_code'] == 200 && empty($response)) {
    // The entity has been deleted.
  }
  else {
    // An error has occurred.
  }
}
Info
For an explanation of the information returned from the requests above, see Web Service Responses.