Subscribe to the Prizm Worldwide News Telegram - channel and stay tuned!
Close

Integração PRIZM

O sistema de pagamento PRIZM é a maneira mais fácil de receber e enviar pagamentos criptográficos.

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

PRIZM Servlet

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

Descrição

Exemplo de implementação do PHP

O princípio básico do trabalho

Exemplos de funções

Tutorial
Integração do sistema de pagamento Prizm
Para começar a trabalhar com o PRIZM, será necessário ativar o nó da rede (Nó) e o API_Servlet.
Nó de rede

PrizmCore wallet
Easy API Gateway

O software pode ser executado em um servidor e também em servidores diferentes. No entanto, é melhor iniciá-lo em um único servidor para sua conveniência.

Primeiramente, você deve iniciar o nó e aguardar a sincronização. O próximo passo é a configuração do PrizmAPIServlet módulo.


Dentro dos registros, há um arquivo chamado PrizmAPIServlet.properties


  • Na linha passphrase: NONE

Em vez de NONE, você deve escrever a chave privada da carteira que será usada pelo seu projeto.

  • Na linha sendkey: NONE

Em vez de NONE, você deve escrever a senha (será usada pela função de envio de moedas como uma proteção adicional contra transações não autorizadas)

Depois de preencher os campos, você deve iniciar o servlet através de
run-servlet.sh

O exemplo de implementação em PHP

A descrição da tarefa de receber e enviar moedas, com exemplos de funções prontas e descrição dos princípios do trabalho. O banco de dados Mysql é usado para armazenar a lista de transações, há um despejo da tabela de armazenamento abaixo, junto com exemplos de código para trabalhar com a tabela (se você aplicar o QueryBuilder, isso não será um problema)

O princípio principal de trabalho:

Há um script no Cron-task que faz uma solicitação ao servlet a cada 2-5 minutos para que ele possa receber novas transações na carteira da loja. Após receber a lista de transações, salve-as no banco de dados local. Se não houver operações no banco de dados, você deve executar o comando sem nenhum parâmetro. No entanto, se você deseja receber novas transações, deve enviar o número da última transação que possui como parâmetro.

O exemplo da função:
<?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;
}

?>
A função para recuperar o conteúdo da 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 a página da web     
           curl_setopt($ch, CURLOPT_HEADER, 0); // não recupera cabeçalhos   
           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // siga redirecionamentos 
           curl_setopt($ch, CURLOPT_ENCODING, ""); // lida com todas as codificações
          curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // agente de usuário
          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);// tempo limite da conexão 
          curl_setopt($ch, CURLOPT_TIMEOUT, 20); // tempo limite da resposta
          curl_setopt($ch, CURLOPT_MAXREDIRS, 2); // para após o 10o redirecionamento 

           $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;
}

?>

Você pode testá-lo através do console, por exemplo: curl http://localhost:8888/history

O exemplo do Cron-task script manipulador para receber novas transações e a estrutura da tabela 

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 as chaves necessárias e incremento automático de ID devem ser adicionados à tabela 

Manipuladora:

<?php

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

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


// esta linha adiciona dados ao ‘pzm_history’ tabela 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()
{

//  isso procura a última linha da tabela para obter o último ID das transações que estão na tabela

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

?>

Neste exemplo, você recebe a lista de novas transações que devem ser salvas no banco de dados local.

Portanto, você mantém um histórico de todas as transações na carteira e, no futuro, procurará por elas em nosso banco de dados local usando dados importantes.

Seu projeto deve trabalhar com a mesma Prizm Wallet, por isso todos os clientes receberão os mesmos requisitos para reabastecer a conta interna e o mesmo ID de hash da operação. Certifique-se de informar o cliente que ele deve fazer uma transação estritamente nos requisitos que indicam o identificador de hash no comentário de pagamento.

Portanto, deve haver outro processo que analisará novas transações recebidas e depositará moedas na conta interna se o comentário de pagamento tiver um identificador de hash do cliente. Além disso, você precisa criar um botão "EU PAGO" separado para o cliente, que poderá pesquisar e registrar novas transações para esse usuário depois de clicar nele.

Funções secundárias e funções de envio de moedas
Obter chave pública para a carteira (funciona apenas para carteiras ativadas com algum equilíbrio).
<?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;
    }

?>
Recebendo saldo atual da carteira:
<?php

	function getBalancePZM($pzm)
    {
        $ip = '*******';  // um exemplo  192.168.1.1:9976  com port
		$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 envio de moedas:
<?php

public function payPZM($summa, $pzm, $public_key, $text)
{
	$p2 = SENDKEY;  // esta é a senha que você especificou durante a instalação
	$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;
}

?>