Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to retrieve products catalogs based on category in cj api?

Tags:

api

cj

I am using CJ API we need to retrieve all products catalogs based on categories. any one used this type of concept please share with me

like image 862
Mohit Gupta Avatar asked Feb 20 '13 11:02

Mohit Gupta


1 Answers

Updated Answer A small script I wrote for testing the REST API over at Commission Junction.

PHP code:

<?php

function ConnectToCJ() 
{
    global $sort_order, $sort_by;

    //
    // Build REST URI for product search. Refer to 
    // documentation for more request parameters.
    //
    $URI = 'https://product-search.api.cj.com/v2/product-search?'.
        'website-id=<INSERT ID>'.   // USE YOUR OWN.
        '&low-price=1'.
        '&records-per-page=25'.
        '&sort-order='. $sort_order .
        '&sort-by='. $sort_by .
        '&keywords='. rawurlencode($_GET['keywords']);

    $context = stream_context_create(
    array(
    'http' => array(
        'method' => 'GET',
        'header' => 'Authorization: ' . // USE YOUR OWN.
            '0012345b5ffdb74cd401e1aade0f69cadca29c834781c0936'.
            'b0b0836383b4e3e8dd7b406612347c3813bda24f8354dd649'.
            '6679031d8bc46f0dea1943a747ae0025/0093500ab1417918'.
            'f621234038b1234e8c4b0b22ea9f9cbc1db37a592247676ae'.
            'c528388bad7a06c9532c46fba2d0815e81e1234a9b25d9173'.
            '2f46f93123444dc1'
        )
    ));

    $response = new SimpleXMLElement(file_get_contents($URI, false, $context));
    return $response;
}

// A separate function to parse data.
function FormatCJResponse($data) 
{
    global $sort_order;

    $ProductList = '<table border="0" cellspacing="2" cellpadding="2" style="width:800px; margin: auto 0px">'.
            '<tr style="font-weight:bold">'.
            '<td><a href="?keywords='. rawurlencode($_GET['keywords']) .'&sort-by=name&sort-order='. SetOrder('name') .'>Product Name</a></td>'.
            '<td>Advertiser Name</td>'.
            '<td><a href="?keywords='. rawurlencode($_GET['keywords']) .'&sort-by=price&sort-order='. SetOrder('price') .'>Price</a></td>'.
            '<td>Description</td>'.
            '<td>Image</td>'.
            '</tr>';

    $attributes = $data->products->attributes();
    if ($attributes->{'total-matched'} == '0')
        $ProductList .= '<tr><td colspan="5">No products found ...</td></tr>';

    foreach ($data->products[0] as $product) 
    {
        // Sanitize data.
        $price = number_format((float)$product->price, 2, '.', ' ');

        $image = '<img src="ImageHandler.php?fileName='. 
                $product->{'image-url'} .'">';

        // Add to list.
        $ProductList .= '<tr><td colspan="5"> </td></tr>'.
        '<tr>'.
        '<td valign="top">'. $product->name .'</td>'.
        '<td valign="top">'. $product->{'advertiser-name'} .'</td>'.
        '<td valign="top">'. $price .' '. $product->currency .'</td>'.
        '<td valign="top">'. $product->description .'</td>'.
        '<td valign="top">'. $image .'</td>'.
        '</tr>';
    }

    $ProductList .= '</table>';
    return $ProductList;
}

// Sorts out individual sorting.
function SetOrder($param)
{
    global $sort_by, $sort_order;

    if ($sort_by == $param && $sort_order == 'asc') {
        $order = 'desc" title="Sort by descending order"';
    } else {
        $order = 'asc" title="Sort by ascending order"';
    }

    return $order;
}

if (isset($_GET['keywords'])) {
    if ($_GET['keywords'] != '') {

        // Sort order.
        if (!isset($_GET['sort-order'])) {
            $sort_order = 'asc';
        } else {
            switch ($_GET['sort-order']) {
            case 'asc':
                $sort_order = 'asc';
                break;
            case 'desc':
                $sort_order = 'desc';
                break;
            default:
                $sort_order = 'asc';
            }
        }

        // Sort by
        if (!isset($_GET['sort-by']))
            $sort_by = 'name';
        else
            $sort_by = $_GET['sort-by'];

        // Connect to CJ and get formatted results.
        $ProductList = FormatCJResponse(ConnectToCJ());
    }
}
?>

Just check for and print the content in $ProductList:

like image 73
Padmanathan J Avatar answered Oct 19 '22 16:10

Padmanathan J