<?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" 'last_name' => "Apellidos Cliente", 'document' => "1717272354", //Cédulo o RUC del cliente 'phone' => "2238930",//Teléfono del cliente 'address' => "Dirección del cliente", 'ip_address' => 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>PayAgile</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/botonV3/<?= $responseData['code'] ?>" width="100%" style="height: 766px; border: none;"></iframe> </div> </div> </div> </body> </html>