API – Developers Docs API – Developers Docs
  • Addon Payments
  • Pagos integrados en TPV
  • InglésCambiar a Inglés
API – Developers Docs API – Developers Docs
API – Developers Docs
  • Addon Payments
  • Pagos integrados en TPV
  • InglésCambiar a Inglés
Otra documentación
  • Folder icon closed Folder open iconPagos integrados en TPV
    • Transacciones
      • Tokenización
    • Reportes
    • Dispositivo

Tokenización

Introducción

Comercia 2.0 TPV permite completar el pago con tokens de tarjeta generados a partir de datos físicos de la tarjeta.

Para ello, durante una solicitud de venta o pre-autorización realizada con tarjeta física, si la solicitud de Pago así lo especifica, el host generará y devolverá en la respuesta de autorización un Token único asociado a los datos de la tarjeta del cliente. Este token representa los datos de la tarjeta del cliente, y puede usarse en próximas transacciones, reemplazando la necesidad de presentar la tarjeta física.

Parámetros

En esta tabla tienes los parámetros relacionados con la tokenización.

NombreTipoDescripción
createTokenBooleano
– true
– false
Si se establece en true, se solicitará la generación de un token de tarjeta en la solicitud de autorización de transacción actual. Los tipos de transacciones que soportan la operación de tokenización de tarjetas son VENTAS y PREAUTORIZACIONES. A los efectos de estas especificaciones, estas transacciones son:
– Tarjeta de pago y tokenización
– Tarjeta de preautorización nueva y tokenización.
codeOfUseString
Máximo 1 caracter
Este atributo informa sobre el uso específico del token y debe proporcionarse en la transacción realizada con el Token. Los valores actualmente soportados por Comercia son los siguientes:

– «C» Pago único
– «R» Pago recurrente
– «D» Retrasado
– «E» Reenvío
– «H» Re-Autorización
– «M» Incremental
– «N» No se muestra

Longitud máxima: 1
customerIdString
Máximo 100 caracteres
El ID de Cliente enviado en la solicitud de generación de token (Transacción y Tokenización) está asociado de forma única a los datos del Token generados y devueltos por Comercia. A continuación deberá presentarse junto con los datos de su Token asociado en cada Solicitud de Pago realizada en la app con el Token.
tokenString
Máximo 64 caracteres
El token de la tarjeta representa los datos de la tarjeta en las solicitudes de pago, reembolso o preautorización con Token. Se genera y devuelve en la respuesta de operaciones y tokenización.

Para efectos de estas especificaciones, las transacciones con Token que se podrán realizar en Comercia son:

– Pago con Token
– Pre autorización
– Nuevo con token
– Autorización previa completa con token
– Reembolso con Token.
subscriptionIdString
Máximo 15 caracteres
ID de suscripción asociado a un token específico. Estos datos son devueltos por el Host en las solicitudes de operaciones y tokenización. Está asociado de forma única a los datos del Token devueltos en la misma respuesta y deben presentarse juntos en cada solicitud de pago con Token.
tokenizerCodeStringCódigo de resultado para tokenización de tarjetas y transacciones tokenizadas. Valores posibles:

– «0» Transacción exitosa
– «1» Token no generado
– «2» PAN no recuperado

POST Payment & Tokenization Card (Tarjeta de pago y tokenización)

Esta solicitud inicia una Transacción de Pago y tokenización de la tarjeta.

Se envía a: https:// 172.20.10.1:2011/v1/transactions/payment

