Búsquedas

Búsquedas

Openpay permite filtrar búsquedas de pagos, cargos, clientes, tarjetas, planes, suscripciones, comisiones y webhooks mediante el api, de la manera en la que se muestra en los enlaces.

Adicional a esto existen dos búsquedas especiales que pueden realizarse en base a los identificadores que el comercio generó y asoció en la plataforma de openpay, éstas son:

  • búsqueda de cargos en base al order_id
  • búsqueda de clientes mediante su external_id

Ambas se describen a continuación.

Buscar cargos por order_id

Recordemos que éste atributo fue proporcionado por el comercio cuando creó el cargo en openpay, y es un valor único para dicho comercio. Para este ejemplo vamos a buscar un cargo al cual se identifica como my-oid-984789.

@openpay = OpenpayApi.new("mzdtln3bqtms6o7kck9q","sk_e568c42a6c384b9ab02cd47d2e401cab")
@charges = @openpay.create(:charges)

request_hash = {
     "orderId" => "my-oid-984789"
   }

response_hash = @charges.all(request_hash.to_hash)

Si la llamada es correcta y encuentra dicho cargo, entonces se regresará un respuesta con un objeto transaccion representado de acuerdo al lenguaje de la librería utilizada.

Respuesta:


[
  {
     "id":"tryqihxac3msedn2pqed",
      "amount":100.00,
      "authorization":"801585",
      "method":"card",
      "operation_type":"in",
      "transaction_type":"charge",
      "card":{
         "type":"debit",
         "brand":"visa",
         "address":null,
         "card_number":"411111XXXXXX1111",
         "holder_name":"Juan Perez Ramirez",
         "expiration_year":"20",
         "expiration_month":"12",
         "allows_charges":true,
         "allows_payouts":true,
         "bank_name":"BBVA",
         "bank_code":"002"
      },
      "status":"completed",
      "currency":"COP",
      "creation_date":"2019-05-26T14:00:17-05:00",
      "operation_date":"2019-05-26T14:00:17-05:00",
      "description":"Cargo inicial a mi cuenta",
      "error_message":null,
      "order_id":my-oid-984789,
      "customer_id":"ag8nktpdzebjiye1twzi"
  }
]                    

Buscar clientes por external_id

Recordemos que éste atributo fue proporcionado por el comercio cuando creó al cliente en openpay, y es un valor único para dicho comercio. Para este ejemplo vamos a buscar un cliente al cual se identifica como myClient001.

@openpay = OpenpayApi.new("mzdtln3bqtms6o7kck9q","sk_e568c42a6c384b9ab02cd47d2e401cab")
@customers = @openpay.create(:customers)

request_hash ={
     "externalId" => "myClient001"
   }

response_hash = @customers.all(request_hash.to_hash)  

Si la llamada es correcta y encuentra dicho cliente, entonces se regresará un respuesta con un objeto cliente representado de acuerdo al lenguaje de la librería utilizada.

Respuesta:

[
  {
     "id": "ag8nktpdzebjiye1twzi",
     "name": "customer name",
     "last_name": "customer last name",
     "email":"customer_email@me.co",
     "phone_number": "(385) 937-467",
     "address": {
        "line1": "CARRERA BULNES 3403",
        "line2": "Esq. JIMENEZ",
        "line3": "Entre la calle SERGIO ZEPEDA y JULIO MENESES",
        "state": "Bogotá",
        "city": "Bogotá",
        "postal_code": "110831",
        "country_code": "CO"
     },
     "creation_date": "2019-08-12T14:11:23-05:00",
     "external_id": "myClient001",
     "clabe": null
  }
]

Pagos con PSE

Pagos con PSE

El propósito de esta guía es explicar paso a paso cómo realizar un pago a través de PSE.

Flujo para realizar cargos con PSE

