Transacción
Permite la creación de transacciones y posteriormente consultar su estado.
https://app.payku.cl/ (Default server) · https://des.payku.cl/ (Sandbox server)Crear transacción
Sección titulada «Crear transacción»/api/transactionEste método permite crear una orden de pago a payku y recibe como respuesta la URL para redirigir el browser del pagador y el token que identifica la transacción. Una vez que el pagador efectúe el pago exitoso, payku notificará el resultado a la página del comercio que se envió en el parámetro urlnotify.
additional_parameters = permite enviar información adicional para ser registrada en payku asociada a la transacción order_ext dentro de additional_parameters, es una palabra reservada, y es útil para asociar la transacción a un identificador único del comercio
Cuerpo de la solicitud
| Parámetro | Tipo | Descripción |
|---|---|---|
email |
string <email> | Email del usuario |
order |
string | Orden del comercio |
subject |
string | Descripción de la orden |
amount |
integer | Monto de la orden |
currency |
string | Moneda. |
payment |
integer | Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique.
|
expired |
string | Fecha en la cual expira la transacción Este campo no es requerido. Formato permitido (Año-mes-día hora:minuto:segundo) Ejemplo: 2023-10-18 23:59:59 En caso de ser enviado, debe cumplir con las siguiente reglas:
|
urlreturn |
string <url> | url de retorno del comercio donde payku redirigirá al pagador luego de 3 segundos de obtener el resultado de la transacción. |
urlnotify |
string <url> | url callback del comercio donde payku notificara el pago.
|
additional_parameters |
object | Parámetros adicionales del cliente. Es obligatorio para los proveedores 26 (Floid), 19 (Fintoc) y 4 (Etpay), y opcional para el resto de medios de pago. |
parameters1 |
string | Nombre del parámetro dado por el usuario payku |
parameters2 |
string | Nombre del parámetro dado por el usuario payku |
order_ext |
string | Identificador único proporcionado por el comercio, que permita a asociar la transacción a un identificador externo |
payer_rut |
string | RUT para especificar un único pagador. Se puede usar cuando el parámetro payment sea 26 (Floid), 19 (Fintoc) o 4 (Etpay), y es un campo obligatorio para estos proveedores. |
payer_bank |
string | Código para preseleccionar el banco. Este parametro es opcional y solo funcionará cuando el parametro payment sea (Fintoc / Etpay / Floid). Los valores a utilizar los puedes obtener en el endpoint api/banks?currency=clp (Opcional) |
curl -X POST \https://BASE-URL/api/transaction \-H 'Accept: application/json, text/plain, */*' \-H 'Authorization: Bearer TOKEN-PUBLICO' \-H 'Content-Type: application/json' \-H 'Host: BASE-URL' \-d '{ "email": "[email protected]", "order": "5696", "subject": "Cliente Test", "amount": 25000, "currency": "CLP", "payment": 1, "expired": "2023-10-19 13:05:10", "urlreturn": "https://youwebsite.com/urlreturn?orderClient=5696", "urlnotify": "https://youwebsite.com/urlnotify?orderClient=5696", "additional_parameters": { "parameters1":"keyValue", "parameters2":"keyValue", "order_ext":"fff-777" }}'$client = new \GuzzleHttp\Client(); $body = $client->request('POST', 'https://BASE_URL/api/transaction', [ 'json' => [ 'order' => "98745", 'subject' => 'Client Test', 'amount' => 25000, 'currency' => 'CLP', 'payment' => 1, 'expired' => '2023-10-19 13:05:10', 'urlreturn' => 'https://youwebsite.com/urlreturn?orderClient=98745', 'urlnotify' => 'https://www.youwebsite.com/urlnotify?orderClient=98745', 'additional_parameters' => [ 'parameters1'=>'keyValue', 'parameters2'=>'keyValue', 'order_ext'=>'fff-777' ] ], 'headers' => [ 'Authorization' => 'Bearer TOKEN_PUBLICO' ] ])->getBody();$response = json_decode($body);const request = async (data) => { const response = await fetch('https://BASE_URL/api/transaction', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN-PUBLICO' }, body: JSON.stringify(data) }); const result = await response.json(); console.log(result)}
let data = { order: "98745", subject: "payment description", amount: 25000, "currency": "CLP", payment: 1, expired: "2023-10-19 13:05:10", urlreturn: "https://youwebsite.com/urlreturn?orderClient=98745", urlnotify: "https://www.youwebsite.com/urlnotify?orderClient=98745", additional_parameters: { parameters1:"keyValue", parameters2:"keyValue", order_ext:"fff-777" }};
request(data);Respuestas
{ "status": "pending", "id": "trx3b4d77b43acd9a720", "url": "https://BASE_URL/url_de_pago"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
|
id |
string | Identificador de la transacción creado por payku. |
url |
string | URL a redireccionar al usuario. |
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Token Público incorrecto.
{ "type": "Unauthorized", "message_error": { "error": "waiting token public" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
type |
string | Tipo de error ocurrido. |
message_error |
object | |
error |
string | Mensaje de error |
Obtener múltiples transacciones
Sección titulada «Obtener múltiples transacciones»/api/transactionEste método permite obtener la información de las transacciones realizados en payku, este método permite una paginación con un máximo de 4000 registros por página, además, posee los siguientes filtros:
- date_init: indica la fecha desde donde se desea comenzar la búsqueda de transacciones, si este parámetro no es enviado la busqueda iniciara la fecha actual .
- date_end: indica la fecha donde se desea que termine la búsqueda de transacciones, si este parámetro no es enviado la busque tendrá como fecha final la fecha actual.
- estatus: se puede filtrar la búsqueda de las transacciones dependiendo del estatus en la que se encuentra. por ejemplo. /api/transaction?success=true ó para traer multiples estatus /api/transaction?pending=true&rejected=true.
para la paginación es necesario agregar al final del endpoint lo siguiente ?page=1&per_page=100 siendo el primer parámetro el número de la página y el segundo el número de registros por página. En caso de querer buscar las transacciones entre las fechas 01-09-2021 y 15-09-2021, además que solo sean las transacciones de estado success, la url a utilizar seria la siguiente: https://[URL_BASE]/api/transaction?date_init=2021-09-01&date_end=2021-09-15&success=true.
curl -X GET \https://BASE-URL/api/transaction \-H 'Accept: application/json, text/plain, */*' \-H 'Authorization: Bearer TOKEN-PUBLICO' \-H 'Content-Type: application/json' \-H 'Host: BASE-URL' \$client = new \GuzzleHttp\Client(); $body = $client->request('GET', 'https://BASE_URL/api/transaction', [ 'headers' => [ 'Authorization' => 'Bearer TOKEN_PUBLICO' ] ])->getBody();$response = json_decode($body);const request = async () => { const response = await fetch('https://BASE_URL/api/transaction', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN-PUBLICO' }, }); const result = await response.json(); console.log(result)}
request();Respuestas
{ "transaction": [ { "id": "107999", "status": "success", "created_at": "2019-10-25 14:10:03", "amount": 98745, "order": "1572023402", "subject": "Description", "payment": { "start": "2023-12-16 15:10:33", "end": "2023-12-16 15:10:36", "media": "Webpay", "transaction_id": 107999, "payment_key": "pra934939d607922f9e", "transaction_key": null, "deposit_date": "2023-10-05", "verification_key": "6669cbd982ef54c28f2f15fb9dc5262d", "authorization_code": "107742", "last_4_digits": "1233", "installments": 0, "card_type": "VN", "additional_parameters": { "identificador": "11.111.111-1", "banco": "Banco Estado", "numero_cuenta": "00126544977" }, "currency": "CLP" }, "nullify": { "status": "complete" }, "gateway_response": { "status": "success", "message": "successful transaction" } } ]}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
transaction |
array of objects | |
id |
string | Identificador de la transacción creado por payku. |
status |
string | Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
|
created_at |
string | Fecha de registro. |
email |
string | Email del usuario |
amount |
int | Monto. |
order |
string | Número de orden. |
subject |
string | Descripción de la orden de compra. |
payment |
object | |
start |
string | Inicio de la transacción. |
end |
string | Fin de la transacción. |
media |
string | Medio de pago, utilizado por el usuario. |
transaction_id |
int | Identificador de la transacción creado por payku. |
payment_key |
string | Identificador del cobro creado por payku. |
transaction_key |
string | Identificador de la transacción creado por payku. |
deposit_date |
string | Fecha el cual se realizará el depósito al cliente. |
verification_key |
string | Código de verificación creado por payku. |
authorization_code |
string | Código de autorización. |
last_4_digits |
string | Últimos 4 dígitos de la tarjeta afiliada. |
installments |
int | Cuotas. |
card_type |
string | Tipo de tarjeta. |
additional_parameters |
object | Ejemplo de parámetros adicionales que puede enviar payku. |
identificador |
string | Ejemplo del Identificador de la transacción: |
banco |
string | Ejemplo del banco el cual se realizo la transacción: |
numero_cuenta |
string | Ejemplo del número de cuenta el cual se realizo la transacción: |
currency |
string | Moneda. |
nullify |
object | Objeto que contiene información de la respuesta de la anulación |
status |
string | Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
|
gateway_response |
object | Objeto que contiene información de la respuesta de la transacción |
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
message |
string | Mensaje que describe el estado.
|
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Token Público incorrecto.
{ "type": "Unauthorized", "message_error": { "error": "waiting token public" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
type |
string | Tipo de error ocurrido. |
message_error |
object | |
error |
string | Mensaje de error |
Identificador no existe.
{ "status": "failed", "type": "Not Found", "id": "is not valid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
id |
string | Información de id |
Obtener transacción
Sección titulada «Obtener transacción»/api/transaction/{identificador}Este método permite obtener la información de una transacción realizado en payku
Parámetros de ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
idrequerido |
string | ID de la transacción a solicitar, payku puede recibir como id tanto el identificador de la transacción como el identificador de cobro:
|
curl -X GET \https://BASE-URL/api/transaction/ID-IDENTIFICADOR \-H 'Accept: application/json, text/plain, */*' \-H 'Authorization: Bearer TOKEN-PUBLICO' \-H 'Content-Type: application/json' \-H 'Host: BASE-URL' \$client = new \GuzzleHttp\Client(); $body = $client->request('GET', 'https://BASE_URL/api/transaction/trx3b4d77b43acd9a720', [ 'headers' => [ 'Authorization' => 'Bearer TOKEN_PUBLICO' ] ])->getBody();$response = json_decode($body);const request = async () => { const response = await fetch('https://BASE_URL/api/transaction/trx3b4d77b43acd9a720', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN-PUBLICO' }, }); const result = await response.json(); console.log(result)}
request();Respuestas
{ "status": "success", "id": "trx3b4d77b43acd9a720", "created_at": "2019-10-25 14:10:03", "order": "1572023402", "subject": "Description", "amount": "98745", "payment": { "start": "2023-12-16 15:10:33", "end": "2023-12-16 15:10:36", "media": "Webpay", "transaction_id": 107999, "payment_key": "pra934939d607922f9e", "transaction_key": null, "deposit_date": "2023-10-05", "verification_key": "6669cbd982ef54c28f2f15fb9dc5262d", "authorization_code": "107742", "last_4_digits": "1233", "installments": 0, "card_type": "VN", "additional_parameters": { "identificador": "11.111.111-1", "banco": "Banco Estado", "numero_cuenta": "00126544977", "network": { "ip_address": "192.0.2.123" } }, "currency": "CLP" }, "nullify": { "status": "complete" }, "gateway_response": { "status": "success", "message": "successful transaction" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
id |
string | Identificador de la transacción creado por payku. |
created_at |
string | Fecha de registro. |
order |
string | Número de orden. |
email |
string | Email del usuario |
subject |
string | Descripción de la orden de compra. |
amount |
string | Monto. |
payment |
object | |
start |
string | Inicio de la transacción. |
end |
string | Fin de la transacción. |
media |
string | Medio de pago, utilizado por el usuario. |
transaction_id |
int | Identificador de la transacción creado por payku. |
payment_key |
string | Identificador del cobro creado por payku. |
transaction_key |
string | Identificador de la transacción creado por payku. |
deposit_date |
string | Fecha el cual se realizará el depósito al cliente. |
verification_key |
string | Código de verificación creado por payku. |
authorization_code |
string | Código de autorización. |
last_4_digits |
string | Últimos 4 dígitos de la tarjeta afiliada. |
installments |
int | Cuotas. |
card_type |
string | Tipo de tarjeta. |
additional_parameters |
object | Ejemplo de parámetros adicionales que puede enviar payku. |
identificador |
string | Ejemplo del Identificador de la transacción: |
banco |
string | Ejemplo del banco el cual se realizo la transacción: |
numero_cuenta |
string | Ejemplo del número de cuenta el cual se realizo la transacción: |
network |
object | Datos de la red del usuario: |
ip_address |
string | Ejemplo de IP Address del usuario: |
currency |
string | Moneda. |
nullify |
object | Objeto que contiene información de la respuesta de la anulación |
status |
string | Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
|
gateway_response |
object | Objeto que contiene información de la respuesta de la transacción |
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
message |
string | Mensaje que describe el estado.
|
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Token Público incorrecto.
{ "type": "Unauthorized", "message_error": { "error": "waiting token public" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
type |
string | Tipo de error ocurrido. |
message_error |
object | |
error |
string | Mensaje de error |
Identificador no existe.
{ "status": "failed", "type": "Not Found", "id": "is not valid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
id |
string | Información de id |