Autorización y Captura

Paguelofacil ofrece la posibilidad de realizar una autorización antes de generar una captura. La autorización se puede ver como una reserva de fondos en la tarjeta de tu comprador. Cuando realices una captura todavía no se le generará un cobro a tu cliente en su tarjeta. Solo cuando se realice una captura el cliente verá el pago.


  

Prerrequisitos

CCLW
Llaves de conexión al API
Certificado SSL
TLS 1.3 o superior


  

Base URL de servidores

Producción
https://secure.paguelofacil.com/
Pruebas
https://sandbox.paguelofacil.com/
Servicio POST
/rest/processTx/{TRANSACCION_TYPE}

Autorizar una transacción

Para realizar una autorización solo debes realizar una petición con la solicitud de autorización y procesar la respuesta una vez la autorización sea procesada.

Paso 1. Petición de Autorización

Realiza la petición de la autorización indicandonos en la URL que es una "AUTH".

                    
//Ejemplo de AUTH

$urlConfig = "https://secure.paguelofacil.com/rest/processTx/AUTH";

$cclw = '004D3EF3780409D107C59C85664B800FA63FFE09247A7731B8464CCE837F3C2233F973F7308DB9A7069BD460BEC62C6E6054DD1F2DDF7F22067F857FB9E031AA ';
$amount=3.50;//El monto o valor total de la transacción a realizar. NO PONER
$description='Nro-Order-523';//MaxLength:150 ;Es la descripción o el motivo de la transacción en proceso
$credit_card='4916000000000000';
$carType = 'VISA';
$credit_card_month="12";//Mes de expiración de la tarjeta, siempre 2 dígitos
$credit_card_year="32";//Numeric Ej.:02 Año de expiración de la tarjeta.
$credit_card_cvc="003";//Código de Seguridad de la tarjeta Numeric MaxLength:3

$name='alam';//String MaxLength:25 Nombre del tarjeta habiente
$lastname='brito';//String MaxLength:25 Apellido del Tarjeta habiente
$email='alambrito@correo.com';//String MaxLength:100 Email del
$address='testing new address';//String MaxLength:100 Dirección del Tarjeta
$phone='60201236';//Numeric MaxLength:16 Teléfono del Tarjeta habiente


    $data = array(
        "cclw" =>  $cclw ,
        "amount" => $amount,
        "taxAmount" => 1.00,
        "email" => $email,
        "phone" => $phone,
        "address" => $address,
        "concept" => $description,
        "description" => $description,
        "cardInformation" => array(
            "cardNumber" => $credit_card,
            "expMonth" => $credit_card_month,
            "expYear" => $credit_card_year,
            "cvv" => $credit_card_cvc,
            "firstName" => $name,
            "lastName" => $lastname,
            "cardType" => $carType,
        )
    );


$json=json_encode($data);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $urlConfig);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','authorization:WT5hTaUcpa4J3h4AmrZa2EXXJs8boUVa|DIRd852djHbq2j5Fca5VDUkDbExTBCVf'));
curl_setopt($ch,CURLOPT_POSTFIELDS,$json);

$result = curl_exec($ch);

echo "<br>";
echo "Respuesta de paguelo Facil";
echo "<br>";

$result = json_decode($result, true);
                    
                
                    
const request = require("request");