Pasos:

  1. El comercio ingresa al Dashboard e ingresa a la opción Cobrar con Openpay, En esta vista, puede buscar su cliente existente o lo puede registrar por primera vez, posteriormente completa el formulario y confirma el envío.
  2. Openpay genera un Link de cobro que se despliega en Dashboard, el cual si desea lo puede compartir por correo
  3. El cliente navega al Link de cobro
  4. Se mostrará una página Checkouts con las Opciones de Pago
  5. El cliente selecciona el método de Pago PSE y da clíc en botón Completar Pago
  6. Se mostrará formulario de Pago PSE: Ud. debe seleccionar:
    1. Tipo de banco
    2. Tipo de persona
    3. Tipo de documento de identificación
    4. Número de identificación
  7. Posteriormente el cliente le da clíc en botón Pagar y luego en botón Continuar
  8. Con los datos obtenidos, Openpay se comunica con ACH – PSE, Al cliente se le mostrará la página de ACH PSE para que ingrese su usuario, y le da clíc en botón Continuar
  9. ACH – PSE entrega una respuesta a Openpay con el CUS (Código Único de Seguimiento)
  10. Luego se mostrará la página del Recibo / Estatus Actual de la transacción.

En esta guía veremos los pasos relevantes.

Completar Formulario de Cobrar con Openpay (Paso 1)

Para poder recibir un pago a través de un banco es necesario crear un cargo, en el cual se solicitará la información del cliente que desea realizar el Pago.

Posteriormente se confirma la información, y se navega al ‘Link de Cobro’ generado.

Checkouts con Opciones de Pago (Paso 4)

Se muestran las diversas opciones de pago a tu cliente, el debe escoger la opción: PSE (Cuentas de ahorro y corriente).

Transferencia Bancaria PSE (Paso 6)

El cliente debe completar el formulario y dar clic en Pagar, luego Continuar, con el cual continuará el flujo.

Recibo y/o estatus de la transacción (Paso 10)

El cliente sabrá si la transacción es exitosa o podrá consultar su estatus.

Notas:

Una vez que el cliente haya realizado el pago o la transacción se haya cancelado el Link de cobro ya no se mostrará.

  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real

Pagos en Tiendas

Pagos en Tiendas

El objetivo de esta guía es explicar paso a paso como generar referencias de pago para tiendas, mediante las cuales tus clientes podrán realizar pagos en alguna de las tiendas de conveniencia afiliadas.

Nota: Mediante el uso de este método de pago podrás recibir notificaciones minutos despues que tu cliente realice el pago en la tienda de conveniencia.

Flujo para realizar cargos en tienda:

Pasos:

  1. El cliente confirma la compra en tu sitio web seleccionando como medio de pago tienda
  2. Desde tu servidor se crea una referencia creando un cargo en Openpay
  3. Con los datos obtenidos al crear la referencia se crea un recibo de pago personalizado
  4. El cliente acude a alguna de las tiendas y realiza el pago
  5. Openpay valida y recibe el pago
  6. Openpay notifica la recepción del pago a tu servidor

En esta guía veremos los pasos número 2 y 3, para el paso número 6 consulta la sección de notificaciones

Crear cargo (Paso 2)

Para poder recibir un pago en una tienda es necesario que generes un código de barras que contiene la referencia con la cual tu cliente puede ir a la tienda a pagar.

Para ello debes realizar una llamada a nuestra API de la siguiente manera:

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@charges = @openpay.create(:charges)
request_hash ={
     "method" => "store",
     "amount" => 100.00,
     "currency" => "COP",
     "iva" => "10",
     "description" => "Cargo con tienda"
   }

response_hash = @charges.create(request_hash.to_hash)                    
Nota: El monto máximo que se permite para este tipo de cargos es de $ 9,999.00 COP Si la llamada es correcta recibirás una respuesta con el número de referencia generado y la URL del código de barras para que puedas crear tu recibo.

Respuesta:

