This website uses cookies to ensure you get the best experience. ❤️
OK

Integración de PRIZM

El sistema de pago PRIZM es la forma más fácil de recibir y enviar pagos criptográficos.

Prizm paramining, парамайнинг, призм парамайнинг, paratax, паратакс, параметры парамайнинга

PRIZM Servlet

Prizm Paramining
факторы парамайнинга
paratax, паратакс
парамайнинг призм
prizm space

Descripción

Ejemplo de implementación de PHP

El principio básico del trabajo

Ejemplos de funciones

Tutorial
Integración de PRIZM
en tu proyecto
Para empezar a trabajar con PRIZM necesitarás iniciar el Nodo de Red(Node) Y API_Servlet.
Nodo de red

PrizmCore wallet
Easy API Gateway

El programa puede ser iniciado en un servidor también como en otros servidores. Sin embargo puede ser iniciado en uno de tu conveniencia.

Primero, debes iniciar el nodo y esperar a que sincronice. El siguiente paso es la configuración del módulo PrizmAPIServlet


Dentro del archivo hay otro archivo llamado PrizmAPIServlet.properties


  • En la línea passphrase: NONE

en vez de NONE debes poner la llave privada de tu billetera que va a ser usada para tu proyecto.

  • En la línea sendkey: NONE

en vez de NONE debes poner la contraseña(que será usada de el envío de monedas como una protección adicional por transacciones no autorizadas)


Una vez que llenaste los campos anterior mencionados, deberías iniciar el servlet a través de run-servlet.sh

El ejemplo de implementar el PHP

La descripción de trabajar mandando y recibiendo monedas, son ejemplos de la confección de funciones dentro de lo que es el los principios del trabajo. La base de datos de MySQL es usado para almacenar la lista de transacciones, dentro se vuelca la mesa de almacenamiento que se encuentra abajo, junto con los ejemplos de código de trabajo con la mesa anterior mencionada.(Si lo aplicas para QueryBuilder, no sera ningun problema)

El principio de trabajo:

Hay un guión en la tarea-Cron que hace solicitudes cada 2-5 minutos asi que recibirá nuevas transacciones en la billetera de el almacenamiento. Habiendo recibido la lista de transacciones, deben ser guardadas en la base de datos local
Si no hay operaciones en la base de datos, debes iniciar el comando sin ningún parámetro.

Sin embargo si deseas recibir nuevas transacciones debes enviar el número de la última transacción que tienes como parámetro.


Ejemplo de la función

<?php
function historyPZM($last_id = 0)
{
	if ($last_id) {
		$url = 'http://localhost:8888/history?fromid=' . $last_id;
	} else {
		$url = 'http://localhost:8888/history';
	}
	$page = '';
	$result = get_web_page($url);
	if (($result['errno'] != 0) || ($result['http_code'] != 200)) {
		$error = $result['errmsg'];
	} else {
		$page = $result['content'];
	}
	$array_new = array();
	$xcmorewrite = explode("\n", str_replace("\r", '', $page));
	foreach ($xcmorewrite as $value) {
		if ($value) {
			$array_new[] = explode(";", $value);
		}
	}
	return $array_new;
}

?>

La función para recuperar contenido de la página

<?php

function get_web_page($url)
{
	$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Recupera la pagina web         
           curl_setopt($ch, CURLOPT_HEADER, 0); // No recupera los encabezados   
           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Sigue redirecciones
           curl_setopt($ch, CURLOPT_ENCODING, ""); // Maneja todas las codificaciones 
          curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // Agente de usuario
          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); // Tiempo de espera de la conexión   
          curl_setopt($ch, CURLOPT_TIMEOUT, 20); // Tiempo de espera de la respuesta 
          curl_setopt($ch, CURLOPT_MAXREDIRS, 2); // Se detiene luego de la 10va redirección

           $content = curl_exec($ch);
	$err = curl_errno($ch);
	$errmsg = curl_error($ch);
	$header = curl_getinfo($ch);
	curl_close($ch);

	$header['errno'] = $err;
	$header['errmsg'] = $errmsg;
	$header['content'] = $content;
	return $header;
}

?>

Puedes hacer la prueba a través de la consola, por ejemplo: curl http://localhost:8888/history

El ejemplo de el manejo de las tareas de Cron para recibir nuevas transacciones y la mesa de estructuras

