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

Tích hợp PRIZM

Hệ thống thanh toán PRIZM là cách dễ nhất để nhận và gửi thanh toán điện tử.

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

PRIZM Servlet

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

Sự miêu tả

Ví dụ triển khai PHP

Nguyên tắc cơ bản của công việc

Ví dụ chức năng

HƯỚNG DẪN
Tích hợp hệ thống thanh toán Prizm
Để bắt đầu làm việc với PRIZM, bạn sẽ cần khởi chạy nút mạng (Node) và API_Servlet.
Simpul jaringan

PrizmCore wallet
Easy API Gateway

Phần mềm có thể chạy trên một máy chủ cũng như trên các máy chủ khác nhau. Tuy nhiên, sẽ tốt hơn khi khởi chạy nó chỉ trên một máy chủ để thuận tiện cho bạn.


Đầu tiên, bạn nên khởi chạy nút và đợi trong khi nó đồng bộ hóa. Bước tiếp theo là định dạng của mô-đun PrizmAPIServlet.


Bên trong kho lưu trữ có một tập tin gọi là PrizmAPIServlet.properties


trong dòng passphrase: NONE

thay vì NONE bạn nên viết khóa riêng tư của ví sẽ được sử dụng bởi công việc của bạn.

trong dòng sendkey: NONE

thay vì NONE bạn nên viết mật khẩu (nó sẽ được sử dụng bởi chức năng gửi tiền giống như một sự bảo vệ bổ sung khỏi các giao dịch trái phép)..


Sau khi bạn đã điền vào các dòng, bạn nên khởi chạy servlet thông qua run-servlet.sh.


ví dụ về việc thực hiện trong PHP

Việc mô tả công việc với việc nhận và gửi tiền, với các ví dụ về các chức năng được làm sẵn và mô tả các nguyên tắc làm việc. Cơ sở dữ liệu Mysql được sử dụng để lưu trữ danh sách giao dịch, có một khu chứa bảng lưu trữ bên dưới, cùng với các ví dụ về mã để làm việc với bảng (nếu bạn áp dụng QueryBuilder, nó sẽ gặp sự cố)

Nguyên tắc chính của công việc:

Nếu không có hoạt động trong cơ sở dữ liệu, bạn nên chạy lệnh mà không có bất kỳ tham số nào. Tuy nhiên, nếu bạn muốn nhận các giao dịch mới, bạn nên gửi số lượng giao dịch cuối cùng mà bạn có dưới dạng tham số.
Nguyên tắc chính của công việc:

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

?>

Chức năng truy xuất nội dung trang:

<?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); // phục hồi trang web
           curl_setopt($ch, CURLOPT_HEADER, 0); // không phục hồi tiêu đề
           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // theo việc chuyển hướng
           curl_setopt($ch, CURLOPT_ENCODING, ""); // xử lý tất cả các bảng mã 
          curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // tác nhân người dùng 
          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); // hết thời gian kết nối 
          curl_setopt($ch, CURLOPT_TIMEOUT, 20); // hết thời gian trả lời
          curl_setopt($ch, CURLOPT_MAXREDIRS, 2); //dừng sau khi chuyển hướng thứ 10

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

?>

Bạn có thể kiểm tra nó thông qua bảng điều khiển, ví dụ: curl http://localhost:8888/history

Ví dụ về tập lệnh xử lý tác vụ Cron để nhận các giao dịch mới và cấu trúc bảng

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;


* Tất cả các khóa cần thiết và tự động tăng cho ID nên được thêm vào bảng


Xử lý:

<?php

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

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


// dòng này thêm dữ liệu vào  ‘pzm_history’ bảng sử dụng  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()
{

// dòng này tìm kiếm hàng cuối cùng trong bảng để lấy ID cuối cùng của các giao dịch trong bảng

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

?>


Trong ví dụ này, bạn nhận được danh sách các giao dịch mới sẽ được lưu vào cơ sở dữ liệu cục bộ.

Do đó, bạn giữ một lịch sử của tất cả các giao dịch trên ví và trong tương lai, bạn sẽ tìm kiếm chúng trong cơ sở dữ liệu địa phương của chúng tôi bằng dữ liệu chính.

Công việc của bạn phải hoạt động với cùng một Ví Prizm, đó là lý do tại sao tất cả các khách hàng sẽ được cung cấp cùng một yêu cầu để bổ sung tài khoản nội bộ và cùng một hàm hash ID của quá trình hoạt động . Hãy chắc chắn thông báo cho khách hàng rằng anh ta phải thực hiện giao dịch một cách nghiêm ngặt về các điều kiện cần thiết cho biết số nhận dạng hàm hash trong mục nhận xét thanh toán.

Vì vậy, cần có một quy trình khác sẽ phân tích các giao dịch mới đến và gửi tiền vào tài khoản nội bộ nếu việc nhận xét thanh toán có số nhận dạng hàm hash của khách hàng. Ngoài ra, bạn cần tạo một nút "TÔI TRẢ TIỀN" riêng cho khách hàng có thể tìm kiếm và ghi lại các giao dịch mới cho người dùng này sau khi nhấp vào nút đó.

Chức năng phụ và chức năng gửi tiền:
Lấy khóa công khai cho ví (chỉ hoạt động đối với ví đã kích hoạt có số dư).

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

?>

Nhận số dư hiện tại của ví:

<?php

	function getBalancePZM($pzm)
    {
        $ip = '*******';  // thí dụ 192.168.1.1:9976  có cổng
		$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;
            }
        }
    }

?>

Phương thức gửi tiền:

<?php

public function payPZM($summa, $pzm, $public_key, $text)
{
	$p2 = SENDKEY;   //  Phương thức gửi tiền này là mật khẩu mà bạn đã chỉ định trong khi thiết lập
	$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;
}

?>