{
    "id": "trgklldjutbqv9gqzyn9",
    "authorization": null,
    "operation_type": "in",
    "method": "store",
    "transaction_type": "charge",
    "status": "in_progress",
    "conciliated": false,
    "iva": "16",
    "creation_date": "2019-11-04T11:13:16-06:00",
    "operation_date": "2019-11-04T11:13:16-06:00",
    "description": "Cargo inicial a mi cuenta de store",
    "error_message": null,
    "order_id": "oid-20191104111316",
    "payment_method": {
        "type": "store",
        "reference": "1010101389264548",
        "barcode_url": "https://sandbox-api.openpay.co/barcode/1010101389264548?width=1&height=45&text=false"
    },
    "currency": "COP",
    "amount": 226,
    "customer": {
        "name": "Ambrosio",
        "last_name": "Medina",
        "email": "ambrosio.medina@company.co",
        "phone_number": "571983873734",
        "address": null,
        "creation_date": "2019-11-04T11:13:16-06:00",
        "external_id": null,
        "customer_address": {
            "department": "Medellín",
            "city": "Antioquia",
            "additional": "Avenida 7r bis #144-28 Apartamento 423",
            "country": "CO"
        },
        "clabe": null
    }
}
Sandbox: El pago puedes simularlo desde el dashboard, de esta manera puedes recibir una notificación de pago en tu sistema mediante un Webhook. Producción: La notificación de pago se realiza en tiempo real, es decir en el momento que tu cliente realice el pago en la tienda podrás recibir un Webhook y el saldo en tu cuenta se verá incrementado.

Para mas información consulta la referencia de cargos

Recibo de pago (Paso 3)

Openpay brinda la posibilidad de obtener un recibo de pago con la información necesaria para que tu cliente pueda realizar el pago en tienda, para llegar a él, basta con estructurar una ruta compuesta de la siguiente manera:

{DASHBOARD_PATH}/paynet-pdf/{MERCHANT_ID}/{REFERENCE}

Sandbox: {DASHBOARD_PATH} = https://sandbox-dashboard.openpay.co

Producción: {DASHBOARD_PATH} = https://dashboard.openpay.co

{MERCHANT_ID} = tu id de comerciante

{TRANSACTION_ID} = valor del campo payment_method.reference del objeto transacción regresado al crearse el cargo

Crear Recibo de pago personalizado (Paso 3.1 Opcional)

Si decides no usar el recibo que ofrece Openpay puedes generarlo tu mismo, básicamente puedes crearlo con cualquier diseño y colores, pero debe incluir:

  • Nombre del servicio a pagar
    • Pago en Tienda
  • Referencia:
    • Valor del campo reference
  • Código de barras:
    • Imagen del campo barcode_url
  • Monto a pagar:
    • Valor del campo amount
Notas: Asegúrate que tu integración cumple con los requisitos de compatibilidad de versiones más detalles
  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real

Suscripciones

Suscripciones

Para esta guía vamos a ver como crear una suscripción para cobrar un servicio a un cliente de manera periódica.

Digamos que tienes un servicio en el cual ofreces 1 mes de prueba y después cobras una renta mensual de $99.99 pesos indefinidamente (o hasta que tu cliente cancele el servicio).

Para ello vamos a hacer lo siguiente:

  1. Crear plan
  2. Crear cliente
  3. Guardar la tarjeta
  4. Suscribir al cliente

Crear plan

Un plan es un plantilla para una suscripción que contiene el costo, frecuencia de cobro, número de días de prueba, etc.

Para crear un plan tenemos dos opciones:

Opción 1.- Creación desde la API

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans = @openpay.create(:plans)
request_hash ={
     "name" => "Plan Curso Verano",
     "amount" => 150.00,
     "repeat_every" => "1",
     "repeat_unit" => "month",
     "retry_times" => 2,
     "status_after_retry" => "cancelled",
     "trial_days" => "30"
   }

response_hash = @plans.create(request_hash.to_hash) 