Payload de la petición

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • orderId: Cadena (string). Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description: Cadena (string). Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "orderId": "tx-00000002",
    "amount": 2,
    "description":"Billete Sencillo",
    "tokenization": {
        "createToken": true,
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Tarjeta de pago y tokenización. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"orderId\": \"tx-00000002\",\n    \"amount\": 2,\n    \"description\":\"Billete Sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/payment", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https:// 172.20.10.1:2011/v1/transactions/payment");
request.Headers.Add("X-SOURCE", "COMERCIA");
var content = new StringContent("{\n    \"orderId\": \"tx-00000002\",\n    \"amount\": 2,\n    \"description\":\"Billete Sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/payment' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "orderId": "tx-00000002",
    "amount": 2,
    "description":"Billete Sencillo",
    "tokenization": {
        "createToken": true,
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/payment"

payload = "{\n    \"orderId\": \"tx-00000002\",\n    \"amount\": 2,\n    \"description\":\"Billete Sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"orderId\": \"tx-00000002\",\n    \"amount\": 2,\n    \"description\":\"Billete Sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/payment")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "orderId": "tx-00000002",
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "A0000000031010",
    "ARC": "00",
    "ATC": "00959",
    "PSN": "01",
    "Amount": "200",
    "Authorization": "43970 ",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA CLASICA",
    "CardNumber": "************2825",
    "CardTechnology": 1,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230202",
    "Id": "187780",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "",
    "OriginalTransactionId": "",
    "PinIndicator": 1,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "1540",
    "Type": "Payment"
  },
  "tokenization": {
    "subscriptionId": "232023033707473",
    "token": "490727200336944988668125853538957465289310483021",
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Thu, 2 Feb 2023 14:40:53 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

POST PreAuthorization New & Tokenization Card (Pre-autorizar tarjeta nueva y tokenización)

Esta solicitud inicia una autorización previa.

Se envía a: https:// 172.20.10.1:2011/v1/transactions/preauth/new

Petición Payload

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • orderId (opcional): Cadena. Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description (opcional): Cadena. Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "amount": 1,
    "description": "billete sencillo",
    "tokenization": {
        "createToken": true,
        "codeOfUse": "R",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Pre-autorizar tarjeta nueva y tokenización. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"R\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/preauth/new", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"R\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/preauth/new", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/preauth/new' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "amount": 1,
    "description": "billete sencillo",
    "tokenization": {
        "createToken": true,
        "codeOfUse": "R",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/preauth/new"

payload = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"R\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"createToken\": true,\n        \"codeOfUse\": \"R\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/preauth/new")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "A0000000031010",
    "ARC": "00",
    "ATC": "00960",
    "PSN": "01",
    "Amount": "100",
    "Authorization": "238599",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA CLASICA",
    "CardNumber": "************2825",
    "CardTechnology": 1,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230203",
    "Id": "188272",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "",
    "OriginalTransactionId": "",
    "PinIndicator": 1,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "2304",
    "Type": "Preauthorization"
  },
  "tokenization": {
    "subscriptionId": "232023034711367",
    "token": "490727200336944988668125853538957465289310483021",
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Fri, 3 Feb 2023 22:04:34 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

POST Payment with Token (Pago con Token)

Esta solicitud inicia una transacción de pago.

Se envía a: https:// 172.20.10.1:2011/v1/transactions/payment

Petición Payload

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • orderId: Cadena. Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description: Cadena. Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "orderId": "tx-00000001",
    "amount": 1,
    "description": "Billete Sencillo",
    "tokenization": {
        "subscriptionId": "232023033707473",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Pago con token. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"orderId\": \"tx-00000001\",\n    \"amount\": 3,\n    \"description\": \"Billete Sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/payment", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https:// 172.20.10.1:2011/v1/transactions/payment");
request.Headers.Add("X-SOURCE", "COMERCIA");
var content = new StringContent("{\n    \"orderId\": \"tx-00000001\",\n    \"amount\": 3,\n    \"description\": \"Billete Sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/payment' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "orderId": "tx-00000001",
    "amount": 3,
    "description": "Billete Sencillo",
    "tokenization": {
        "subscriptionId": "232023033707473",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/payment"

payload = "{\n    \"orderId\": \"tx-00000001\",\n    \"amount\": 3,\n    \"description\": \"Billete Sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"orderId\": \"tx-00000001\",\n    \"amount\": 3,\n    \"description\": \"Billete Sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/payment")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "orderId": "tx-00000001",
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "",
    "ARC": "00",
    "ATC": "",
    "PSN": "",
    "Amount": "300",
    "Authorization": "847650",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA VISA CASH-CLASSIC",
    "CardNumber": "************2825",
    "CardTechnology": 3,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230202",
    "Id": "187782",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "",
    "OriginalTransactionId": "",
    "PinIndicator": 0,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "1541",
    "Type": "Payment"
  },
  "tokenization": {
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Thu, 2 Feb 2023 14:41:55 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

POST Refund with Token (Reembolso con Token)

Esta solicitud inicia una transacción de reembolso.

Se envía a: https:// 172.20.10.1:2011/v1/transactions/refund

Petición Payload

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • transactionId: Cadena de dígitos decimales. Identifica el ID de transacción anterior que se desea reembolsar.
  • orderId (opcional): Cadena. Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description (opcional): Cadena. Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "transactionId": "187782",
    "amount": 3,
    "tokenization": {
        "subscriptionId": "232023033707473",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Reembolso con token. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"transactionId\": \"187782\",\n    \"amount\": 3,\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/refund", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https:// 172.20.10.1:2011/v1/transactions/refund");
request.Headers.Add("X-SOURCE", "COMERCIA");
var content = new StringContent("{\n    \"transactionId\": \"187782\",\n    \"amount\": 3,\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/refund' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "transactionId": "187782",
    "amount": 3,
    "tokenization": {
        "subscriptionId": "232023033707473",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/refund"

payload = "{\n    \"transactionId\": \"187782\",\n    \"amount\": 3,\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"transactionId\": \"187782\",\n    \"amount\": 3,\n    \"tokenization\": {\n        \"subscriptionId\": \"232023033707473\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/refund")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "",
    "ARC": "00",
    "ATC": "",
    "PSN": "",
    "Amount": "300",
    "Authorization": "847650",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA VISA CASH-CLASSIC",
    "CardNumber": "************2825",
    "CardTechnology": 3,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230202",
    "Id": "187784",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "20230202",
    "OriginalTransactionId": "187782",
    "PinIndicator": 0,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "1543",
    "Type": "Refund"
  },
  "tokenization": {
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Thu, 2 Feb 2023 14:43:23 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

POST PreAuthorization New with Token (Preautorización nueva con Token)

Esta solicitud inicia una pre-autorización.
Se envía a: https:// 172.20.10.1:2011/v1/transactions/preauth/new

Petición Payload

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • orderId (opcional): Cadena. Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description (opcional): Cadena. Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "amount": 1,
    "description": "billete sencillo",
    "tokenization": {
        "subscriptionId": "232023031702405",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Pre-autorización nueva con token. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/preauth/new", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https:// 172.20.10.1:2011/v1/transactions/preauth/new");
request.Headers.Add("X-SOURCE", "COMERCIA");
var content = new StringContent("{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/preauth/new' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "amount": 1,
    "description": "billete sencillo",
    "tokenization": {
        "subscriptionId": "232023031702405",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/preauth/new"

payload = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"amount\": 1,\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/preauth/new")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "orderId": "tx-00000001",
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "",
    "ARC": "00",
    "ATC": "",
    "PSN": "",
    "Amount": "300",
    "Authorization": "847650",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA VISA CASH-CLASSIC",
    "CardNumber": "************2825",
    "CardTechnology": 3,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230202",
    "Id": "187782",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "",
    "OriginalTransactionId": "",
    "PinIndicator": 0,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "1541",
    "Type": "Payment"
  },
  "tokenization": {
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Thu, 3 Feb 2023 22:07:12 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

POST PreAuthorization Complete with Token (Pre-autorización completa con Token)

Esta solicitud inicia el cierre de una transacción de una pre-autorización anterior.

Se envía a: https:// 172.20.10.1:2011/v1/transactions/preauth/complete

Petición Payload

  • amount: Número decimal positivo. Contiene la cantidad de la transacción, la parte decimal está separada por un punto ( . ).
  • transactionId: Cadena de dígitos decimales. Identifica el ID de transacción anterior que se desea reembolsar.
  • transactionDate: Cadena. Representa la fecha original de la transacción de autorización previa en el formato: YYYYMMDDHHMM
  • orderId (opcional): Cadena. Un número de pedido/factura/referencia es un valor asignado por la aplicación del cliente que está asociado a la transacción pero que no se pasa en la solicitud de transacción al banco (por lo que no está asociado en los registros bancarios con la transacción). En general, se espera que este parámetro sea único.
  • description (opcional): Cadena. Es un valor asignado por la app cliente que se asocia al concepto de la transacción y se muestra en pantalla junto con la cantidad de la transacción.
  • tokenization: Tokenización. Solicitud de objeto de tokenización.

ENCABEZADOS

X-SOURCE

COMERCIA

ID de la aplicación de petición que identifica de forma exclusiva la aplicación que origina la solicitud de API.

Body raw (json)

				
					{
    "transactionId": "188273",
    "transactionDate": "202302032307",
    "amount": 1,
    "orderId": "tx-00000001",
    "description": "billete sencillo",
    "tokenization": {
        "subscriptionId": "232023031702405",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}
				
			

Estos son ejemplos de petición y respuesta de POST Pre-autorización completa con token. Aquí tienes los ejemplos en algunos lenguajes de programación.

				
					var myHeaders = new Headers();
myHeaders.append("X-SOURCE", "COMERCIA");

var raw = "{\n    \"transactionId\": \"188273\",\n    \"transactionDate\": \"202302032307\",\n    \"amount\": 1,\n    \"orderId\": \"tx-00000001\",\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}";

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https:// 172.20.10.1:2011/v1/transactions/preauth/complete", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
				
			
				
					var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https:// 172.20.10.1:2011/v1/transactions/preauth/complete");
request.Headers.Add("X-SOURCE", "COMERCIA");
var content = new StringContent("{\n    \"transactionId\": \"188273\",\n    \"transactionDate\": \"202302032307\",\n    \"amount\": 1,\n    \"orderId\": \"tx-00000001\",\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
				
			
				
					curl --location 'https:// 172.20.10.1:2011/v1/transactions/preauth/complete' \
--header 'X-SOURCE: COMERCIA' \
--data '{
    "transactionId": "188273",
    "transactionDate": "202302032307",
    "amount": 1,
    "orderId": "tx-00000001",
    "description": "billete sencillo",
    "tokenization": {
        "subscriptionId": "232023031702405",
        "token": "490727200336944988668125853538957465289310483021",
        "codeOfUse": "C",
        "customerId": "123456789"
    }
}'
				
			
				
					import requests

url = "https:// 172.20.10.1:2011/v1/transactions/preauth/complete"

payload = "{\n    \"transactionId\": \"188273\",\n    \"transactionDate\": \"202302032307\",\n    \"amount\": 1,\n    \"orderId\": \"tx-00000001\",\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
headers = {
  'X-SOURCE': 'COMERCIA'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
				
			
				
					let parameters = "{\n    \"transactionId\": \"188273\",\n    \"transactionDate\": \"202302032307\",\n    \"amount\": 1,\n    \"orderId\": \"tx-00000001\",\n    \"description\": \"billete sencillo\",\n    \"tokenization\": {\n        \"subscriptionId\": \"232023031702405\",\n        \"token\": \"490727200336944988668125853538957465289310483021\",\n        \"codeOfUse\": \"C\",\n        \"customerId\": \"123456789\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/transactions/preauth/complete")!,timeoutInterval: Double.infinity)
request.addValue("COMERCIA", forHTTPHeaderField: "X-SOURCE")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
				
			

Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman.

Este es el JSON de la respuesta y sus encabezados:

				
					{
  "orderId": "tx-00000001",
  "resultCode": 0,
  "resultMessage": "ACEPTADA",
  "ticket": {
    "AID": "",
    "ARC": "00",
    "ATC": "",
    "PSN": "",
    "Amount": "100",
    "Authorization": "94450 ",
    "CardBank": "Comercia Global Payments",
    "CardHolder": "",
    "CardIssuer": "VISA VISA CASH-CLASSIC",
    "CardNumber": "************2825",
    "CardTechnology": 3,
    "CardType": "",
    "Currency": "EUR",
    "Date": "20230203",
    "Id": "188274",
    "Language": "es",
    "Location": "BARCELONA",
    "MerchantId": "329811087",
    "MerchantName": "Comercia Global Payments PRUEBAS",
    "Modifiers": [],
    "OriginalTransactionDate": "20230203",
    "OriginalTransactionId": "188273",
    "PinIndicator": 0,
    "SignatureIndicator": 0,
    "Status": "0",
    "Templates": [],
    "TerminalId": "00000021",
    "Time": "2309",
    "Type": "PreauthorizationConfirmation"
  },
  "tokenization": {
    "tokenizerCode": "0"
  }
}
				
			

Content–Type application/json

Date Thu, 3 Feb 2023 22:09:51 GMT

Access-Control-Allow-Origin *

Access-Control-Allow-Credentials true

Connection keep-alive

Content-Encoding gzip

Transfer-Encoding chunked

Comparte este documento

Tokenización

Copiar el enlace

Clipboard Icon
Tabla de Contenidos

Productos

  • Addon Payments
  • Pagos integrados en TPV
  • Universal Pay
  • Addon 1 - XML API Integration

Ventas

Cuéntanos cómo es tu negocio para ofrecerte la mejor solución.

Contacta con un experto

Soporte técnico

¿Ya eres cliente y necesitas ayuda? Contacta con nosotros, estamos a tu disposición.

Ayuda

Socios

Trabajamos con los mejores partners de soluciones in-store y eCommerce. ¿Quieres unirte?

Únete a nosotros

© Comercia Global Payments

Política de privacidad
Ejercicio de Derechos
Información a Clientes
Canal de denuncia
Aviso Legal
Política de cookies
API - Developers Docs
Gestionar el consentimiento de las cookies
Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar {vendor_count} proveedores Leer más sobre estos propósitos
Ver preferencias
{title} {title} {title}

Consulta la documentación de las distintas secciones de integraciones:

Comienza a integrar

undraw_add_to_cart_re_wrdo 1 (1) (1)

Plugins para CMS

Complementa la integración

SDKs

Métodos de pago

Herramientas

Addon Payments

Consulta la documentación de Addon Payments. Aquí tienes las distintas secciones:

Integraciones

Consultas frecuentes

Portal Backoffice

Cyberpac

Consulta la documentación de Cyberpac. Aquí tienes las distintas secciones:

Canales

Módulos de integración

Integraciones a medida

Pagos integrados en TPV

Crea una solución que te ayudará a automatizar procesos. Incluso, podrás agregar procesos de pago en terminales físicos.

Pago integrado con TPV Android

Pago integrado con Smartphone TPV

Fichas Técnicas TPVs