ОПааааааааааааааа107

Оааааааааааааааааааааааааааа.Бзззззззззззззззззбббзбзбззбзбзбзбз1073.
링크를 삭제합니다.

Как это работает


Обббббббзбббзбббзббб.유효 하중Рассмотрим процесс по шагам.

Бразраараараарааараа


Minter Link-эббзббббббббббббббббб.Оааафаараа-ааааааааа.Прааааазжааааааааааааааааааааааааа.
НоMinter Link,Приииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииии.Разработчики сайтов могут получать мгновенные обновление от вашего кошелька (если вы дали такое разрешение) и делать запросы на оплату и цифровую подпись сообщений. ДбэбббббббббббкаMinter Connect.

구글 브라우저 JavaScriptббббббббббббб


- 명트 링크.Библиотека, с одной стороны, позволяет получать данные о статусе расширения и данные о публичном адресе, с другой — позволяет запрашивать у пользователя разрешение на доступ к публичному адресу, криптографическую подпись и делать запросы на отправку транзакций.
аааааааааааааааааааааа-аааа1072

Minter 연결 Minter Link 결제 흐름



аааааааааааааааа1072


Создадим модели для товаров и заказов. У каждого товара буду поля price и coin , у заказа — itemId и hash .

аарръ:зааааааараара1072


С С С С С С С С С С С С С С С С С С С С С С С С С С С С С С\
Порядок действия такой:
  • проверяем наличие расширения (установлено или нет)
  • проверяем статус расширения (разблокировано или нет)
  • ааааааааааа-ааааааааааааааа
  • аааааааааааааааааа


    СфраааааааааааааitemId、чааааааааааааааааа107.

    аааааааааааааааааааа1072


    Отправим запрос в расширение, куда передадим orderId При успешной оплате получим назад хеш транзакции в блокчейне.

    다음을 수행합니다.


    Наазззззззззззззззазза,азззарааа-ааааааааааааааааааа.
    У каждой транзакции мы проверим orderId и ищем там наш paymentData . ааааааааааааа, 유효 하중, аааааааа.

    Примеры кода


    HTML
    <!-- Расширение не установлено -->
    <p if="!isMinterLinkInstalled">Minter Link is not installed</p>
    
    <!-- Расширение заблокировано -->
    <p if="isMinterLinkInstalled && !isMinterLinkUnlocked">Minter Link is locked</p>
    
    <button onclick="pay(1)" if="isMinterLinkInstalled && isMinterLinkUnlocked">Purchase</button>
    
    JavaScript
    import MinterConnect, { MinterLinkObservableProps } from 'minter-connect'
    
    let isMinterLinkInstalled = false
    let isMinterLinkUnlocked = false
    let minterPublicAddress = ''
    let isAuthenticated = false
    
    // Устанавливаем соединение с расширением
    const minterConnect = new MinterConnect('My awesome application')
    
    // Подписываемся на события
    minterConnect.subscribe(MinterLinkObservableProps.IsInstalled, (value) => {
      isMinterLinkInstalled = value
    })
    
    minterConnect.subscribe(MinterLinkObservableProps.IsUnlocked, (value) => {
      isMinterLinkUnlocked = value
    })
    
    async function pay (itemId) {
      if (!isMinterLinkInstalled) return
      if (!isMinterLinkUnlocked) return
    
      try {
        const orderId = await api.makeOrder(itemId)
        const paymentData = {
          address: 'Mx...',          // наш адрес для оплаты
          amount: '999',             // цена
          coin: 'BIP',               // монета
          payload: response.data.id  // orderId
        }
    
        await minterConnect.paymentRequest(paymentData)
      } catch (e) {
        console.error(e)
      }
    }
    
    노드JS 회사
    async function makeOrder (itemId) {
      const item = await getItemById(itemId)
      const order = new Order({
        itemId,
        price: item.price,
        coin: item.coin
      })
    
      order.save()
    
      return order.id
    }
    
    // Функция, которая будет перебирать транзакции из блокчейна
    async function handleTransaction (transaction) {
      // Тип транзакции должен быть Send
      if (transcation.type !== '0x01') return
      // Адресат должен быть нашим кошельком
      if (transcation.data.to !== 'Mx...') return
    
      const orderId = transaction.payload.trim()
      const order = await getOrderById(orderId)
    
      // Несуществующий заказ
      if (!order) return
      // Заказ уже оплачен
      if (order.hash) return
      // Сумма не совпадает
      if (order.price !== tx.data.value) return
      // Монета не совпадает
      if (order.coin !== tx.data.coin) return
    
      // Все хорошо, это наш заказ!
      order.hash = transaction.hash
      order.save()
    
      // Дальше ваша бизнес логика: отправляем письмо об успешной оплате, начисляем бонусные баллы, уведомляем frontend о смене статуса заказа и т.д.
    }
    
    async function getItemById (itemId) {
      return db.getItemById(itemId)
    }
    
    async function getOrderById (orderId) {
      return db.getOrderById(orderId)
    }
    

    Плюсы и минусы


    Это просто, удобно и безопасно.
  • Повышенная безопасность. Приватный ключ кошелька хранится в расширении пользователя локально в зашифрованном виде. Атаковать напрямую локальное хранилище очень сложно, у каждого расширения свое изолированное окружение и даже в случае утечки зашифрованной строки с приватным ключом потребуется очень много ресурсов,чбббббббббббббббббббббббб.
  • .Вместо того, чтобы вводить данные карты или копировать данные заказа и затем вводить его у себя в кошельке, пользователю нужно нажать всего одну кнопку. Не нужно ничего запоминать, все "ключи"лежат у него прямо в браузере.
  • Конфиденциальность. Все хранится локально, никакие данные не передаются третьим лицам.
  • Ваааааааааааа,чаааааааааы.Взамен пользователи получат удобный кошелек и возможность платить в одни клик.
    Вы же, как владелец сайта, получите список адресов, который можно использовать для построения базы лояльных пользователей. Поскольку вы точно знаете с какого адреса была произведена оплата, вы можете использовать эти адреса для выплаты кешбека или предоставления персональных скидок в будущем.
    내가 할게, 내가 할게, 내가 할게, 내가 할게.
    От минусов никуда не деться, серебряной пули не существует.
  • ОТПозоаоаоааоааааааааааа.ааааааааааааааааа-ааааааа-аааааааа.
  • Потребуется потратить некоторое время на доработку кода. Упрощенный пример выглядит просто, но дьявол кроется в деталях. Если у вас уже есть работающий сложный сайт, интеграция нового способа оплаты может потребовать усилий и времени.
  • Это не работает на мобильных устройствах. Популярные мобильные браузеры не поддерживают установку расширений. Есть несколько экспериментальных браузеров, которые это умеют, но ими пользуются далеко не все, так что об этом лучше пока забыть.
  • Спасибо за внимание.
  • Minter Link

  • Minter Connect | Minter Link Playground
  • Читайте также: .

    좋은 웹페이지 즐겨찾기