Puedes tener cuantos planes desees. Por ejemplo puedes tener un plan Oro, Platino y Bronce para diferentes niveles de servicio.

Si la llamada es correcta tendremos una respuesta que contiene el id del plan

Respuesta:

{
     "name":"Servicio de TV",
     "status":"active",
     "amount":99.99,
     "currency":"COP",
     "id":"psjubnktzpofhakixfkp",
     "creation_date":"2014-02-14T13:47:55-06:00",
     "repeat_every":1,
     "repeat_unit":"month",
     "retry_times":2,
     "status_after_retry":"cancelled",
     "trial_days":30
  } 

Para más información de los parámetros del plan dirígete a “Agregar Plan”.

Opción 2.- Creacion desde el dashboard

Puedes crear planes también desde el dashboard en Planes -> Agregar:

Crear cliente

Bien, ahora crearemos al cliente que vamos a suscribir.

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers = @openpay.create(:customers)
request_hash ={
     "name" => "Mi cliente uno",
     "email" => "micliente@gmail.com"
   }

response_hash = @customers.create(request_hash.to_hash)

Respuesta:

{
   "id":"axapgwwolofnckfui2wx",
   "name":"Mi cliente uno",
   "last_name":null,
   "email":"micliente@gmail.com",
   "phone_number":null,
   "status":"active",
   "balance":0,
   "clabe":"646180109400138692",
   "address":null,
   "creation_date":"2014-02-14T12:30:09-06:00"
}   

Guardar tarjeta

Lo siguiente es guardar la tarjeta que el cliente va a usar para la suscripción. Para ello vamos a ocupar el id del cliente (axapgwwolofnckfui2wx) creado anteriormente.

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards = @openpay.create(:cards)
request_hash ={
     "holder_name" => "Mi cliente uno",
     "card_number" => "4111111111111111",
     "cvv2" => "110",
     "expiration_month" => "12",
     "expiration_year" => "20"
   }

response_hash = @cards.create(request_hash.to_hash, "axapgwwolofnckfui2wx")

Respuesta:

{
   "type":"debit",
   "brand":"visa",
   "address":null,
   "id":"kokzmiiwephcdmq1h2qr",
   "card_number":"1111",
   "holder_name":"Mi cliente uno",
   "expiration_year":"20",
   "expiration_month":"12",
   "allows_charges":true,
   "allows_payouts":true,
   "creation_date":"2014-02-14T13:42:25-06:00",
   "bank_name":"Banamex",
   "customer_id":"axapgwwolofnckfui2wx",
   "bank_code":"002"
}  

Suscribir al cliente

Por ultimo crearemos la suscripción con el id de plan (psjubnktzpofhakixfkp), el id del cliente (axapgwwolofnckfui2wx) y el id de tarjeta (kokzmiiwephcdmq1h2qr), con lo cual la petición quedaría así:

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions = @openpay.create(:subscriptions)
request_hash ={
     "plan_id" => "psjubnktzpofhakixfkp",
     "trial_end_date" => "2014-01-01",
     "source_id" => "kokzmiiwephcdmq1h2qr"
   }

response_hash = @subscriptions.create(request_hash.to_hash, "axapgwwolofnckfui2wx")

Respuesta:

{
   "status":"trial",
   "card":{
      "type":"debit",
      "brand":"visa",
      "address":null,
      "id":"kokzmiiwephcdmq1h2qr",
      "card_number":"1111",
      "holder_name":"Mi cliente uno",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "creation_date":"2014-02-14T13:42:25-06:00",
      "bank_name":"Banamex",
      "customer_id":"axapgwwolofnckfui2wx",
      "bank_code":"002"
   },
   "id":"sfquvei5ya0lwdrd5blo",
   "cancel_at_period_end":false,
   "charge_date":"2014-03-15",
   "creation_date":"2014-02-14T13:48:59-06:00",
   "current_period_number":0,
   "period_end_date":"2014-03-14",
   "trial_end_date":"2014-03-14",
   "plan_id":"psjubnktzpofhakixfkp",
   "customer_id":"axapgwwolofnckfui2wx"
}

