Registrar

Permite registrar una orden para que el comprador haga el pago. El parámetro checkout, indica la URL donde el comprador puede completar el pago.
Request
Request (ejemplo)
Response
Response (ejemplo)
Cabeceras
Request

Campo

Tipo

Requerido

Descripción

merchant

string

si

Nombre asignado para el comercio en Payvalida. Se entrega con las credenciales.

email

string

si

Correo electrónico del comprador. Debe cumplir con el formato de correo valido.

country

number

si

Código del pais.

order

string

si

Código de la orden para el comercio. Este código debe ser único para todas las ordenes registradas desde el comercio. Se utilizara para la notificación. No debe contener guiones bajos ni caracteres especiales.

reference

string

no

Numero de la referencia con la cual el cliente efectuara el pago. Este numero es único en Payvalida. si no se envía se proporcionara uno disponible. Si se envía puede darse la posibilidad de colisiones.

money

string

si

Código de la moneda de pago.

amount

string

si

Monto de la orden para el recaudo. Si se envía este campo en cero ("0") la orden sera de monto abierto por lo que el cliente puede cualquier monto. Y se notificara el monto pagado.

description

string

si

Descripción corta de la orden. No incluir caracteres especiales.

method

string

no

Método de pago para la orden. Si no se envía la orden se podrá pagar por cualquiera de los metodos de pago registrados en el comercio.

language

string

no

lenguaje de la petición. es o en. default: es

recurrent

bool

si

Indica si la orden es o no recurrente. Si la orden es recurrente está no expira y se puede pagar multiples veces por el usuario. La notificación para recurrentes se realizara con el consecutivo (order+_+consecutivo) que aumenta según la cantidad de pagos.

expiration

string

si

Fecha de expiración de la orden en formato DD/MM/AAAA. No puede superar 30 días calendario y no debe ser inferior a la fecha actual.

iva

string

si

Monto porcentual correspondiente al IVA de la orden. Si tu medio de pago es tarjeta de crédito debes indicar este valor para el calculo del reteIVA.

checksum

string

si

Cadena de comprobación con SHA512 (email + country + order + money + amount + FIXED_HASH)

user_di

string

no

Número del documento de identidad del comprador.

user_type_di

string

no

Tipo del documento de identidad del cliente.

user_name

string

no

nombre del cliente en el documento de identidad (no acepta caracteres especiales ni acentos).

redirect_timeout

string

no

Tiempo de espera para redireccionar automáticamente al sitio del comercio cuando la operación de pago ha sido completada. Aplica para TC y PSE en Colombia. (Default: 15000 ms).

shortener

bool

no

Indica si la url recibida en el checkout esta acortada o no.

Request (ejemplo)
curl --location --request POST 'https://api-test.payvalida.com/api/v3/porders' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "kuanto",
"email": "[email protected]",
"country": 343,
"order": "999999991",
"reference": "46534512",
"money": "COP",
"amount": "10500",
"description": "Orden de prueba",
"method": "",
"language": "es",
"recurrent": true,
"expiration": "27/12/2020",
"iva": "0",
"checksum": "96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08",
"user_di": "94320444",
"user_type_di": "CC",
"user_name": "NombreUsuario",
"redirect_timeout": "300000"
}'
Response

Campo

Estructura

Tipo

Descripción

CODE

-

string

Código de respuesta 0000 para OK.

DESC

-

string

Descripción de la respuesta.

DATA

-

string

Datos del registro

Monto

DATA

string

Monto de la operación.

Operacion

DATA

string

Resultado de la creación de la orden.

OrdenID

DATA

string

ID único de la orden asociado al comercio.

PVordenID

DATA

string

ID único asociado a la orden para Payvalida.

Referencia

DATA

string

Numero de la referencia con la cual el cliente realizara el pago.

checkout

DATA

string

Link generado por Payvalida donde el cliente podrá efectuar el pago para las redes de recaudo electrónico y obtener información del pago.

Response (ejemplo)
{
"CODE": "0000",
"DATA": {
"Monto": "10500.0",
"Operacion": "CREADA",
"OrdenID": "999999991",
"PVordenID": "1934480",
"Referencia": "46534512",
"checkout": "sandbox-short.payv.co/H4P1KTDr9"
},
"DESC": "OK"
}
Cabeceras

Cabecera

Valor

Content-Type

application/json

La identificación del comercio (merchant) y FIXED_HASH, es generada al momento de crear una cuenta en nuestra plataforma y se envía por correo electrónico.

Ejemplos

  • GO