let callAuth = () => {

    let payload = {
        cclw: '004D3EF3780409D107C59C85664B800FA63FFE09247A7731B8464CCE837F3C2233F973F7308DB9A7069BD460BEC62C6E6054DD1F2DDF7F22067F857FB9E031AA ',
        amount: 3.50,//El monto o valor total de la transacción a realizar. NO PONER
        taxAmount: 1.0,
        email: 'alambrito@correo.com',//String MaxLength:100 Email del
        phone: '60201236',//Numeric MaxLength:16 Teléfono del Tarjeta habiente,
        address: 'testing new address',//String MaxLength:100 Dirección del Tarjeta,
        concept: 'Nro-Order-523',//MaxLength:150 ;Es la descripción o el motivo de la transacción en proceso
        description: 'Nro-Order-523',//MaxLength:150 ;Es la descripción o el motivo de la transacción en proceso
        cardInformation: {
            cardNumber: '4916000000000000',
            expMonth: "12",//Mes de expiración de la tarjeta, siempre 2 dígitos
            expYear: "32",//Numeric Ej.:02 Año de expiración de la tarjeta.
            cvv: "003",//Código de Seguridad de la tarjeta Numeric MaxLength:3
            firstName: 'alam',//String MaxLength:25 Nombre del tarjeta habiente
            lastName: 'brito',//String MaxLength:25 Apellido del Tarjeta habiente
            cardType: 'VISA'
        }
    };

    let options = {
        method: 'POST',
        url: 'https://secure.paguelofacil.com/rest/processTx/AUTH',
        headers: {
            "authorization": 'WT5hTaUcpa4J3h4AmrZa2EXXJs8boUVa|DIRd852djHbq2j5Fca5VDUkDbExTBCVf',
            "content-type": 'application/json'
        },
        body: payload,
        json: true
    };

    request(options, (error, response, body) => {
        if (error) throw new Error(error);

        console.log("Response Authorize Service: ", body);
        console.log("Business logic...");
    });
};
                    
                

Paso 2. Respuesta de Autorización

Al realizar la petición recibiras la respuesta en formato JSON. Debes obtener la variable "Status" la cual si es recibida como "1" la transacción fue autorizada.

//Ejemplo de AUTH
{
"headerStatus":{
"code":200,
"description":"Success"
},
"serverTime":"2019-04-15T07:01:50",
"message":null,
"data":{
"date":"2019-04-15T07:01:50",
"authStatus":"14",
"cardType":"VISA",
"type":"VISA",
"idtx":691276,
"cardToken":"04NABCDEFG0D4ZD3LR6",
"totalPay":"3.5",
"binInfo":{
"id":"0030ae56-d070-4b5a-869c-35df5909c3f3",
"risk_score":99,
"funds_remaining":541.18499999999994543031789362430572509765625,
"queries_remaining":36079,
"ip_address":{
"risk":45,
"city":{
"confidence":20,
"geoname_id":4744870,
"names":{
"en":"Ashburn",
"ru":"\u0410\u0448\u0431\u0435\u0440\u043d"
}
},
"continent":{
"code":"NA",
"geoname_id":6255149,
"names":{
"de":"Nordamerika",
"en":"North America",
"es":"Norteam\u00e9rica",
"fr":"Am\u00e9rique du Nord",
"ja":"\u5317\u30a2\u30e1\u30ea\u30ab",
"pt-BR":"Am\u00e9rica do Norte",
"ru":"\u0421\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430",
"zh-CN":"\u5317\u7f8e\u6d32"
}
},
"country":{
"confidence":99,
"geoname_id":6252001,
"is_high_risk":false,
"iso_code":"US",
"names":{
"de":"USA",
"en":"United States",
"es":"Estados Unidos",
"fr":"\u00c9tats-Unis",
"ja":"\u30a2\u30e1\u30ea\u30ab\u5408\u8846\u56fd",
"pt-BR":"Estados Unidos",
"ru":"\u0421\u0428\u0410",
"zh-CN":"\u7f8e\u56fd"
}
},
"location":{
"accuracy_radius":1000,
"latitude":39.04809999999999803321770741604268550872802734375,
"local_time":"2019-05-22T08:01:50-04:00",
"longitude":-77.47280000000000654836185276508331298828125,
"metro_code":511,
"time_zone":"America\/New_York"
},
"postal":{
"code":"20149",
"confidence":10
},
"registered_country":{
"geoname_id":6252001,
"iso_code":"US",
"names":{
"de":"USA",
"en":"United States",
"es":"Estados Unidos",
"fr":"\u00c9tats-Unis",
"ja":"\u30a2\u30e1\u30ea\u30ab\u5408\u8846\u56fd",
"pt-BR":"Estados Unidos",
"ru":"\u0421\u0428\u0410",
"zh-CN":"\u7f8e\u56fd"
}
},
"subdivisions":[
{
"confidence":60,
"geoname_id":6254928,
"iso_code":"VA",
"names":{
"en":"Virginia",
"fr":"Virginie",
"ja":"\u30d0\u30fc\u30b8\u30cb\u30a2\u5dde",
"pt-BR":"Virg\u00ednia",
"ru":"\u0412\u0438\u0440\u0434\u0436\u0438\u043d\u0438\u044f",
"zh-CN":"\u5f17\u5409\u5c3c\u4e9a\u5dde"
}
}
],
"traits":{
"autonomous_system_number":14618,
"autonomous_system_organization":"Amazon.com, Inc.",
"domain":"amazonaws.com",
"ip_address":"100.24.233.128",
"isp":"Amazon.com",
"organization":"Amazon.com",
"user_type":"hosting"
}
},
"credit_card":{
"issuer":{
"name":"MBNA EUROPE BANK LTD.",
"phone_number":"08009174466"
},
"brand":"Visa",
"country":"GB",
"is_issued_in_billing_address_country":false,
"is_prepaid":false,
"type":"credit"
},
"email":{
"first_seen":"2019-04-24",
"is_free":false,
"is_high_risk":false
},
"billing_address":{
"latitude":9,
"longitude":-80,
"distance_to_ip_location":3354,
"is_in_ip_country":false
},
"disposition":{
"action":"manual_review",
"reason":"custom_rule"
}
},
"name":"alam brito",
"displayNum":"6988",
"operationType":"AUTH",
"returnUrl":"https:\/\/admin.paguelofacil.com\/PF\/#\/default-receipt\/AUTH-IV6LR0UYAY",
"requestPayAmount":3.5,
"email":"alambrito@correo.com",
"codOper":"AUTH-IV6LR0UAAA",
"status":0,
"messageSys":"CARD NO. ERROR"
},
"success":true
}

  
                    