Listo ya tenemos nuestra suscripción creada, la cual se va a cobrar automáticamente cada mes por $99.99 después de que los días de pruebas transcurran.

Notas:

  • Puedes simular diferentes resultados usando las tarjetas de Pruebas
  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real

OneClick

OneClick

En la guía de cargo con token vimos como realizar un cargo creando primero un token (usando Openpay.js) y luego enviarlo dentro de la petición de cargo.

Esto es muy útil para cuando un cliente llega a nuestro sitio y solo deseamos realizarle el cargo en ese momento, pero cuando deseamos mantener los datos de la tarjeta, para que el cliente la pueda ocupar en múltiples ocasiones sin necesidad de volverla a introducir los datos, lo tenemos que hacer es guardar la tarjeta para posteriormente poder utilizarla sin necesidad de volverla a pedir al cliente.

Los pasos para realizar esto son:

  1. Crear formulario para pedir los datos
  2. Crear un token
  3. Crear un cliente
  4. Guardar la tarjeta al cliente usando el token
  5. Crea un cargo usando el token

Crear formulario para pedir los datos

Primero crearemos el formulario para pedir la información de nuestro cliente (nombre y correo electrónico) y los datos de su tarjeta (número, fecha de expiración, etc).

Es muy importante que los campos en donde se va a introducir la información de la tarjeta tenga el atributo data_openpay_card ​ya que esto permitirá a la librería de Openpay encontrar la información.

Observa que para los datos de la tarjeta no se está ocupando el atributo name esto para que al momento de enviar el formulario a tu servidor los datos de la tarjeta no viajen en la petición ya que sólo los vamos a ocupar para crear el token.

Crear un token

Una vez que tenemos nuestro formulario creado, vamos a programar que en el botón de enviar se cree un token utilizando la librería Openpay.js.

Primero agregamos al head el archivo de Openpay.js y el archivo de JQuery:

​Luego asignamos a la librería de Openpay nuestro merchant-id y nuestra llave pública (public-key):

Y por último atrapamos el evento de clic del botón Save para que en lugar de que haga el submit del formulario realice la función tokenize de la tarjeta:

Como puedes ver estamos pasando como parámetro el nombre del formulario creado, esto para que la librería obtengan los datos de la tarjeta y haga la petición a Openpay.

Si todo sale bien se llamará el método success_callback en el cual asignaremos el valor id del token creado al campo token_id y enviaremos los datos al servidor:

Si existe un problema en la llamada mostramos el error en un alert:

Para mayor referencia del uso de la librería ver la página de Openpay.js

Crear un cliente

Ya en tu servidor en la implementación de la página /save_customer_card realizaremos lo siguiente para crear al cliente:

Nota: Observa que para este ejemplo, creamos el cliente usando la bandera de de requires_account = false​ lo cual significa que la cuenta no manejará saldo propio.

Para mas información acerca de los tipos de clientes consulta la guía de clientes

Guardar la tarjeta al cliente usando el token

Ahora sólo resta usar el token_id que viene en la petición para guardar y asignar la tarjeta al cliente.

El objeto card contiene un id, el cual debes guardar en tu servidor ya con el podrás hacer cargos a esa tarjeta después. Puedes consultar la referencia de Crear Tarjeta con Token para mas información. ​

Notas:

  • Puedes simular diferentes resultados usando las tarjetas de Pruebas

Redireccionamiento

Redireccionamiento

Otra forma de hacer cargos con tarjeta sin la necesidad de implementar un formulario de pago en tu sitio, es mediante la utilización de un formulario que Openpay proporciona.

