curl -X POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/ \
-H 'Content-Type: application/json' \
-d '{"method": "MESSAGE_SIGNING"}'import requests
url = "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/"
payload = {
"wallet_address": "<string>",
"chain": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({wallet_address: '<string>', chain: '<string>'})
};
fetch('https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallet_address' => '<string>',
'chain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/"
payload := strings.NewReader("{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/")
.header("Content-Type", "application/json")
.body("{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"status": "PENDING",
"wallet_address": "<string>",
"chain": "<string>",
"deposit_address": "<string>",
"expected_amount": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"challenge": "<string>",
"rejection_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"attempts": 123,
"failure_reason": ""
}{
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"status": "PENDING",
"wallet_address": "<string>",
"chain": "<string>",
"deposit_address": "<string>",
"expected_amount": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"challenge": "<string>",
"rejection_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"attempts": 123,
"failure_reason": ""
}{
"detail": "<string>",
"code": "",
"status": "PENDING",
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"max_attempts": 123,
"attempts_used": 123,
"attempts_remaining": 123
}{
"detail": "<string>",
"code": "",
"status": "PENDING",
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"max_attempts": 123,
"attempts_used": 123,
"attempts_remaining": 123
}Mulai Bukti Kepemilikan Dompet API - Travel Rule Widget
Mulai bukti dompet dengan token sesi widget Didit: tanda tangan pesan, Satoshi test, tangkapan layar, atau deklarasi. Memilih lagi melanjutkannya.
curl -X POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/ \
-H 'Content-Type: application/json' \
-d '{"method": "MESSAGE_SIGNING"}'import requests
url = "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/"
payload = {
"wallet_address": "<string>",
"chain": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({wallet_address: '<string>', chain: '<string>'})
};
fetch('https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallet_address' => '<string>',
'chain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/"
payload := strings.NewReader("{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/")
.header("Content-Type", "application/json")
.body("{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallet_address\": \"<string>\",\n \"chain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"status": "PENDING",
"wallet_address": "<string>",
"chain": "<string>",
"deposit_address": "<string>",
"expected_amount": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"challenge": "<string>",
"rejection_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"attempts": 123,
"failure_reason": ""
}{
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"status": "PENDING",
"wallet_address": "<string>",
"chain": "<string>",
"deposit_address": "<string>",
"expected_amount": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"challenge": "<string>",
"rejection_reason": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"attempts": 123,
"failure_reason": ""
}{
"detail": "<string>",
"code": "",
"status": "PENDING",
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"max_attempts": 123,
"attempts_used": 123,
"attempts_remaining": 123
}{
"detail": "<string>",
"code": "",
"status": "PENDING",
"proof_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"method": "MESSAGE_SIGNING",
"max_attempts": 123,
"attempts_used": 123,
"attempts_remaining": 123
}Parameter Path
Token sesi yang tidak transparan yang dikembalikan saat sesi widget dibuat.
Body
Metode bukti yang dipilih pengguna akhir. Harus berupa salah satu dari allowed_methods milik konteks.
MESSAGE_SIGNING, SATOSHI_TEST, SCREENSHOT, SELF_DECLARATION Default-nya adalah wallet_address sesi. Harus cocok dengan dompet transfer saat sesi ditautkan ke suatu transfer.
128Default-nya adalah blockchain sesi.
32Respons
Bukti yang sudah terbuka untuk metode ini, dilanjutkan.
MESSAGE_SIGNING, SATOSHI_TEST, SCREENSHOT, SELF_DECLARATION PENDING: pengguna akhir memilih metode ini dan bukti belum diputuskan. Tanda tangan yang gagal atau deposit uji yang belum dapat dibaca atau belum dikonfirmasi membuat bukti tetap PENDING dengan failure_reason, sehingga pengguna akhir dapat mencoba lagi; deposit SATOSHI_TEST yang dikirimkan diperiksa ulang secara otomatis hingga jendelanya ditutup, dan SCREENSHOT yang dikirimkan menunggu peninjauan Anda. VERIFIED: kepemilikan terbukti. REJECTED: deposit uji benar-benar salah (pengirim lain, bukan jumlah yang diharapkan ke alamat deposit, lebih lama dari tantangan, atau transaksi yang sudah membuktikan dompet lain) atau peninjau Anda menolak tangkapan layar; failure_reason menyatakan alasannya. Bukti yang ditolak bersifat final dan menggunakan salah satu upaya sesi. EXPIRED: bukti tidak dapat lagi diputuskan (jendelanya ditutup, pengguna akhir berganti metode, sesi widget berakhir, atau pemegang dompet berubah); failure_reason menyatakan alasannya.
PENDING, VERIFIED, REJECTED, EXPIRED Pengenal blockchain kanonis untuk entri buku alamat tempat bukti tersebut ditujukan, misalnya ETH, BTC, SOL, TRX.
Alamat deposit yang harus dikirimi jumlah Satoshi untuk pengujian oleh pelanggan. Hanya ada pada bukti SATOSHI_TEST.
Jumlah on-chain persis, dalam mata uang asli deposit, yang harus cocok dengan deposit uji coba Satoshi. Hanya ada pada bukti SATOSHI_TEST.
Batas waktu untuk jendela Satoshi test milik bukti ini. Hanya ada pada bukti SATOSHI_TEST; expires_at milik sesi widget diperpanjang untuk mencakupnya saat SATOSHI_TEST ditawarkan.
Pesan yang diterbitkan Didit yang ditandatangani pelanggan dengan dompet mereka. Hanya ada pada bukti MESSAGE_SIGNING.
Alasan mengapa bukti ditolak, sebagai kalimat bahasa Inggris untuk pengguna akhir. Hanya ada jika status adalah REJECTED; kosong saat peninjau Anda menolak tangkapan layar (catatan Anda tetap tersimpan untuk Anda).
Berapa kali bukti diserahkan untuk bukti ini (tanda tangan, id transaksi, unggahan).
Alasan mengapa upaya terakhir gagal, atau mengapa bukti ditutup. Kosong jika tidak ada yang gagal.
, SIGNATURE_INVALID, SIGNATURE_UNSUPPORTED_SCHEME, DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED, DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED, CHAIN_UNSUPPORTED, WINDOW_EXPIRED, OWNERSHIP_CHANGED, METHOD_SWITCHED, REVIEW_REJECTED, ABANDONED