Перейти к содержанию

Пишем "страницу поддержки" с Бесплатной оплатой Биткоинами


Apirone

Рекомендуемые сообщения

Слово "пожертвование" не всегда вызывает положительные эмоции, ведь оно происходит от слова "жертвовать" или “пожертвовать” чем либо.

 

Выражение "поддержать", "помочь" или "стать частью" гораздо благозвучнее и приятнее. Особенно если в ответ плательщик получает рекламную ссылку или рекламное упоминание о себе. Яркий пример, это Patreon на сайте https://coin.dance/. Но было бы интереснее продавать не одинаковые размеры логотипов, а всю рекламную площадь, в зависимости от суммы оплаты. Скажем квадрат 1х1 стоит 10.000 Сатоши. Кому то хватит реферального пикселя для поисковика, а кто то захочет большой анимированный логотип.

 

coin_dance.png

 

Итак, приступаем.
 

Мы уже писали о новом Биткоин процессинге на форуме. Все входящие транзакции обрабатываются Бесплатно, а значит это идеально подходит для сбора платежей.

 

Для начала создаем Накопительный (saving) кошелек, отправляем JSON запрос на эндпоинт https://apirone.com/api/v2/btc/wallet
В ответ получаем 

{ "wallet": "8133edaa7e1c8040963159b2ef8b2d30", "type": "saving", "transfer_key": "sfZ4MmnfhXNb1RiLh7jqnFW2eZmdsYt9", "currency": "btc" }

wallet - это кошелек, на который мы будем собирать платежи и им управлять.
transfer_key - ключ, с помощью которого делаем выплаты по API

 

Пример PHP кода:

<?php
  $json_data = array ( 'type' => "saving" );
  
  $api_endpoint = "https://apirone.com/api/v2/btc/wallet";
 
  $curl = curl_init($api_endpoint);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($json_data));
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $response = curl_exec($curl);
  $http_status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  curl_close($curl);
 
  if ($http_status_code==200){
      $decoded = json_decode($response, true);
      echo "Wallet: " . $decoded["wallet"] . "<BR>";
      echo "Key: " . $decoded["transfer_key"];
  } else {
      var_dump($response);
  }
?>

 

База данных будет максимально проста и оптимизирована. В единственную таблицу мы будем записывать только оплаченные URL, ссылку на логотип и сумму с количеством подтверждений сети.

CREATE TABLE `supporters` (
  `id` int(11) NOT NULL,
  `address` varchar(34) NOT NULL,
  `logo` varchar(250) NOT NULL,
  `link` varchar(250) NOT NULL,
  `amount` int(11) NOT NULL,
  `confirmations` tinyint(4) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Индексы таблицы `supporters`
ALTER TABLE `supporters`  ADD PRIMARY KEY (`id`);

-- AUTO_INCREMENT для таблицы `supporters`
ALTER TABLE `supporters`  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

 

supporter_main_small.png

На странице оплаты нам потребуется форма с двумя текстовыми полями URL, link to logo. По нажатию на кнопки SUBMIT, оба этих поля и ссылку для получения колбэка, отправляем в JSON запросе на API эндпоинт. 


https://apirone.com/api/v2/btc/wallet/<WalletID>/address
<WalletID> - это тот идентификатор кошелька который мы получили в первом запросе.
'secret' - какой то секретный код, для защиты нашего приложения. Мы будем его сверять на странице колбэка.

 

Пример PHP кода:

<?php
  $json_data = array (
    "callback" => array(
        'url'=> 'http://example.com/callback',
        'data' => array (
            'secret' => "abrakadabra",
            'url' => "https://bits.media/",
            'logo' => "https://bits.media/local/templates/bits.media/images/bits3.png"
        )
    )
  );
  
  $wallet = "8133edaa7e1c8040963159b2ef8b2d30";
  $api_base = "https://apirone.com/api/v2/btc/wallet/". $wallet ."/address";
 
  $curl = curl_init($api_base);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($json_data));
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $http_status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  $response = curl_exec($curl);
  curl_close($curl);


  $decoded = json_decode($response, true);
  echo "Please send the payment to the following bitcoin address: " .
  $decoded["address"];
