Nombre asignado para el comercio en Payválida. Se entrega con las credenciales.
plan_id
string
sí
id del plan que se le asignará al cliente para activar la suscripción.
start_date
string
no
Fecha de inicio de la suscripción en formato DD/MM/AAAA. Si no se proporciona, se asignará la fecha de invocación. Esta fecha corresponde al primer pago y marca el comienzo de la frecuencia de pagos de la suscripción. Si el pago es con tarjeta de credito se tomara esta fecha como la fecha de hoy.
checksum
string
sí
Cadena de comprobación con SHA512 (merchant + plan_id + FIXED_HASH).
customer
struct
sí
Estructura con la información de usuario a la que se le enviará la suscripción
email
customer
string
sí
Correo electrónico del cliente. Debe cumplir con el formato estándar de correo válido.
user_di
customer
string
sí
Número del documento de identidad del cliente.
type_di
customer
string
sí
Tipo del documento de identidad del cliente.
first_name
customer
string
sí
Nombre del cliente en el documento de identidad (no acepta caracteres especiales ni acentos).
last_name
customer
string
sí
Apellido del cliente en el documento de identidad (no acepta caracteres especiales ni acentos).
cellphone
customer
string
sí
Número de celular del cliente. Debe llevar el indicativo del país.
credit_card_data
struct
no
Estructura para activar débito automático de tarjeta.
card_number
credit_card_data
string
sí (débito automático activo)
cvv
credit_card_data
int
sí (débito automático activo)
Código de seguridad de la tarjeta.
expiration_date
credit_card_data
string
sí (débito automático activo)
Fecha de expiración de la tarjeta en formato MM/AA.
retries
credit_card_data
int
no
Define la cantidad de veces que se reintenta un pago en caso de ser fallido (ej. fondos insuficentes). Valor por defecto: 1.
Valores permitidos: entre 0 - 4.
Si es mayor a 1, se ejecutan los reintentos con un día de diferencia, siempre y cuando el procesador lo permita.
franchise
credit_card_data
string
sí (débito automático activo)
id_type
credit_card_data
string
sí (débito automático activo)
id
credit_card_data
string
sí (débito automático activo)
Número de documento de identificación de la persona que realiza la transacción.
holder_name
credit_card_data
string
sí (débito automático activo)
Nombre del titular de la tarjeta, sin apellidos.
holder_last_name
credit_card_data
string
sí (débito automático activo)
Apellidos del titular de la tarjeta.
email
credit_card_data
string
sí (débito automático activo)
Dirección de correo electrónico de la persona que realiza la transacción.
phone
credit_card_data
string
sí (débito automático activo)
Número telefónico de la persona que realiza la transacción sin indicativos.
ip
credit_card_data
string
sí (débito automático activo)
Dirección IP del dispositivo origen de la transacción, del usuario final.
header_user_agent
credit_card_data
string
sí (débito automático activo)
header_user_agent de el navegador de el usuario.
line1
credit_card_data
string
sí (débito automático activo)
Línea 1 asociada a la dirección de facturación del usuario.
line2
credit_card_data
string
sí (débito automático activo)
Línea 2 asociada a la dirección de facturación del usuario.
line3
credit_card_data
string
sí (débito automático activo)
Línea 3 asociada a la dirección de facturación del usuario.
country
credit_card_data
string
sí (débito automático activo)
País del usuario.
city
credit_card_data
string
sí (débito automático activo)
Ciudad del usuario.
state
credit_card_data
string
sí (débito automático activo)
Estado o departamento del usuario.
post_code
credit_card_data
string
sí (débito automático activo)
Código postal de usuario.
customer_id
string
no
Identificador único de un usuario con una suscripción existente. Al crear una nueva suscripción, puedes usar el customer_id para evitar enviar nuevamente la información del usuario y la tarjeta. Con el campo customer_id en el request las estructuras customer y credit_card_data no son requeridas.
Para los días que no existan en meses donde se debe realizar un pago, por ejemplo el día 31, el límite para realizar el pago de la suscripción será el último día de dicho mes.
<?php$url ='https://api-test.payvalida.com/v4/subscriptions';// Prepare the request payload$payload =array("merchant"=>"kuanto","plan_id"=>"50e25c83-12ba-442f-adf8-6d410b376045","checksum"=>"d171f0254271b731d06b91ad97bb0ec284e5997c997597cc8068fc688cb94f6b7dbe6295531e01b52c67cbeb2eddfcfabe29ca12323f118d77239001ed411869","start_date"=>"12/12/2024","customer"=>array("first_name"=>"user-name","last_name"=>"last-name","user_di"=>"999999999","type_di"=>"CC","cellphone"=>"+57112321131331","email"=>"user@example.com" ));// Create the checksum$data = $payload['merchant'] . $payload['plan_id'] .'FIXED_HASH';$checksum =hash('sha512', $data);// Update the checksum value in the payload$payload['checksum'] = $checksum;// Convert the payload to JSON$requestBody =json_encode($payload);// Set the request headers$headers =array('Content-Type: application/json');// Initialize cURL$ch =curl_init();// Set cURL optionscurl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST,true);curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);// Execute the cURL request$response =curl_exec($ch);// Check for cURL errorsif (curl_error($ch)) {echo'Error: '.curl_error($ch);exit;}// Close cURLcurl_close($ch);// Print the response bodyecho'Response Body: '. $response;
Javascript
constfetch=require('node-fetch');constcrypto=require('crypto');consturl='https://api-test.payvalida.com/v4/subscriptions';// Prepare the request payloadconstpayload= { merchant:'kuanto', plan_id:'50e25c83-12ba-442f-adf8-6d410b376045', checksum:'d171f0254271b731d06b91ad97bb0ec284e5997c997597cc8068fc688cb94f6b7dbe6295531e01b52c67cbeb2eddfcfabe29ca12323f118d77239001ed411869', start_date:'12/12/2024', customer: { first_name:'user-name', last_name:'last-name', user_di:'999999999', type_di:'CC', cellphone:'+57112321131331', email:'user@example.com', },};// Create the checksumconstdata=payload.merchant +payload.plan_id +'FIXED_HASH';constchecksum=crypto.createHash('sha512').update(data).digest('hex');// Update the checksum value in the payloadpayload.checksum = checksum;// Send the POST requestfetch(url, { method:'POST', headers: {'Content-Type':'application/json', }, body:JSON.stringify(payload),}).then((response) =>response.json()).then((data) => {console.log('Response Body:', data); }).catch((error) => {console.error('Error:', error); });
import requestsimport hashlibimport jsonimport timeurl ='https://api-test.payvalida.com/v4/subscriptions'# Prepare the request payloadpayload ={"merchant":"kuanto","plan_id":"50e25c83-12ba-442f-adf8-6d410b376045","checksum":"d171f0254271b731d06b91ad97bb0ec284e5997c997597cc8068fc688cb94f6b7dbe6295531e01b52c67cbeb2eddfcfabe29ca12323f118d77239001ed411869","start_date":"12/12/2024","customer":{"first_name":"user-name","last_name":"last-name","user_di":"999999999","type_di":"CC","cellphone":"+57112321131331","email":"user@example.com"}}# Create the checksumdata = payload['merchant']+ payload['plan_id']+'FIXED_HASH'checksum = hashlib.sha512(data.encode()).hexdigest()# Update the checksum value in the payloadpayload['checksum']= checksum# Send the POST requestresponse = requests.post(url, json=payload)# Print the response bodyprint('Response Body:', response.json())hin