package main
import (
"bytes"
"crypto/sha512"
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"math/rand"
"net/http"
"time"
)
type Request struct {
Country int `json:"country,omitempty"`
Email string `json:"email,omitempty"`
Merchant string `json:"merchant,omitempty"`
Order string `json:"order,omitempty"`
Reference string `json:"reference,omitempty"`
Money string `json:"money,omitempty"`
Amount string `json:"amount,omitempty"`
Description string `json:"description,omitempty"`
Language string `json:"language,omitempty"`
Recurrent bool `json:"recurrent,omitempty"`
Expiration string `json:"expiration,omitempty"`
Method string `json:"method,omitempty"`
Iva string `json:"iva,omitempty"`
Checksum string `json:"checksum,omitempty"`
UserDI string `json:"user_di,omitempty"`
UserTypeDI string `json:"user_type_di,omitempty"`
RedirectTimeout string `json:"redirect_timeout,omitempty"`
UserName string `json:"user_name,omitempty"`
}
func main() {
url := "https://api-test.payvalida.com/api/v3/porders"
method := "POST"
email := "[email protected]"
country := "343"
order := "test" + fmt.Sprint(rand.Intn(999999999))
money := "COP"
amount := "20000"
fixedHash := "xxccc_b0b20707cca2b283b5844e77cadf2b5813bd923362b91583c95b736c8763937c0e0df27e9b730c404eeac6484666430f6042c043089135e8d3e76f2e86a82c38"
Paysha512 := sha512.Sum512([]byte(email + country + order + money + amount + fixedHash))
checksum := hex.EncodeToString(Paysha512[:])
date := time.Now()
expiration := date.AddDate(0, 0, 2)
request := Request{
Country: 343,
Email: email,
Merchant: "kuanto",
Order: order,
Reference: "",
Money: money,
Amount: amount,
Description: "Test pruebas unitarias",
Language: "es",
Recurrent: false,
Expiration: expiration.Format("02/01/2006"),
Method: "",
Iva: "0",
Checksum: checksum,
UserDI: "90000000",
UserTypeDI: "CC",
RedirectTimeout: "150000",
UserName: "devPayvalida",
}
json, err := json.Marshal(request)
if err != nil {
fmt.Println(err)
return
}
client := &http.Client{}
req, err := http.NewRequest(method, url, bytes.NewBuffer(json))
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
  • PHP

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-test.payvalida.com/api/v3/porders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{\n \"merchant\": \"kuanto\",\n \"email\": \"[email protected]\",\n \"country\": 343,\n \"order\": \"999999991\",\n \"reference\": \"46534512\",\n \"money\": \"COP\",\n \"amount\": \"10500\",\n \"description\": \"Orden de prueba\",\n \"method\": \"\",\n \"language\": \"es\",\n \"recurrent\": true,\n \"expiration\": \"27/12/2020\",\n \"iva\": \"0\",\n \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n \"user_di\": \"94320444\",\n \"user_type_di\": \"CC\",\n \"user_name\": \"NombreUsuario\",\n \"redirect_timeout\": \"300000\"\n}",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
  • JAVA

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"merchant\": \"kuanto\",\n \"email\": \"[email protected]\",\n \"country\": 343,\n \"order\": \"999999991\",\n \"reference\": \"46534512\",\n \"money\": \"COP\",\n \"amount\": \"10500\",\n \"description\": \"Orden de prueba\",\n \"method\": \"\",\n \"language\": \"es\",\n \"recurrent\": true,\n \"expiration\": \"27/12/2020\",\n \"iva\": \"0\",\n \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n \"user_di\": \"94320444\",\n \"user_type_di\": \"CC\",\n \"user_name\": \"NombreUsuario\",\n \"redirect_timeout\": \"300000\"\n}");
Request request = new Request.Builder()
.url("https://api-test.payvalida.com/api/v3/porders")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
  • Python

import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-test.payvalida.com")
payload = "{\n \"merchant\": \"kuanto\",\n \"email\": \"[email protected]\",\n \"country\": 343,\n \"order\": \"999999991\",\n \"reference\": \"46534512\",\n \"money\": \"COP\",\n \"amount\": \"10500\",\n \"description\": \"Orden de prueba\",\n \"method\": \"\",\n \"language\": \"es\",\n \"recurrent\": true,\n \"expiration\": \"27/12/2020\",\n \"iva\": \"0\",\n \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n \"user_di\": \"94320444\",\n \"user_type_di\": \"CC\",\n \"user_name\": \"NombreUsuario\",\n \"redirect_timeout\": \"300000\"\n}"
headers = {
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v3/porders", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
  • JavaScript

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"merchant":"kuanto","email":"[email protected]","country":343,"order":"999999991","reference":"46534512","money":"COP","amount":"10500","description":"Orden de prueba","method":"","language":"es","recurrent":true,"expiration":"27/12/2020","iva":"0","checksum":"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08","user_di":"94320444","user_type_di":"CC","user_name":"NombreUsuario","redirect_timeout":"300000"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-test.payvalida.com/api/v3/porders", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));