Действия
Примеры¶
Python¶
from eth_keys import keys
import requests
msg = b'{}'
pk = keys.PrivateKey(b'\x01' * 32)
signature = pk.sign_msg(msg)
addr = pk.public_key.to_checksum_address()
verify = signature.verify_msg(msg, pk.public_key)
re_addr = signature.recover_public_key_from_msg(msg).to_checksum_address()
print(str(addr) + ' = ' + str(re_addr) + ' = ' + str(verify))
URL = "https://my.h2k.me/ec/ex"
headers = {
'x-app-ec-from': addr,
'x-app-ec-sign-r': hex(signature.r),
'x-app-ec-sign-s': hex(signature.s),
'x-app-ec-sign-v': hex(signature.v),
}
print(headers)
r = requests.get(url=URL, headers=headers)
print(r.content)
data = r.json()
print(data)
NodeJS + Express¶
В задаче #3397 вложен zip-архив с готовыми скриптами для теста API-методов.
Ниже показаны примеры POST-запроса создания кошелька и GET-запроса получения списка кошельков.
1. Создание кошелька
В значения переменных создания аккаунта и первой компоненты подписи 'x-app-ec-from' можно использовать тестовые значения:
const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39' const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'
import Web3 from 'web3';
import axios from 'axios';
// 1. Инициализация
const web3 = new Web3();
// 2. Создание аккаунта (можно заменить значением)
const account = web3.eth.accounts.create();
// 3. Тело запроса (ВАЖНО: именно это будет подписано)
const body = {
slist: {
min_signs: "2",
"0": { type: "all", email: "e@mail.com" },
"1": { type: "any", email: "e@mail.ru", sms: "+77777777777" },
"2": { type: "all", ecaddress: "0xa75db3c448bb62e208e4babf500925427837e464" }
},
network: "5010",
info: "Мой первый кошелёк"
};
// 4. Строка для подписи
const message = JSON.stringify(body);
// 5. Подпись
const sign = web3.eth.accounts.sign(message, account.privateKey);
// 6. Заголовки
const headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
// компоненты подписи
'x-app-ec-from': account.address,
'x-app-ec-sign-r': sign.r,
'x-app-ec-sign-s': sign.s,
'x-app-ec-sign-v': sign.v
};
// 7. POST-запрос
const url = 'https://my.safina.pro/ece/newWallet';
(async () => {
try {
const response = await axios.post(url, message, { headers });
console.log('API response:', response.data);
} catch (err) {
if (err.response) {
console.error('API error:', err.response.status, err.response.data);
} else {
console.error('Request error:', err.message);
}
}
})();
2. Получение списка кошельков
- В значения переменных создания аккаунта и первой компоненты подписи 'x-app-ec-from' можно использовать тестовые значения:
const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39' const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'
- GET-запрос подписывается const message = '{}';
import Web3 from 'web3';
import axios from 'axios';
// 1. Инициализация
const web3 = new Web3();
// 2. Тестовый аккаунт
const account = web3.eth.accounts.create();
// 3. Текст для подписи
const message = '{}';
// 4. Подпись
const sign = web3.eth.accounts.sign(message, account.privateKey);
// 5. Заголовки
const headers = {
'Accept': 'application/json',
// компоненты подписи
'x-app-ec-from': account.address,
'x-app-ec-sign-r': sign.r,
'x-app-ec-sign-s': sign.s,
'x-app-ec-sign-v': sign.v
};
// 6. GET-запрос
const url = 'https://my.safina.pro/ece/wallets';
(async () => {
try {
const response = await axios.get(url, { headers });
console.log('API response:', response.data);
} catch (err) {
if (err.response) {
console.error('API error:', err.response.status, err.response.data);
} else {
console.error('Request error:', err.message);
}
}
})();
Обновлено Mariyam Seidaliyeva 29 дня назад · 5 изменени(я, ий)