Request Request(ejemplo) Response Response (ejemplo) Cabeceras
Nombre asignado para el comercio en Payvalida. Se entrega con las credenciales.
Correo electrónico del comprador. Debe cumplir con el formato de correo valido.
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.
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.
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.
Descripción corta de la orden. No incluir caracteres especiales.
lenguaje de la petición. es o en. default: es
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.
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.
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.
Cadena de comprobación con SHA512 (email + country + order + money + amount + FIXED_HASH)
Copiar curl --location --request PATCH 'https://api-test.payvalida.com/api/v3/porders' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "kuanto",
"email": "someone@example.com",
"country": 343,
"order": "999999991",
"reference": "46534512",
"money": "COP",
"amount": "9500",
"description": "Orden de prueba",
"method": "",
"language": "es",
"recurrent": true,
"expiration": "27/12/2020",
"iva": "0",
"checksum": "1AC89E7089355B5069222C01779431A192FC4D459C25584D69B64ABBF605FE7CB54A015296A39D234CA9B94FF9F068423AC1E00F5A319EB18F2167B97C8A0BB1",
"user_di": "94320444",
"user_type_di": "CC",
"user_name": "NombreUsuario",
"redirect_timeout": "300000"
}'
Código de respuesta 0000 para OK.
Descripción de la respuesta.
Resultado de la actualización de la orden.
ID único de la orden asociado al comercio.
ID único asociado a la orden para Payvalida.
Numero de la referencia con la cual el cliente realizara el pago.
Link generado por Payvalida donde el cliente podrá efectuar el pago para las redes de recaudo electrónico y obtener información del pago.
Copiar {
"CODE" : "0000" ,
"DESC" : "OK" ,
"DATA" : {
"OrdenID" : "999999991" ,
"Monto" : "9,500.00" ,
"PVordenID" : "1934652" ,
"Referencia" : "46534512" ,
"Operacion" : "ACTUALIZADA" ,
"checkout": "sandbox-checkout.payvalida.com?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJNRVJDSEFOVF9DRUwiOiIzMTYzODg3MzQwIiwiTUVSQ0hBTlRfQ09ERSI6NzMsIk9SREVSX0NPREUiOjE5MzQ2NTIsIk1FUkNIQU5UX0VNQUlMIjoiZWZyYW5jb0BwYXl2YWxpZGEuY29tIiwiTUVSQ0hBTlRfTE9HTyI6Imh0dHBzOi8vdGVzdC1pbWFnZXMucGF5dmFsaWRhLmNvbS92YWxpZGRhd2ViL2xvZ29fbWVyY2hhbnQva3VhbnRvL2xvZ28xNTk4NTM4MTEyMjkyLmpwZyIsIk1FUkNIQU5UX1VSTF9SRVRVUk4iOiJodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8rZ29vZ2xlIiwiTUVSQ0hBTlRfTkFNRSI6Ikt1YW50byBUZXN0IiwiRVhQSVJBVElPTiI6IjI3LzEyLzIwMjAiLCJPUkRFUl9CUklFRiI6Ik9yZGVuIGRlIHBydWViYSIsIk1FUkNIQU5UX1RFTCI6IjQ0NDk5NjkiLCJPUkRFUl9DVVJSRU5DWSI6IkNPUCIsIk9SREVSX0FNT1VUIjoiOSw1MDAuMDAiLCJNRVJDSEFOVF9JRCI6Imt1YW50byIsIk9SREVSX1JFRkVSRU5DRSI6IjQ2NTM0NTEyIiwiT1JERVJfTUVUSE9EIjoiIiwiVVNFUl9ESSI6IiIsIlVTRVJfVFlQRV9ESSI6IiIsIlVTRVJfTkFNRSI6IiIsIlJFRElSRUNUX1RJTUVPVVQiOiIiLCJNRVJDSEFOVF9URU1QTEFURSI6InY0IiwiZXhwIjoxNjA5MTExMTAzLCJpc3MiOiJhdXRoMCJ9.p2JIfEJokyy0OrKJghv4aJvXGrjErEfAY6f0Ane1Ghs"
}
}
Copiar 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 := "PATCH"
email := "someone@example.com"
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))
}
Copiar < ?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 => "PATCH" ,
CURLOPT_POSTFIELDS =>"{\n \"merchant\": \"kuanto\",\n \"email\": \"someone@example.com\",\n \"country\": 343,\n \"order\": \"999999991\",\n \"reference\": \"46534512\",\n \"money\": \"COP\",\n \"amount\": \"9500\",\n \"description\": \"Orden de prueba\",\n \"method\": \"\",\n \"language\": \"es\",\n \"recurrent\": true,\n \"expiration\": \"27/12/2020\",\n \"iva\": \"0\",\n \"checksum\": \"1AC89E7089355B5069222C01779431A192FC4D459C25584D69B64ABBF605FE7CB54A015296A39D234CA9B94FF9F068423AC1E00F5A319EB18F2167B97C8A0BB1\",\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;
Copiar Unirest. setTimeouts ( 0 , 0 );
HttpResponse < String > response = Unirest. patch ( "https://api-test.payvalida.com/api/v3/porders" )
. header ( "Content-Type" , "application/json" )
.body("{\n \"merchant\": \"kuanto\",\n \"email\": \"someone@example.com\",\n \"country\": 343,\n \"order\": \"999999991\",\n \"reference\": \"46534512\",\n \"money\": \"COP\",\n \"amount\": \"9500\",\n \"description\": \"Orden de prueba\",\n \"method\": \"\",\n \"language\": \"es\",\n \"recurrent\": true,\n \"expiration\": \"27/12/2020\",\n \"iva\": \"0\",\n \"checksum\": \"1AC89E7089355B5069222C01779431A192FC4D459C25584D69B64ABBF605FE7CB54A015296A39D234CA9B94FF9F068423AC1E00F5A319EB18F2167B97C8A0BB1\",\n \"user_di\": \"94320444\",\n \"user_type_di\": \"CC\",\n \"user_name\": \"NombreUsuario\",\n \"redirect_timeout\": \"300000\"\n}")
. asString ();
Copiar var myHeaders = new Headers ();
myHeaders .append ( "Content-Type" , "application/json" );
var raw = JSON.stringify({"merchant":"kuanto","email":"someone@example.com","country":343,"order":"999999991","reference":"46534512","money":"COP","amount":"9500","description":"Orden de prueba","method":"","language":"es","recurrent":true,"expiration":"27/12/2020","iva":"0","checksum":"1AC89E7089355B5069222C01779431A192FC4D459C25584D69B64ABBF605FE7CB54A015296A39D234CA9B94FF9F068423AC1E00F5A319EB18F2167B97C8A0BB1","user_di":"94320444","user_type_di":"CC","user_name":"NombreUsuario","redirect_timeout":"300000"});
var requestOptions = {
method : 'PATCH' ,
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));