Búsqueda
Se pueden hacer búsquedas como esta:
GET /v2/orders?q[payment_state_eq]=balance_due&q[completed_at_not_null]=true
El ejemplo anterior busca ordenes completas, pendientes de pago (balance_due).
La API de búsqueda la provee la gema Ransack, y para entender cómo se hacen las queries se puede leer ladocumentación en la wiki de Ransack.
Más allá de las búsquedas esta api permite los siguientes parámetros:
- view: Determinar que vista de la orden queremos que nos devuelva
- per_page: La cantidad de ordenes por página que queremos buscar. Recomendamos utilizar un máximo de 25.
- page: La página puntual que queremos que nos devuelva. Sirve para iterar por las distintas páginas.
La respuesta es la siguiente
{
"count": 8,
"current_page": 1,
"pages": 1,
"orders": []
}
- count: Cantidad de ordenes que cumplen con los filtros
- current_page: Página actual
- pages: Cantidad total de páginas.
Debajo desarrollamos algunos ejemplos de las búsquedas más útiles.
GET /v2/orders?q[shipments_tracking_state_eq]=pending_manifest&q[shipment_state_eq]=shipped&q[state_in][]=complete&q[state_in][]=resumed
Esta búsqueda devuelve ordenes completas (o resumidas), enviadas, listas para facturar (pending_manifest)
GET /v2/orders?q[shipments_tracking_state_eq]=pending_tracking&q[shipment_state_eq]=shipped&q[state_in][]=complete&q[state_in][]=resumed
Esta búsqueda devuelve ordenes completas (o resumidas), enviadas, listas para generar la guía (pending_tracking)
GET /v2/orders?q[payment_state_eq]=credit_owed&q[state_in][]=complete&q[state_in][]=resumed
Esta búsqueda devuelve ordenes completas (o resumidas) con crédito excedente.
Modificación de productos
Api que permite cambiar la cantidad en cada line item de una orden completa. La respuesta de la misma es el json de la orden
PUT /orders/:order_number/line_items/:line_item_id
{
"line_item":
{
"quantity": 4 #nueva cantidad total
}
}
Modificación masiva de productos
Api que permite modificar la orden. La respuesta de la misma es el json de la orden. Servirá en los que querramos modificar varios productos de la orden
PUT /orders/:order_number
{
"order":
{
"line_items_attributes":
{
"1":
{
"id": 1197317,
"quantity": 1
},
"2":
{
"variant_id": 53888,
"quantity": 2
},
"3":
{
"id": 1197318,
"quantity": 0
}
}
}
}
En el ejemplo anterior el request cambiara la cantidad del line item con id 1197317 ya creado a 1, agregará a la orden 2 unidades de la variante con id 53888 y borrará el line item con id 1197318.
GET
La api de Get está ejemplificada en https://developers.clastia.com/json_de_la_orden.html
Actualizar monto y capturar un pago de la orden
Esta api la utilizaremos en el caso de aplicaciones que utilicen transacciones en dos pasos, es decir primero autorizar un cobro sobre la tarjeta, y en un momento posterior realizar el cobro del mismo (monto igual, mayor o menor)
La api cargará a la tarjeta el monto total de la orden al momento de hacer el request.
PUT /orders/:order_number/payments/:payment_id/update_and_capture
La respuesta de esta api es el json del payment. El dato de source es el que contiene datos referidos al gateway de pago, por lo que dependiendo a que medio de pago corresponda, es la información que va a devolver.
Ejemplo de respuesta pago con Decidir en 2 pasos:
{
"id": 817979,
"source_type": "SpreeDecidir::CustomSourceV3",
"source_id": 36,
"amount": "691.0",
"display_amount": "$691",
"payment_method_id": 102,
"response_code": null,
"state": "completed",
"avs_response": null,
"created_at": "2017-11-21T15:24:48.190-03:00",
"updated_at": "2017-11-28T15:17:24.028-03:00",
"identifier": "CMNEVBKS",
"source": {
"cardholder_name": null,
"cardholder_document": null,
"installment_plan": {
"id": 381,
"installments": 1
},
"financial_corporation": {
"id": 5,
"name": "Todos los bancos"
},
"credit_card_type": {
"id": 1,
"name": "VISA",
"code": "VI"
},
"token_response": {
"id": "19da10fc-2b6e-4a2c-ba1f-31054875102f",
"status": "active",
"card_number_length": "16",
"date_created": "2017-11-21T18:26Z",
"bin": "450799",
"last_four_digits": "4905",
"security_code_length": "3",
"expiration_month": "8",
"expiration_year": "20",
"date_due": "2017-11-21T20:56Z",
"cardholder": {
"name": "Jonh Doe",
"identification": {
"type": "dni",
"number": "25123456"
}
}
},
"confirmation_response": {
"id": 707145,
"site_transaction_id": "CMNEVBKS",
"payment_method_id": 1,
"amount": 69100,
"currency": "ars",
"status": "pre_approved",
"status_details": {
"ticket": "312",
"card_authorization_code": "182612",
"address_validation_code": "VTE0011",
"error": null
},
"date": "2017-11-21T18:26Z",
"customer": {
"id": "574678"
},
"bin": "450799",
"installments": 1,
"payment_type": "single",
"sub_payments": [],
"site_id": null,
"fraud_detection": null,
"aggregate_data": null,
"establishment_name": null,
"spv": null,
"confirmed": null,
"pan": null,
"capture_response": {
"id": 707145,
"site_transaction_id": "CMNEVBKS",
"payment_method_id": 1,
"amount": 69100,
"currency": "ars",
"status": "approved",
"status_details": {
"ticket": "312",
"card_authorization_code": "182612",
"address_validation_code": "VTE0011",
"error": null
},
"date": "2017-11-21T18:26Z",
"customer": {
"id": "574678"
},
"bin": "450799",
"installments": 1,
"first_installment_expiration_date": null,
"payment_type": "single",
"sub_payments": [],
"site_id": null,
"fraud_detection": null,
"aggregate_data": null,
"establishment_name": null,
"spv": null,
"confirmed": {
"id": 100,
"origin_amount": 69100,
"date": "2017-11-28T03:00Z"
},
"pan": null
}
},
"failure_message": null,
"now_12": false
},
"payment_method": {
"id": 102,
"name": "Decidir Custom V3",
"environment": "development"
}
}
Cancelar una orden
Esta API se llama a la hora de cancelar una orden.
PUT /v2/orders/:order_number/cancel
Dentro del cuerpo del request, se requiere enviar un objeto order_cancellation con los siguientes parámetros:
return_stock(boolean): Indica si al cancelar la orden se devuelve o no el stock relacionado a la misma
cancel_reason(string): Explica la razón por la cuál se decidio cancelar la orden. Las razones que la API reconoce son las siguientes:
administrative
chargeback_confirmed
- delay
- fraud
- fraud_confirmed
- information_request
- insufficient_funds
- lack_of_stock
- repentance
- user_mistake
{
"order_cancellation": {
"cancel_reason": "administrative",
"return_stock": true
}
}
En este ejemplo, se cancela la orden indicando que la razón es administrativa y se requiere la devolución del stock implicado en la orden cancelada.