-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathTonClient.php
131 lines (114 loc) · 2.68 KB
/
TonClient.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/*
* version 1.0.1
*/
class TonClient
{
private $type;
private $SDKServer;
private $provider;
private $providerKey;
private $types = ['simpleR1', 'simpleR2', 'simpleR3', 'v2R1', 'v2R2', 'v3R1', 'v3R2', 'v4R1', 'v4R2'];
public $jettons =
[
'TGR' =>
[
'address' => 'EQAvDfWFG0oYX19jwNDNBBL1rKNT9XfaGP9HyTb5nb2Eml6y'
],
];
public function __construct($type, $SDKServer, $provider, $providerKey)
{
if (!in_array($type, $this->types))
{
throw new Exception('Unknown type of wallet contract');
}
$this->type = $type;
$this->SDKServer = $SDKServer;
$this->provider = $provider;
$this->providerKey = $providerKey;
}
/*
* Создание кошелька
*/
public function createWallet()
{
return $this->send('createWallet');
}
/*
* Получение баланса кошелька
*/
public function getBalance($address)
{
return $this->send('getBalance',
[
'address' => $address,
]);
}
/*
* Получение транзакций кошелька
*/
public function getTransaction($address)
{
return $this->send('getTransaction',
[
'address' => $address,
]);
}
/*
* Создание транзации
*/
public function sendTransaction($mnemonics, $toAddress, $amount, $payload = null)
{
return $this->send('sendTransaction',
[
'mnemonics' => $mnemonics,
'toAddress' => $toAddress,
'amount' => $amount,
'payload' => $payload,
]);
}
/*
* Создание транзации TGR
*/
public function sendTransactionJetton($mnemonics, $toAddress, $amount, $jetton)
{
if (!array_key_exists($jetton, $this->jettons))
{
throw new Exception('Unknown jetton');
}
return $this->send('sendTransaction',
[
'mnemonics' => $mnemonics,
'toAddress' => $toAddress,
'amount' => $amount,
'jetton' => $jetton,
]);
}
private function send($method, $data = [])
{
$json = json_decode($this->request($this->SDKServer . $method . '?' . http_build_query($data +
[
'provider' => $this->provider,
'providerKey' => $this->providerKey,
'type' => $this->type,
'jettons' => $this->jettons,
])));
if (!isset($json->status) OR !$json->status OR !isset($json->result) OR !$json->result)
{
if (isset($json->error))
{
throw new Exception($json->error);
}
throw new Exception('Unknown server response');
}
return $json->result;
}
private function request($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
}