한국어
결제용 자산 충전
입금 주소를 생성하기 전에 대상 환경에서 자산과 네트워크 ID를 조회합니다. 다른 배포 환경에서 사용한 ID를 그대로 가정하지 마십시오.
자산과 네트워크 조회
bash
usdt_response="$(wallet_request GET '/asset-types?code=USDT&page=1&page_size=20')"
sepolia_response="$(wallet_request GET '/networks?is_active=true&page=1&page_size=100')"
export ASSET_TYPE_ID="$(printf '%s' "$usdt_response" | jq -er '.data.items[0].id // empty')"
export NETWORK_ID="$(printf '%s' "$sepolia_response" | jq -er '.data.items[] | select(.chain_id == 11155111) | .network_id')"
export ASSET_DECIMALS="$(printf '%s' "$usdt_response" | jq -er '.data.items[0].decimals // empty')"응답의 success와 USDT 조회 결과를 먼저 확인합니다. Sepolia는 환경별 코드 대신 chain_id: 11155111로 선택합니다. 결과가 없으면 다음 페이지와 대상 환경의 지원 여부를 확인하고 진행을 중단합니다.
선택한 네트워크에 해당 자산이 배포되어 있고 활성 상태인지 확인합니다.
bash
asset_response="$(
wallet_request GET "/assets/by-type-network?asset_type_id=$ASSET_TYPE_ID&network_id=$NETWORK_ID"
)"
printf '%s\n' "$asset_response" | jqsuccess와 data.is_active가 true이고 응답의 자산·네트워크가 의도한 값일 때만 진행합니다.
고객 입금 주소 발급
bash
deposit_address_body="{\"asset_type_id\":$ASSET_TYPE_ID,\"network_id\":$NETWORK_ID}"
deposit_address_response="$(
wallet_request POST "/accounts/$USER_ACCOUNT_ID/deposit-addresses" "$deposit_address_body"
)"
printf '%s\n' "$deposit_address_response" | jq반환된 address를 고객 계정·자산·네트워크·tag_or_memo와 함께 저장하고 고객에게 표시합니다. 온보딩 과정에서 안내받은 테스트 토큰 발급 방법을 사용하고, 선택한 USDT 배포와 일치하는 테스트 토큰을 전송합니다. 테스트넷 ETH만 입금하면 USDT 잔액은 늘어나지 않습니다. EVM 네트워크는 주소로 입금 대상을 구분하므로 일반적으로 tag_or_memo가 null이지만 다른 네트워크에서는 필요할 수 있습니다.
입금과 잔액 확인
테스트넷 USDT를 전송한 뒤 네트워크 컨펌과 서비스 처리 시간을 기다립니다.
bash
wallet_request GET "/deposits?account_id=$USER_ACCOUNT_ID&type=EXTERNAL&after_id=0&limit=100" | jq
wallet_request GET "/accounts/$USER_ACCOUNT_ID/balances/$ASSET_TYPE_ID" | jq입금 응답의 next_cursor를 저장합니다. 새로 발견한 비최종 입금은 GET /deposits/{deposit_id}?type=EXTERNAL로 추적합니다. 입금 API에는 user_status가 없으며 status: COMPLETED일 때만 고객 충전 완료입니다. 승인·검증·환불 상태의 구분은 상태 코드를 따릅니다.
decimals가 6인 USDT에서 1.00 USDT는 1000000 raw입니다. available_amount_raw 비교에는 부동소수점이 아닌 정수 또는 decimal-safe 타입을 사용합니다.
다음: 내부 계정 간 자산 이동