?>

В ответ на запрос, получаем новый Биткоин адрес для оплаты. Все сгенерированные адреса будут постоянно мониториться нашим сервисом, ведь клиент может оплатить сейчас, а может сделать это чуть позже.
Для удобства оплаты выводим QR код, с помощью АПИ https://apirone.com/ru/docs/get-qr-code

supporter_payment_small.png

Обработка колбэка. Callback.php


Страница колбэка нужна для обработки данных от платежного сервиса. Apirone передает адрес на который поступил платеж, сумму, транзакцию, количество подтверждений и данные которые предоставленные пользователем: secret, url, logo. Данные передаются POST запросом в формате JSON, так удобнее и безопаснее.

 

<?php
$secret = "abrakadabra";

//receive JSON data
$data = file_get_contents('php://input');

if ($data) {
    $params = json_decode($data, true);

    // проверяем наш секретный код
    if ($params["data"]["secret"] !== $secret) die();

    $url = $params["data"]["url"];
    $logo = $params["data"]["logo"];
    $input_address = $params["input_address"];
    $value_in_satoshi = $params["value"];

    //Save unconfirmed transaction and data to your Database.
    if ($params["confirmations"] == 0) {
    
        // записываем URL и LOGO в базу данных
        
    }
    
    if ($params["confirmations"] >= 3) {
        
        // обновляем количество конфирмов в базе данных
        // по завершению сделки, сообщаем серверу *ok*
        
        echo "*ok*";
    }
}
?>

Оплату за донаты от доверительных плательщиков, можно принимать по нулевому подтверждению Биткоин сети. Но если вы продаете что то дорогое и значимое, мы рекомендуем завершать сделку по 2-3 подтверждениям сети.
После завершения оплаты, в ответ серверу сообщаем *ok*. После этого колбэки по оплате прекращаются.
 

Завершение оплаты и размещение логотипа

 

supporter_payment_done_small.png

Чтобы показать клиенту о проведенной оплате, мы должны её периодически проверять. Мы будем проверять её в созданной таблице. Ведь как только платежный сервер сделает колбэк, у нас сохраняется сгенерированный адрес и ссылки в БД. С помощью Ajax JQuery запроса с периодичностью в 3 секунды, проверяем оплату в БД по идентификатору - сгенерированному биткоин адресу. Как альтернатива, можно проверять транзакцию напрямую в блокчейне, например через blockchain.info или любой другой открытый API или открытая подписка по сокету.

Именно поэтому все входящие платежи должны быть бесплатными, а не брать за это процент. Транзакции всегда можно проверить в блокчейне.

Как только мы нашли транзакцию, пишем плательщику что оплата прошла успешно и перезагружаем страницу. Теперь его логотип со ссылкой будет на сайте. Размер логотипа = сумма оплаты / 10000 Сатоши.

 


Отладка


Чтобы проверить работу колбэка без оплаты, достаточно его эмулировать cURL запросом:

 curl -X POST -H "Content-type: application/json" -d '{
  "data":
  {"url": "https://bits.media/", "logo": "https://bits.media/local/templates/bits.media/images/bits3.png", "secret": "abrakadabra"},
  "input_address": "1E2VSRsaW3Kb1gDkdRUGDo6knAKfi9iYsb",
  "confirmations": 0,
  "input_transaction_hash": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
  "value" : 100000000
}' -i http://example.com/callback.php

 

http://example.com - замените на свой ресурс. http или httpS - важный префикс для обращения колбэка.

 

Так мы отправляем запрос с "data" - данными пользователя и информацию о транзакции в формате JSON.
Вы можете поменять секретный код, ссылки, количество подтверждений, сумму и увидеть, что на это отвечает страница callback.php.

 

 

Заключение

 

