Реалізація купівлі NFT у мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація купівлі NFT у мобільному додатку
Середній
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація покупки NFT в мобільному додатку

Купити NFT — це значить викликати функцію смарт-контракту маркетплейса, передав потрібну суму ETH або ERC-20. Звучить просто, але між натисканням «Купити» та підтвердженою транзакцією — кілька кроків, де все може пойти не так: газ скінчився, NFT вже куплені, гаманець не підключений. UX повинен обробляти кожен випадок.

Перевірка доступності листингу перед покупкою

Перед показом кнопки «Купити» — перевіріте актуальний статус листингу. NFT мог бути проданий секунду назад, а кешований екран цього не знає.

// iOS — перевірка активності листингу перед покупкою
func checkListingActive(contractAddress: String, tokenId: BigUInt) async throws -> Bool {
    let listing = try await marketplaceContract.getListing(
        nftAddress: EthereumAddress(contractAddress)!,
        tokenId: tokenId
    )
    return listing.price > 0 && listing.seller != EthereumAddress.zero
}

Якщо неактивний — кнопка змінюється на «Не в продажу», без діалогу покупки.

Approve + Buy: одна або дві транзакції

При покупці за ETH — одна транзакція: buyItem(nftContract, tokenId, { value: price }).

При покупці за ERC-20 (наприклад, USDC) — дві:

  1. usdc.approve(marketplaceAddress, price) — дозволити маркетплейсу витрачати токени
  2. marketplace.buyItem(nftContract, tokenId) — безпосередньо покупка

Показувати це як єдиний потік: «Крок 1 з 2: Дозволити списання USDC» → «Крок 2 з 2: Підтвердити покупку». Прогресс-індикатор, пояснення кожного кроку.

Оптимізація: використовувати permit (EIP-2612) якщо токен підтримує. Це об'єднує approve та buy в одну транзакцію через off-chain підпис.

Очікування підтвердження

Після відправки транзакції — не блокуй екран. Показуй:

  • TransactionHash як посилання на Explorer (Etherscan, Polygonscan)
  • Індикатор «Очікування підтвердження» з можливістю піти
  • Push при отриманні N підтверджень (зазвичай 1–3)
// Android — очікування підтвердження з таймаутом
suspend fun waitForReceipt(txHash: String, timeoutMs: Long = 120_000): TransactionReceipt? {
    val deadline = System.currentTimeMillis() + timeoutMs
    while (System.currentTimeMillis() < deadline) {
        val receipt = web3j.ethGetTransactionReceipt(txHash).send().transactionReceipt
        if (receipt.isPresent) return receipt.get()
        delay(3_000)
    }
    return null
}

Якщо receipt.status == "0x0" — транзакція завершилась з ошибкою (revert). Потрібно декодувати причину через debug_traceTransaction або перевіріти відомі помилки смарт-контракту.

Типові помилки та їх обробка

Помилка Причина Рішення UI
execution reverted: Not listed NFT знят з продажу «NFT більше не продається»
execution reverted: Price mismatch Ціна змінилась Показати актуальну ціну, запропонувати оновити
insufficient funds Не хватає ETH на газ «Поповніть гаманець для оплати комісії»
Transaction timeout Congestion мережі Запропонувати прискорити транзакцію (increase gas price)

Часовий графік: 3–5 днів: перевірка листингу, flow approve+buy, очікування підтвердження з push, обробка reverts.