CREATE TABLE `pzm_history` (
  `id` bigint(20) NOT NULL,
  `tarif_id` int(1) NOT NULL,
  `tr_id` varchar(255) NOT NULL,
  `tr_date` varchar(255) NOT NULL,
  `tr_timestamp` int(11) NOT NULL,
  `pzm` varchar(50) NOT NULL,
  `summa` decimal(16,2) NOT NULL,
  `mess` varchar(255) NOT NULL,
  `status` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


* Todas las llaves necesarias y el autoincremento por ID debe ser agregado a el manejo de la mesa


Manejo:

<?php

$nomer = getLastPrmHistory();
$historys = historyPZM($nomer);

foreach ($historys as $item) {
    if ($item['0'] != "No transactions!") {


// Esta línea agrega datos a la mesa ‘pzm_history’ usando INSERT IGNORE


PzmHistory::find()->insertIgnore([
            'tr_id' => $item['0'],
            'tr_date' => $item['1'],
            'tr_timestamp' => $item['2'],
            'pzm' => $item['3'],
            'summa' => $item['4'],
            'mess' => $item['5'],
            'status' => 0
        ]);
    }
}


function getLastPrmHistory()
{

// Esta línea busca la última fila a la mesa para obtener la última ID de las transacciones que se hicieron en la mesa

if (!empty($pzmHistory = PzmHistory::find()->orderBy('id', "DESC")->first())) {
		return $pzmHistory->tr_id;            
	};
	return 0;
}

?>


En este ejemplo recibirás la lista de nuevas transacciones que debieron guardarse en la base de datos local.

Por lo tanto, mantendrás la historia de todas las transacciones en la billetera y así a futuro podrás buscarlas en la base de datos local usando la llave de datos.

Tu proyecto debe trabajar con la misma billetera PRIZM, es por eso que a todos los clientes se le dan los mismos requisitos para renovar la cuenta interna con el mismo hash de la operación. Este seguro de informar al cliente que debe hacer las transacciones estrictamente en los requisitos indicando el identificador hash en el comentario de pagos.

Por lo tanto, debería haber otro proceso que analizará las nuevas transacciones entrantes y deposita monedas en la cuenta interna si el comentario de pago tiene un identificador hash del cliente. También debe hacer un botón de "YO PAGO" para el cliente pueda buscar y registrar nuevas transacciones para este usuario después de hacer click en él.


Funciones secundarias y funciones de envío de monedas.
Obtener la clave pública para la billetera (solo funciona para las billeteras activadas que tienen saldo).

<?php
	
	function destinationPZM($pzm)
    {
        $url = 'http://localhost:8888/publickey?destination=' . $pzm;
        $page = '';
        $result = get_web_page($url);
        if (($result['errno'] != 0) || ($result['http_code'] != 200)) {
            $error = $result['errmsg'];
            return '';
        } else {
            $page = $result['content'];
            $haystack = "Public key absent";
            $haystack2 = "Send error!";
            $pos = strripos($page, $haystack);
            $pos2 = strripos($page, $haystack2);
            if ($pos === false AND $pos2 === false) {
                $xcmorewrite = explode(' ', $page);
                $page = trim($xcmorewrite[0]);
                return $page;
            } else {
                return '';
            }
        }
        return $page;
    }

?>

Recibiendo el saldo actual de la billetera:

<?php

	function getBalancePZM($pzm)
    {
        $ip = '*******';  // пример 192.168.1.1:9976  Con el puerto
		$url = 'http://'.$ip.'/prizm?requestType=getAccount&account=' . $pzm;
        $page = '';
        $result = get_web_page($url);
		//print_r($result); die;
        if (($result['errno'] != 0) || ($result['http_code'] != 200)) {
            $error = $result['errmsg'];
            return '';
        } else {
            $page = $result['content'];
            $page = json_decode($page, true);
            if ( isset($page['balanceNQT']) ) {
              return $page['balanceNQT'] / 100;
            } else {
              return 0;
            }
        }
    }

?>

Método de envío de monedas:

<?php

public function payPZM($summa, $pzm, $public_key, $text)
{
	$p2 = SENDKEY;   //  Esta es la contraseña que tu pusiste durante la configuración
	$return = false;
	$url = 'http://localhost:8888/send?sendkey=' . $p2 . '&amount=' . $summa . '&comment=' . urlencode($text) . '&destination=' . $pzm . '&publickey=' . $public_key;
	$page = '';
	$result = get_web_page($url);

	if (($result['errno'] != 0) || ($result['http_code'] != 200)) {
		$error = $result['errmsg'];
	} else {
		$page = $result['content'];
	}

	if (preg_match('/^\+?\d+$/', $page)) {
		$return = true;
	} else {
		$return = false;
	}
	return $return;
}

?>