Actualizar

Permite modificar los datos de ésta de una orden, así es posible ampliar la vida de la orden (fecha de expiración), monto, descripción, referencia de pago, etc.

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

int

si

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

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)

La identificación del comercio (merchant) y el FIXED_HASH se proporcionan al momento de crear una cuenta en nuestra plataforma.

Se verifican los datos enviados y se actualizan aquellos que sean diferentes a la orden original.

Para actualizar la orden, es necesario que su estado sea PENDIENTE, de lo contrario no podrá actualizarse.

Ejemplo

  • 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 := "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))
}
  • 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 => "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;
  • Java

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();
  • JavaScript

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));

Última actualización