Предложенный код, вы можете использовать и модифицировать как угодно. Например выставлять логотипы одного размера, а сумма оплаты это время размещения в минутах. Или сумма это занимаемая площадь экрана, а может даже клетка на шахматной доске или приоритет в списке. Возможно это перерастет в крупный проект, такой как Patreon.com и станет для вас дополнительным источником дохода.

 

Рабочий пример: https://allprivatekeys.com/become-a-supporter.php

GitHub: https://github.com/Apirone/supporter
Документация по разворачиванию проекта: https://apirone.com/ru/integrations/become-a-supporter
Документация для разработчиков: https://apirone.com/ru/docs/wallet

Ссылка на комментарий
Поделиться на другие сайты

Подобная идея на Ethereum

https://cryptopicture.com/mosaic/

cделано красиво и функционально

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • CoinMarketCap: Биткоин дрейфует у уровня поддержки $70 000

      Биткоин так и не смог достичь в понедельник, 8 апреля, нового исторического максимума и вернулся к уровням поддержки в $69 500 – $71 000. Согласно наблюдениям CoinMarketCap, отскок BTC от уровня в $72 600 и падение стоимости флагманского криптоактива в пределах 5% демонстрирует высокую степень нервозности инвесторов, реагирующих на изменения конъектуры рынка цифровых активов в преддверии ожидаемого халвинга сети Биткоина.     Отказ от штурма исторического максимума и боковое дв

      в Новости криптовалют

    • Santiment: Биткоин нащупал новый уровень поддержки

      Аналитики Santiment заметили на криторынке необычную тенденцию, которая сигнализирует о временной стабилизации стоимости биткоина на грани крупной распродажи.  Эксперты Santiment проанализировали движение биткоинов, которые оставались в бездействии 365 дней или более. 23 марта долгосрочные инвесторы переместили со своих кошельков на биржевые счета 97 737 BTC, остававшихся без движения более года. С учетом рыночных цен, долгосрочные инвесторы ввели в обращение BTC на сумму более $6,4 млрд. 

      в Новости криптовалют

    • Fairshake собрал $85 млн для поддержки дружественных к криптовалютам кандидатов в президенты США

      Проект Fairshake, который активно поддерживает лояльных к криптовалютам политиков, собрал $85 млн. Самыми крупными спонсорами стали гиганты криптоиндустрии Coinbase и Ripple. Как сообщил представитель Комитета политического действия (PAC) Джош Власто (Josh Vlasto), Coinbase внесла $24,5 млн. Генеральный директор компании Брайан Армстронг (Brian Armstrong) дополнительно передал PAC еще $1 млн. Ripple пожертвовала Fairshake $20 млн. Две венчурные компании — Andreessen Horowitzи Electric Capit

      в Новости криптовалют

    • В США собрали $78 млн для поддержки дружественных к криптовалютам кандидатов

      Представители криптоиндустрии США собрали $78 млн на поддержку кандидатов в президенты, которые заявили, что готовы поддерживать криптовалюты. Инициативу под названием Fairshake поддержали такие гиганты индустрии как Coinbase, Ark, Circle, Jump Crypto, Kraken, Ripple и другие. «Будущее криптовалют в США зависит от выборов и от принятия политики, которая поддерживает ответственные и справедливые правила для криптовалюты», — объясняют представители крупнейшей американской криптобиржи Coinb

      в Новости криптовалют

    • CoinMarketCap: Стоимость биткоина обрушилась ниже уровня поддержки из-за оттока спекулянтов

      По данным информационно-аналитической платформы CoinMarketCap, в понедельник, 18 декабря, торговля первой по капитализации криптовалютой проходит на уровне нижней границы поддержки биткоина в $41 000. В моменте рыночная стоимость ВТС падала до $40 660, что практически сводит на нет достижения предшествующего периода роста. Криптоэксперты полагают, что рынок исчерпал спекулятивный потенциал, основанный на слухах об одобрении биткоин-ETF, и возвращается к равновесию на уровне справедливой ст

      в Новости криптовалют

×
×
  • Создать...