Resumen de pasos:

  1. Crear un cargo que contenga el atributo confirm en false y una url a la cual direccionar una vez concluido el pago.
  2. En base a la respuesta del cargo creado, redirigir al usuario a la url contenida en el objeto payment_method regresado.
  3. Que el cliente llene la información solicitada y realize el pago en el formulario.
  4. Si el pago fué exitoso dar clic en el botón continuar.
  5. El pago está hecho.

Creación del cargo

Ejemplo de creación de un cargo utilizando el formulario de pago de Openpay.

@openpay = OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@charges = @openpay.create(:charges)
customer_hash = {
    "name" => "Mario",
    "last_name" => "Benedetti Farrugia",
    "phone_number" => "1111111111",
    "email" => "mario_benedetti@miempresa.co"
}

request_hash = {
    "method" => "card",
    "amount" => 100.00,
    "description" => "Cargo inicial a mi merchant",
    "order_id" => "oid-00051",
    "customer" => customer_hash,
    "send_email" => false,
    "confirm" => false,
    "redirect_url" => "/index.html"
}

response_hash = @charges.create(request_hash.to_hash)  

Redirigir al formulario de Openpay

Si la llamada es correcta entonces se regresará una respuesta con un objeto transacción. en estado pendiente representado en el lenguaje utilizado.

Respuesta:

{
  "id": "trq7yrthx5vc4gtjdkwg",
  "authorization": null,
  "method": "card",
  "operation_type": "in",
  "transaction_type": "charge",
  "status": "charge_pending",
  "conciliated": false,
  "creation_date": "2016-09-09T18:52:02-05:00",
  "operation_date": "2016-09-09T18:52:02-05:00",
  "description": "Cargo desde terminal virtual de 111",
  "error_message": null,
  "amount": 111,
  "currency": "COP",
  "payment_method": {
    "type": "redirect",
    ***"url": "https://sandbox-api.openpay.co/v1/mexzhpxok3houd5lbvz1/charges/trq7yrthx5vc4gtjdkwg/card_capture"***
  },
  "customer": {
    "name": "Mario",
    "last_name": "Benedetti Farrugia",
    "email": "mario_benedetti@miempresa.co",
    "phone_number": "1111111111",
    "creation_date": "2016-09-09T18:52:02-05:00",
    "clabe": null,
    "external_id": null
  }
}   

Redirigir al usuario a la url contenida en el atributo url que se encuentra dentro del objeto payment_method.

Formulario Openpay

Llenar datos de pago

Que el usuario llene los datos solicitados y de clic en Realizar Pago

Nota: Hay recursos como charges, payouts, cards, bank_accounts que están disponibles para los dos tipos de cuenta, por lo que debes tener cuidado al momento de hacer la llamada cual estás afectando.

Dar clic en Continuar

Si el pago fué exitoso que el usuario de clic en Continuar

Esto redirecciona a la url que se proporcionó al crear el cargo (en el caso del ejemplo la página de Openpay) dando por terminado el flujo del pago.

Notas:

  • Puedes simular diferentes resultados usando las tarjetas de Pruebas
  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real

Cargo con token

Cargo con tarjeta tokenizada

A todos nos gusta recibir pagos, es por ello empezaremos con un guía para ver la forma de hacerlo.

Esta guía hace uso de la librería de Openpay.js, para enviar la información de la tarjeta directamente a Openpay. Usando esta librería aparte de ser la forma más sencilla de guardar una tarjeta permite minimizar el alcance de una certificación PCI Compliance.

Flujo para realizar cargos a tarjeta:

Pasos:

  1. Implementación del sistema antifraude generando un “device_session_id”
  2. Tokenización de la tarjeta de crédito o débito usando la librería Openpay.js
  3. Toda la información de la compra se envía a tu servidor
  4. Desde tu servidor se crea el cargo en Openpay
  5. Openpay envía la instrucción de cargo al banco emisor y regresa la respuesta

Creación del formulario

Para pedirle al usuario la información de la tarjeta y poder realizar los pasos 1 y 2 es necesario tener un formulario indicándole al cliente las tarjetas soportadas y que el pago será vía Openpay.

