{
  "info": {
    "name": "Conekta — Google Pay API directa",
    "description": "Collection para probar el cobro vía Google Pay con Conekta. Flow estándar:\n1. Frontend obtiene token de Google con `loadPaymentData()`\n2. Backend manda el token a `POST /orders` con `payment_method.type: \"google\"` y un objeto `google_payment` envolviendo el token.\n\n## Cómo usar\n1. Importa este JSON en Postman (File → Import)\n2. Abre la pestaña 'Variables' de la collection\n3. Pega tu `private_key` de Conekta (sandbox o producción, key_xxxxx)\n4. Pega el `google_pay_token` que te devuelve Google en `paymentData.paymentMethodData.tokenizationData.token`\n5. Ajusta `card_network`, `card_details`, `card_funding_source` con lo que te llegó del callback (info object)\n6. Run\n\n## Notas\n- `shipping_lines` y `shipping_contact` son requeridos aún para productos digitales (usa amount=0 + carrier=digital_delivery)\n- `card_funding_source` va en snake_case (credit / debit / prepaid), no en camelCase como lo devuelve Google\n- La response trae `payment_status` (`paid`, `pending_payment`, `declined`) y los `charges[]` con el detalle\n\nReferencia: https://developers.conekta.com/docs/incluir-bot%C3%B3n-de-google-pay-en-mi-sitio-web",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "POST /orders (Google Pay)",
      "request": {
        "method": "POST",
        "header": [
          { "key": "Authorization", "value": "Bearer {{private_key}}", "type": "text" },
          { "key": "Accept", "value": "application/vnd.conekta-v2.1.0+json", "type": "text" },
          { "key": "Content-Type", "value": "application/json", "type": "text" }
        ],
        "body": {
          "mode": "raw",
          "options": { "raw": { "language": "json" } },
          "raw": "{\n  \"currency\": \"MXN\",\n  \"customer_info\": {\n    \"name\": \"Juan Pérez\",\n    \"email\": \"juan.perez@ejemplo.com\",\n    \"phone\": \"+525555555555\"\n  },\n  \"shipping_contact\": {\n    \"receiver\": \"Juan Pérez\",\n    \"phone\": \"+525555555555\",\n    \"address\": {\n      \"street1\": \"Av. Reforma 222\",\n      \"city\": \"Ciudad de México\",\n      \"state\": \"CDMX\",\n      \"country\": \"MX\",\n      \"postal_code\": \"06600\"\n    }\n  },\n  \"shipping_lines\": [\n    {\n      \"amount\": 0,\n      \"carrier\": \"digital_delivery\",\n      \"method\": \"Digital delivery\",\n      \"tracking_number\": \"N/A\"\n    }\n  ],\n  \"line_items\": [\n    { \"name\": \"Producto digital\", \"unit_price\": {{amount}}, \"quantity\": 1 }\n  ],\n  \"charges\": [\n    {\n      \"amount\": {{amount}},\n      \"payment_method\": {\n        \"type\": \"google\",\n        \"google_payment\": {\n          \"tokenization_data\": {\n            \"token\": \"{{google_pay_token}}\"\n          },\n          \"info\": {\n            \"card_network\": \"{{card_network}}\",\n            \"card_details\": \"{{card_details}}\",\n            \"card_funding_source\": \"{{card_funding_source}}\"\n          },\n          \"description\": \"{{card_network}} •••• {{card_details}}\"\n        }\n      }\n    }\n  ]\n}"
        },
        "url": {
          "raw": "{{base_url}}/orders",
          "host": ["{{base_url}}"],
          "path": ["orders"]
        },
        "description": "Crea un Order con un cargo Google Pay. La response te dice si el cargo fue aprobado (`payment_status: paid`), está pendiente, o fue rechazado.\n\n**Origen de cada variable:**\n- `google_pay_token` ← `paymentData.paymentMethodData.tokenizationData.token` (base64)\n- `card_network` ← `paymentData.paymentMethodData.info.cardNetwork` (VISA / MASTERCARD / AMEX)\n- `card_details` ← `paymentData.paymentMethodData.info.cardDetails` (últimos 4 dígitos)\n- `card_funding_source` ← `paymentData.paymentMethodData.info.cardClass.toLowerCase()` (credit / debit / prepaid)\n\n**Sobre `shipping_lines` y `shipping_contact`:** son requeridos por la API aún cuando vendas producto digital. Usa el shipping_lines con `amount: 0` y `carrier: \"digital_delivery\"` que viene de default."
      },
      "response": [
        {
          "name": "200 OK — Cargo aprobado",
          "originalRequest": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{base_url}}/orders" }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [{ "key": "Content-Type", "value": "application/json" }],
          "cookie": [],
          "body": "{\n  \"id\": \"ord_2tXXXXXXXXXX\",\n  \"livemode\": false,\n  \"object\": \"order\",\n  \"amount\": 2000,\n  \"currency\": \"MXN\",\n  \"payment_status\": \"paid\",\n  \"charges\": {\n    \"object\": \"list\",\n    \"data\": [\n      {\n        \"id\": \"63XXXXXXXXXX\",\n        \"object\": \"charge\",\n        \"amount\": 2000,\n        \"status\": \"paid\",\n        \"payment_method\": {\n          \"object\": \"google_payment\",\n          \"type\": \"credit\",\n          \"brand\": \"visa\",\n          \"last4\": \"1234\"\n        }\n      }\n    ]\n  }\n}"
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.conekta.io",
      "type": "string",
      "description": "Sandbox y producción usan el mismo host — la diferencia es la private_key"
    },
    {
      "key": "private_key",
      "value": "key_TU_PRIVATE_KEY_AQUI",
      "type": "string",
      "description": "Tu llave privada de Conekta (sandbox o producción). Empieza con `key_`. NO la commits."
    },
    {
      "key": "google_pay_token",
      "value": "BASE64_TOKEN_DEL_CALLBACK_loadPaymentData",
      "type": "string",
      "description": "El token base64 que devuelve Google: paymentData.paymentMethodData.tokenizationData.token"
    },
    {
      "key": "card_network",
      "value": "VISA",
      "type": "string",
      "description": "VISA / MASTERCARD / AMEX — viene de paymentData.paymentMethodData.info.cardNetwork"
    },
    {
      "key": "card_details",
      "value": "1234",
      "type": "string",
      "description": "Últimos 4 dígitos — paymentData.paymentMethodData.info.cardDetails"
    },
    {
      "key": "card_funding_source",
      "value": "credit",
      "type": "string",
      "description": "credit / debit / prepaid — paymentData.paymentMethodData.info.cardClass en minúsculas"
    },
    {
      "key": "amount",
      "value": "2000",
      "type": "string",
      "description": "Monto en centavos (2000 = $20.00 MXN)"
    }
  ]
}