//Ejemplo de CAPTURE

$urlConfig = "https://sandbox.paguelofacil.com/rest/processTx/CAPTURE";

$cclw = 'D17B05A095489D1176560B4666A283454185F353F401D0201CC5C16F92535DF6B1DEBA18E79442CC0D6F75FD024207680AFBDFD6CF015478BF30CBEF9160A08D';
$amount=3.50;//El monto o valor total de la transacción a realizar. NO PONER
$descrition='Nro-Order-523';//MaxLength:150 ;Es la descripción o el motivo de la transacción en proceso
$CodOper = 'AUTH-LU1ZGW16QA';

    $data = array(
        "cclw" =>  $cclw ,
        "amount" => $amount,
        "codOper" => $CodOper,
        "description" => $descrition,

    );

$json=json_encode($data);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $urlConfig);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','authorization: WT5hTaUcpa4J3h4AmrZa2EXXJs8boUVa|DIRd852djHbq2j5Fca5VDUkDbExTBCVf'));
curl_setopt($ch,CURLOPT_POSTFIELDS,$json);

$result = curl_exec($ch);

echo "
";
echo "Respuesta de paguelo Facil";
 echo "
";

$result = json_decode($result, true);

var_dump($result);
                    
                
                    
const request = require("request");

let callCapture = () => {

    let payload = {
        cclw: 'D17B05A095489D1176560B4666A283454185F353F401D0201CC5C16F92535DF6B1DEBA18E79442CC0D6F75FD024207680AFBDFD6CF015478BF30CBEF9160A08D ',
        amount: 3.50,//El monto o valor total de la transacción a realizar. NO PONER
        codOper: 'AUTH-LU1ZGW16QA',
        description: 'Nro-Order-523',//MaxLength:150 ;Es la descripción o el motivo de la transacción en proceso
    };

    let options = {
        method: 'POST',
        url: 'https://secure.paguelofacil.com/rest/processTx/CAPTURE',
        headers: {
            "authorization": 'WT5hTaUcpa4J3h4AmrZa2EXXJs8boUVa|DIRd852djHbq2j5Fca5VDUkDbExTBCVf',
            "content-type": 'application/json'
        },
        body: payload,
        json: true
    };

    request(options, (error, response, body) => {
        if (error) throw new Error(error);

        console.log("Response Capture Service: ", body);
        console.log("Business logic...");
    });
};
                    
                

Paso 2. Respuesta de una Captura

Al realizar la petición de captura la respuesta en formato JSON. Debes obtener la variable "Status" la cual si es recibida como "1" los fondos fueron capturados.

//Ejemplo de Respuesta Capture
{"headerStatus":
{"code":620,
"description":"INVALID RELATED TX"},
"serverTime":"2019-05-22T07:13:43",
"message":null,
"data":[],
"success":false}