Código del formulario.

El HTML completo del formulario lo puedes descargar aquí

Es muy importante que los campos en donde se va a introducir la información de la tarjeta tenga el atributo data_openpay_card ​ya que esto permitirá a la librería de Openpay encontrar la información.

Observa que para los datos de la tarjeta no se está ocupando el atributo name esto para que al momento de enviar el formulario a tu servidor los datos de la tarjeta no viajen en la petición ya que sólo los vamos a ocupar para crear el token.

En el formulario de ejemplo anterior no se incluyen los campos “amount” y “description” pero deberan incluirse al hacer el submit al servidor.

Sistema antifraude (Paso 1)

Con el siguiente código se cargan las librerías necesarios para la generación del id de dispositivo:

Con el siguiente código se inicializa el valor para el device_session_id:

El parámetro payment-form, recibe el id del formulario que contiene la información del cargo que se enviara a tu servidor. Indica a la librería que en ese formulario es donde se va a agregar un campo oculto con el valor del device_session_id.

El parámetro deviceIdHiddenFieldName, recibe el nombre del campo oculto donde se asignara el device_session_id. Este dato es importante si piensas recuperar el valor del hidden y enviar mediante un submit.

Tokenización y envío de datos (Paso 2 y 3)

Una vez que tenemos nuestro formulario creado, vamos a programar que en el botón de enviar se cree un token utilizando la librería Openpay.js.

Primero agregamos al head el archivo de Openpay.js y de JQuery:

​Luego asignamos a la librería de Openpay nuestro merchant-id y nuestra llave pública (public-key):

Y por último atrapamos el evento de clic del botón “Pagar” para que en lugar de que haga el submit del formulario realice la función “tokenize” de la tarjeta:

Como puedes ver estamos pasando como parámetro el nombre del formulario creado, esto para que la librería obtengan los datos de la tarjeta y haga la petición a Openpay.

Si todo sale bien se llamará el método success_callback en el cual asignaremos el valor id del token creado al campo token_id y enviaremos los datos al servidor:

Si existe un problema en la llamada mostramos el error en un alert:

Para mayor referencia del uso de la librería consulta la página de Openpay.js

Crear cargo (Paso 4 y 5)

Ahora sólo resta hacer el cargo desde tu servidor, para esto crearemos una instancia de Openpay con el merchant-id y el private-key y luego con los valores del formulario haremos el cargo:

¡¡Listo!! Ya tenemos un cargo creado con tarjeta.

Si existiera un error recibiríamos una excepción la cual debemos capturar y manejar, para mas información consulta la seccion de errores

Notas:

  • Los campos amount, currency, description, etc.. que no están en el formulario de ejemplo, son datos propios de tu aplicación que deben haberse obtenido antes del formulario de pago.
  • Si deseas ver como realizar el procedimiento en otro lenguaje consulta nuestra sección de integración.
  • El código HTML completo se encuentra aquí. (La página no funciona completamente, deberás descargarla y realizar la implementación del POST en tu servidor).
  • Asegúrate que tu integración cumple con los requisitos de compatibilidad de versiones más detalles
  • Puedes simular diferentes resultados usando las tarjetas de Pruebas
  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real

Versiones

Versiones

General

¿Como saber la versión de la API?

El manejo de versiones de la API se hace a través de la URL de los recursos.

Por ejemplo si hace una petición a la URL:

https​://sandbox-api.openpay.co/v1/mm6wzedhck26ccaeznfa/charges/tjshfqdwd8vtbopuwyal

La versión que se está manejando es la versión 1.

Para las URL’s solo se manejan el número de versión mayor, los número de versión menor no se ocupan para efectos de compatibilidad entre actualizaciones.

