Saltar al contenido

Botón Pagos Paso 1

<?php
//Obtengo lo valores totales de la orden
//Subtotal 0 es la suma de los subtototales de los productos que no gravan IVA
$subtotal_order_0 = number_format(0, 2, '.', '');
//Subtotal 0 es la suma de los subtototales de los productos que si gravan IVA + el valor del Envio (si aplica)
$subtotal_order_12 = number_format(8.93, 2, '.', '');
//Tax es el valor del impuesto a partir del Subtotal
$tax_order = number_format($subtotal_order_12*0.12, 2, '.', '');
//Total es la suma del Subtotal + Tax
$total_order = number_format($subtotal_order_0+$subtotal_order_12+$tax_order, 2, '.', '');

//Armo los productos de mi orden
//ID del Producto en la Tienda
$products[0]['id'] = 01;
//Nombre del Producto
$products[0]['nombre'] = 'Nombre del Producto';
//Valor sin TAX del producto
$products[0]['subtotal'] = 8.93;
// Impuesto del producto
$products[0]['tax'] = 1.07;
//Valor total del producto
$products[0]['total'] = 10.00;
//Cantidad del producto
$products[0]['cantidad'] = 1;

//Id de la orden interna de la tienda puede ser alfajumérico
$order = "001";

//Armo el array a enviar
$datos = array(
        'products' => json_encode($products),
        'total' => $total_order,
        'tax' => $tax_order,
        'subtotal12' => $subtotal_order_12,
        'subtotal0' => $subtotal_order_0, //Subtotal de los productos que no gravan IVA
        'email' => "[email protected]",
        'first_name' => "Primer Nombre Cliente",
        'second_name' => "Segundo Nombre Cliente",
        'last_name' => "Apellidos Cliente",
        'document' => "1717272354", //Cédulo o RUC del cliente
        'phone' => "2238930",//Teléfono del cliente
        'address' => "Dirección del cliente",
        'ip' => get_client_ip(),//Función con la IP del cliente
        'order_id' => $order,
        'shipping' => 1.00, //Valor del envío sin impuestos
        'shipping_tax' => 0.12,//Valor del impuesto del envío, si existe valor de envío el impuesto es obligatorio por los Bancos
        'gateway' => 'botonpagos',
        'status' => 'pending',
        'date' => date('Y-m-d'),
        'url_response' => 'https://prueba.com/resultado.php?order='.$order //Este campo es opcional en el caso de APPS Móviles
    );

//Dirección a BotónPagos con los datos de la orden
$url = 'https://portal.botonpagos.com/api/datafast/setOrder?'.http_build_query($datos);
//Consulta vía CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'code: ID del comercio'//ID provisto por BotónPagos
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$responseData = curl_exec($ch);
//Si existe un error de conexión
if(curl_error($ch)){
    echo curl_error($ch);
}

curl_close($ch);
//Paso a array los datos obtenidos en Json
$responseData = json_decode($responseData, true);

/**
 * Función que permite obtener la ip del cliente que realiza el pago
 * 
 * */
function get_client_ip() 
{
    $ipaddress = "";
    if (getenv("HTTP_CLIENT_IP"))
        $ipaddress = getenv("HTTP_CLIENT_IP");
    else if(getenv("HTTP_X_FORWARDED_FOR"))
        $ipaddress = getenv("HTTP_X_FORWARDED_FOR");
    else if(getenv("HTTP_X_FORWARDED"))
        $ipaddress = getenv("HTTP_X_FORWARDED");
    else if(getenv("HTTP_FORWARDED_FOR"))
        $ipaddress = getenv("HTTP_FORWARDED_FOR");
    else if(getenv("HTTP_FORWARDED"))
       $ipaddress = getenv("HTTP_FORWARDED");
    else if(getenv("REMOTE_ADDR"))
        $ipaddress = getenv("REMOTE_ADDR");
    else
        $ipaddress = "UNKNOWN";
    return $ipaddress;
}


?>
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>BotónPagos</title>
  </head>
  
  <body>
     
    <div class="container">
      <div class="row">
        <div class="col-md-8 order-md-1">
            <!-- Llamo al Botón de Pagos en mi página -->
            <iframe src="https://portal.botonpagos.com/api/datafast/boton/<?= $responseData['code'] ?>" width="100%" style="height: 766px; border: none;"></iframe>
        </div>
      </div>
    </div>
  </body>
</html>