Obteniendo la lista de productos del carrito de compras o del pedido en curso.
soporte, ws.webtv, api, tienda, carrito, pedido
Variables GET específicas para esta solicitud:
Var | Valor | Descripción |
go | store | La sección del API |
do | get_cart | La acción del API |
iq | ID Usuario | El ID del Usuario |
URL Resultante:
La URL de solicitud resultante sería similar a la siguiente (no se olvide de añadir la información requerida key, timestamp, salt and signature):
https://....../api.php?go=store&do=get_cart&iq={id_usuario}&{información requerida}
Ninguna. No se requiren variables POST para esta solicitud.
Si la solicitud es exitosa, recibirá una respuesta conteniendo:
• data: Un arreglo con los datos del carrito o del pedido en curso. Incluirá:
- order_contains_subscription: (int) 0|1 Si el carrito/pedido contiene un producto de suscripción.
...
Trials:
- order_contains_subscription_trial: (int) 0|1 [Desde WS.WebTV 3.0.2] Si el carrito/pedido contiene un producto de suscripción con prueba gratis/trial.
- order_trial_requires_rp: (int) 0|1 [Desde WS.WebTV 3.0.2] Sólo aplica si el dato anterior es 1. Si el trial require pagos periódicos - Si fuera el caso, y elprocesador de pagos externo no soporta pagos periódicos, debe eliminar el producto del carrito; de lo contrario, deberá crear el perfil de pagos periódicos después de procesar el pedido.
...
- order_has_credit_product: (int) 0|1 Si el carrito/pedido contiene un producto de crédito (si es así, entonces no se utilizará crédito a para pagar).
- order_id: (int) En el caso de un pedido en curso, este es el ID del pedido.
- order_min_purchase_check: (int) 0|1 Si el carrito/pedido cumple el requerimiento de compra mínima.
- order_num_products: (int) Cantidad/número de productos en el carrito/pedido.
- buyer_credit: (decimal) El crédito disponible para el Usuario.
- buyer_credit_formatted:(string) El valor anterior, con formato.
- order_amount_due: (decimal) En el caso de un pedido en curso, esta es la cantidad que debe ser pagada.
- order_amount_paid: (decimal) En el caso de un pedido en curso, esta es la cantidad que ha pagado el Usuario hasta el momento.
- order_credit_used: (decimal) El crédito que puede utilizarse para pagar parcial(o totalmente) el carrito/pedido.
- order_credit_used_formatted:(string) El valor anterior, con formato.
- order_subtotal: (decimal) El total del carrito/pedido, antes de aplicar los créditos.
- order_subtotal_formatted:(string) El valor anterior, con formato.
NOTA: "order_amount_paid" + "order_amount_due" + "order_credit_used" = "order_subtotal"
- order_total: (decimal) El total del carrito/pedido
- order_total_formatted:(string) El valor anterior, con formato.
- product_list: (array) La lista de productos del carrito o pedido en curso. Cada producto incluirá:
- id: (int) El ID del producto. Este es el ID que utilizará para eliminar el producto del carrito.
- id_clip: (int) En el caso de un producto asociado a un Clip, este será el ID del Clip (número > 0).
- id_channel: (int) En el caso de un producto asociado a un Canal, este será el ID del Canal (número > 0).
- id_type: (int) ID del tipo de producto.
- type_name: (string) the name of the product type (CREDIT, ENDDATE, PERIOD, SUBSCRIPTION, SUBSCRIPTIONRENEWAL, DONATION, SERVICE, MEMBERSHIPPERIODAUTHORING, MEMBERSHIPPERIODCONTRIBUTING)
- ctype: (int) Tipo de contenido del producto (-1:Otro, 0:Sitio, 1:Canal, 2:Clip, 3:Membresía).
- sku: (string) SKU del producto.
- price: (decimal) El precio unitario del producto.
- price_formatted: (string) El valor anterior, con formato.
- price_after_trial: (decimal) [Desde WS.WebTV 3.0.2] Aplicable a producto con "type_name" igual a "SUBSCRIPTIONTRIAL", el precio del producto, después del período de prueba gratis (trial).
- price_after_trial_formatted: (decimal) [Desde WS.WebTV 3.0.2] Aplicable a producto con "type_name" igual a "SUBSCRIPTIONTRIAL", el valor anterior, con formato.
- quantity: (int) Cantidad...
- price_by_qty: (decimal) La multiplicación de "price" por "quantity".
- price_by_qty_formatted: (string) El valor anterior, con formato.
- title: (string) El título del producto.
- description: (string) La descripción del producto.
- img_thumbnail, img_social, img_poster: (string) La imagen del producto, en varios tamaños.
- period_unit: (string) En caso de un producto con "type_name" igual a "PERIOD" (de período), esta es la unidad de tiempo (DAY, WEEK, MONTH or YEAR).
- period_amount: (int) En caso de un producto con "type_name" igual a "PERIOD" (de período), esta es la cantidad del período.
- subs_period_unit: (string) En caso de un producto con "type_name" igual a "SUBSCRIPTION", "SUBSCRIPTIONTRIAL" o "SUBSCRIPTIONRENEWAL", esta es la unidad de tiempo para el pago (DAY, WEEK, MONTH or YEAR).
- subs_period_amount: (int) En caso de un producto con "type_name" igual a "SUBSCRIPTION", "SUBSCRIPTIONTRIAL" o "SUBSCRIPTIONRENEWAL", esta es la frecuencia del período de pago.
...
Trials:
- trial_period_unit: (string) [Desde WS.WebTV 3.0.2] Aplicable a producto con "type_name" igual a "SUBSCRIPTIONTRIAL", esta es la unidad de tiempo para la prueba (DAY, WEEK, MONTH or YEAR).
- trial_period_amount: (int) [Desde WS.WebTV 3.0.2] Aplicable a producto con "type_name" igual a "SUBSCRIPTIONTRIAL", esta es la cantidad de unidades del período de prueba.
- trial_requires_rp: (int) [Desde WS.WebTV 3.0.2] Aplicable a producto con "type_name" igual a "SUBSCRIPTIONTRIAL", si la habilitación del período de prueba (trial) requiere pagos periódicos.
Ejemplo:
{ "data": { "buyer_credit": "1.00", "buyer_credit_formatted": "1.00\u20ac", "order_amount_due": 9.5, "order_amount_paid": 0, "order_contains_subscription": 0, "order_contains_subscription_trial": 0, "order_trial_requires_rp": 0, "order_credit_used": 0, "order_credit_used_formatted": "0.00\u20ac", "order_has_credit_product": 1, "order_id": -1, "order_min_purchase_check": 1, "order_num_products": 2, "order_subtotal": 9.5, "order_subtotal_formatted": "9.50\u20ac", "order_total": 9.5, "order_total_formatted": "9.50\u20ac", "product_list": [{ "id": "1", "id_clip": null, "id_channel": null, "id_type": "1", "ctype": "0", "sku": "CREDIT", "price": "1.00", "price_formatted": "1.00\u20ac", "quantity": "5", "price_by_qty": 5, "price_by_qty_formatted": "5.00\u20ac", "title": "Credit Recharge", "description": "Add credit to your account and use it any time to purchase WebTV content access.
Purchasing with your credit balance is very fast and easy. If you have enough credit to purchase an item you will be able to use the Quick Purchase option that does not require going through the check out process. <br>NOTE: Credits can not be used to pay subscription renewals when recurring payments (automatic payments) are active for a subscription.", "img_thumbnail": "http:\/\/www.mywebtvdomain.com\/public\/common\/images\/_default_store_product_credit_thumb.jpg", "img_social": "http:\/\/www.mywebtvdomain.com\/public\/common\/images\/_default_store_product_credit_social.jpg", "img_poster": "http:\/\/www.mywebtvdomain.com\/public\/common\/images\/_default_store_product_credit_poster.jpg", "type_name": "CREDIT", "period_unit": "", "period_amount": 0, "subs_period_unit": "", "subs_period_amount": 0 }, { "id": "8", "id_clip": "1", "id_channel": null, "id_type": "3", "ctype": "2", "sku": "CLIPACCPER_1", "price": "4.50", "price_formatted": "4.50\u20ac", "quantity": 1, "price_by_qty": 4.5, "price_by_qty_formatted": "4.50\u20ac", "title": "Premium Clip - Clip Access Pass (during 1 week)", "description": "Access pass to watch this Clip during 1 week", "img_thumbnail": "http:\/\/www.mywebtvdomain.com\/uploads\/images\/clip_1_1467909401_thumb.jpg", "img_social": "http:\/\/www.mywebtvdomain.com\/uploads\/images\/clip_1_1467909401_social.jpg", "img_poster": "http:\/\/www.mywebtvdomain.com\/uploads\/images\/clip_1_1467909401_poster.jpg", "type_name": "PERIOD", "period_unit": "WEEK", "period_amount": "1", "subs_period_unit": "", "subs_period_amount": 0 }] } }
Posibles Mensajes de Error
Además de los errores generales, esta solicitud puede devolver los siguientes errores:
• REQUEST_ERROR | Invalid User ID:
El ID del Usuario no es numérico o es menor que 1.
Preparando los datos GET y POST.
// Las variables GET $GET_VARS = array( "go" => "store", "do" => "get_cart", "iq" => "2" ); // Las variables POST $POST_VARS = array();
Generando salt, timestamp, signature y enviando la solicitud
*** El siguiente bloque de código es común para todas las solicitudes firmadas ***
// Recopilando la información del API y URL Base $API_URL = "https://www.midominiowebtv.tv/api.php"; $API_KEY_ID = "1b323a1cb879fd4e66530fbad07a32ee"; $API_SHARED_SECRET = "MWIzMjNhMWNiODc5ZmQ0ZTY2NTMwZmJhZDA3YTMyZWViOTQ3MDJiOGM2ZTU2NjE3"; // Mantenga esto en un lugar seguro!!! // Generando salt y timestamp $salt = md5(mt_rand()); $timestamp = time(); // Generando la firma de validación // - Método por defecto: usando base64_encode(hash_hmac(...)) $signature = base64_encode(hash_hmac('sha256', $salt.$timestamp, $API_SHARED_SECRET, true)); // comentar esta línea si se utiliza el otro método // - Método simplificado - disponible desde v60: usando md5(). // Este método requiere que la variable $API_SIGNATURE_GENERATION_MODE = 1; en el archivo config/Config.inc.php.
// $signature = md5($salt."-".$timestamp."-".$API_SHARED_SECRET); // debe "des-comentar" esta línea si se utiliza el método simplificado // Añadiendo timestamp, salt, key y signature a las variables GET $GET_VARS["timestamp"] = $timestamp; // UTC timestamp $GET_VARS["salt"] = $salt; $GET_VARS["key"] = $API_KEY_ID ; // The API Key ID: This is public and is used by the API to identify the application; $GET_VARS["signature"] = $signature; // Creando la URL de la solicitud. Tenga presente que si no utiliza la función interna de PHP // para crear la solicitud HTTP entonces no se olvide de codificar los valores con URL Encode $REQUEST_URL = $API_URL."?".http_build_query($GET_VARS); // Lo anterior construirá una URL del como .../api.php?go=api_subject&do=api_action&etc... // Creando un recurso cURL con las opciones apropiadas $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $REQUEST_URL); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_VARS); // If your PHP host does not have a valid SSL certificate, you will need to turn off SSL // Certificate Verification. This is dangerous (!), and should only be done temporarily // until a valid certificate has been installed curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Turns off verification of the SSL certificate. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Turns off verification of the SSL certificate. // Enviando la solicitud al API $response = curl_exec($ch); // Procesando la respuesta if (!$response) { echo 'Llamada al API falló'; } else { print_r(json_decode($response,true)); }