¿Que cambios manejamos como compatibles entre versiones?

  • Agregar nuevos recursos en el API, por ejemplo una nueva ruta para registrar productos
  • Agregar nuevos atributos opcionales a las peticiones del API que ya existen
  • Cambio de un atributo de requerido a opcional en las peticiones que ya existen
  • Agregar nuevos atributos a las respuestas o a los webhooks que ya existen
  • Cambio en el orden de las atributos de los objetos que se responden y los que se envian en las notificaciones por webhooks
  • El formato de los identificadores pueden cambiar en cualquier momento, por ejemplo actualmente el id de tajeta inicia con k, podemos en el futuro cambiarl por l
  • Cambio de longitud en cadenas de los identificadores de los recursos (tarjetas, transacciones, clientes, etc) los cuales nunca excederán los 255 caracteres
  • Agregar nuevos tipos de notificaciones en los Webhooks
Nota: Asegúrate que este tipo de cambios en el API de Openpay son manejados de manera correcta en tu integración

Integración

Integración

Librerías Cliente

Librerías Servidor

Nota: Si desarrollas tu propia librería y deseas que la compartamos en nuestro sitio, comunícate con nosotros

Módulos de E-Commerce

Frameworks

Gateways

Introducción

Introducción

Tu cuenta

En Openpay podrás tener dos tipos de cuenta:

a) Cuenta de Prueba

Para poder empezar a utilizar nuestra plataforma es necesario que tengas una cuenta en nuestro ambiente de pruebas. Si aún no tienes una cuenta puedes hacerlo aquí, es completamente gratis y muy sencillo.

Con esta cuenta podrás probar toda la funcionalidad de la API sin realizar cargos ni pagos reales. Utiliza este ambiente para integrar y probar tu aplicación.

La ubicación del ambiente de prueba es:

Portal de consulta (dashboard): https://sandbox-dashboard.openpay.co

API: https://sandbox-api.openpay.co

b) Cuenta de Producción

Para empezar a procesar cargos y envíos reales deberás solicitar tu activación en producción, esto lo puedes realizar desde tu cuenta de pruebas donde tendrás que llenar formulario con información de tu empresa. Tu información será revisada internamente y en caso de que necesitemos más información te contactaremos.

Una vez aceptada tu solicitud se te enviará un correo electrónico para que des de alta tu contraseña de acceso al portal de producción y podrás empezar a recibir y enviar pagos reales.

La ubicación del ambiente de producción es:

Portal de consulta (dashboard): https://dashboard.openpay.co

API: https://documents.openpay.co/api/

Nota: Una vez que estés en producción ten cuidado a que ambiente estás realizando tus peticiones.

Llaves de API

En cada ambiente que ocupes (pruebas o producción) tendrás dos llaves:

  • Llave pública: Que podrás utilizar en tu código front-end (como HTML) y sólo te permitirá poder crear tokens
  • Llave privada:
    Con ella podrás realizar todas las operaciones de la API, por lo que no debes compartirla con nadie y sólo debes tenerla en la parte back-end.

Organización de la API

Con nuestra API podrás manejar dos tipos de cuentas:

Tipos de cuentas

  • Comercio: Es tu cuenta principal la cual fue creada al momento de realizar tu registro y solo puedes tener una por registro.
  • Cliente: Es una cuenta que está asociada a tu cuenta de comercio y que puedes crear las que necesites.

Recursos

A lo largo de la documentación encontrarás llamadas por comercio y por cliente, las cuales te indicarán como manejar un recurso para una cuenta en especifico.

Cada cuenta tiene recursos que puedes crear (POST), actualizar (PUT), obtener (GET) o eliminar (DELETE), y dependiendo en donde realices la operación es el tipo de cuenta que se verá afectada; es decir si realizas un cargo a nivel de comercio, tu saldo principal se verá incrementado pero si lo realizas a nivel cliente este será el afectado.

Nota: Hay recursos como charges, payouts, cards, bank_accounts que están disponibles para los dos tipos de cuenta, por lo que debes tener cuidado al momento de hacer la llamada cual estás afectando.

Contenido