如何将自定义产品添加到magento购物车 - 请解释这些选项

Can someone please explain how to properly configure and where to get the ID's, names, options, etc of this code?

I've been searching but other questions only leads to the solution of some mistake, but I need first to know where to get the numbers that are requered.

It's supposed to get a custom product and add it to the cart.

$product_id = 12;
$id_opt_value = 12;
$final_opt_value = 12;

$product = Mage::getModel('catalog/product')->load($product_id);
$cart = Mage::getModel('checkout/cart');
$cart->init();
$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(         
        $id_opt_value => '123456',
        $final_opt_value => 'black gloss finish',
     )
);

This is the complete code:

require_once '../app/Mage.php';
umask(0);
/* not Mage::run(); */
Mage::app('default');

Mage::getSingleton("core/session", array("name" => "frontend"));

$product_id = 12;
$id_opt_value = 12;
$final_opt_value = 12;

$product = Mage::getModel('catalog/product')->load($product_id);
$cart = Mage::getModel('checkout/cart');
$cart->init();
$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(         
        $id_opt_value => '123456',
        $final_opt_value => 'black gloss finish',
     )
);

$cart->addProduct($product, $params);
$cart->save();

Any help is appreciated.

I guess I made it, but I'm still unsure how to check the custom ID.

$product = Mage::getModel('catalog/product')->load($product_id);
$cart = Mage::getModel('checkout/cart');
$cart->init();
$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(
        1 => 1, //(custom option ID like color) => (custom value for color, like red)
        2 => 3 //
     )
);

If anyone could inform me how to know exactly the numbers of options I'll chose as correct answer.

The logic says that 1 => 1 is (first custom attribute => first value) but after that it's not the same because the 2 => 3 returned me as (second custom attribute => first value of that attribute).

This is probably because the fist attribute has 2 values so the second attribute gets the 3rd place and so on...

---EDIT---

So I finally found the answer on this other question (if anyone needs it in the future) :) Magento - Get Custom Option Value details from Option Value ID