Tabla de Contenidos

API: Crear deuda

Ejemplo de cómo crear una deuda de Gs. 50.000 por “Aporte camiseta del equipo” que expira en 2 días utilizando el API para obtener su url de pago.

Harías esta llamada cuando tu cliente solicita pagar, para inciar el ciclo de cobro.

Llamadas al API | Ciclo de cobro


PHP

<?php
 
$idDeuda = 'demo001'; 
$siExiste= 'update';
$apiUrl = 'https://staging.adamspay.com/api/v1/debts';
$apiKey = 'tu-api-key';
 
// Hora DEBE ser en UTC!
$ahora = new DateTimeImmutable('now',new DateTimeZone('UTC'));
$expira = $ahora->add(new DateInterval('P2D'));
 
// Crear modelo de la deuda
$deuda = [
    'docId'=>$idDeuda,
    'label'=>'Aporte camiseta del equipo',
    'amount'=>['currency'=>'PYG','value'=>'50000'],
    'validPeriod'=>[
        'start'=>$ahora->format(DateTime::ATOM),
        'end'=>$expira->format(DateTime::ATOM)
    ]
];
 
// Crear JSON para el post
$post = json_encode( ['debt'=>$deuda] );
 
 
// Hacer el POST
$curl = curl_init();
 
curl_setopt_array($curl,[
 CURLOPT_URL => $apiUrl,
 CURLOPT_HTTPHEADER => ['apikey: '.$apiKey,'Content-Type: application/json','x-if-exists'=>$siExiste],
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_CUSTOMREQUEST=>'POST',
 CURLOPT_POSTFIELDS=>$post
 ]);
 
$response = curl_exec($curl);
if( $response ){
  $data = json_decode($response,true);
 
  // Deuda es retornada en la propiedad "debt"
  $payUrl = isset($data['debt']) ? $data['debt']['payUrl'] : null;
  if( $payUrl ) {
    echo "Deuda creada exitosamente\n";
    echo "URL=$payUrl\n";
  } else {
    echo "No se pudo crear la deuda\n";
    print_r($data['meta']);
  }
 
}
else {
  echo 'curl_error: ',curl_error($curl);
}
curl_close($curl);

Python

import http.client
import json
import datetime
import pprint
 
idDeuda = "demo001"
siExiste = "update"
apiKey = "tu-api-key"
host = "staging.adamspay.com"
path = "/api/v1/debts"
 
# Hora DEBE ser en UTC!
inicio_validez= datetime.datetime.utcnow().replace()
fin_validez = inicio_validez + datetime.timedelta(days=2)
 
# Crear modelo de la deuda
deuda = {
    "docId": idDeuda,
    "amount": {"currency": "PYG","value": "50000"},
    "label":"Aporte camiseta del equipo",
    "validPeriod":{
       "start":inicio_validez.strftime("%Y-%m-%dT%H:%M:%S"),
       "end":fin_validez.strftime("%Y-%m-%dT%H:%M:%S")
    }  
  }
 
# El post debe llevar la deuda en la propiedad "debt"
post = {"debt":deuda}
 
# Crear JSON
payload = json.JSONEncoder().encode(post).encode("utf-8")
 
headers = {"apikey": apiKey, "Content-Type": "application/json", "x-if-exists": siExiste}
conn = http.client.HTTPSConnection(host)
conn.request("POST", path , payload, headers)
 
data = conn.getresponse().read().decode("utf-8")
response = json.JSONDecoder().decode(data)
 
# Datos retornan en la propiedad "debt"
 
pp = pprint.PrettyPrinter(indent=2)
if "debt" in response:
    debt=response["debt"]
    print("Deuda creada exitosamente")
    print("URL=" + debt["payUrl"])
else:
    print("# Error")
    if "meta" in response:
        pp.pprint(response["meta"])