Прием платежей в биткойнах

Особенности приема платежей в биткойнах (BTC).

Включение данной опции в настройках сервиса Merchant WebMoney позволяет начать прием платежей в единицах криптовалюты Bitcoin (BTC) от покупателей, которые могут не быть участниками системы WebMoney Transfer.

Для продавца прием таких платежей выглядит ровно таким же образом, каким осуществляется прием платежей от участников, уже имеющих WebMoney-кошелек.

При этом имеются следующие особенности:

  • Минимальная сумма принимаемого платежа в Bitcoin равна 0,001 BTC;
  • Зачисление средств на кошельки мерчанта производится после получения не менее шести подтверждений транзакции в базе данных пиринговой сети bitcoin.org;
  • Получать средства продавцы могут на WMX-, WMZ- кошельки;
  • Полученные в оплату за товары и услуги BTC принимаются на хранение Гарантом по WMX и учитываются в формате титульных знаков WMX. WMX в дальнейшем либо переводятся на X-кошелек продавца, либо на Х-кошелек обменного автомата для последующего автоматического обмена по текущему курсу с зачислением результата обмена на тот WMZ- кошелек продавца, который настроен на прием биткойнов;
  • В режиме быстрого платежа можно открывать форму оплаты биткойном (BTC) без авторизации в системе WebMoney и выбора способа оплаты;
  • Для ускорения выдачи товара (предоставления услуги) продавец имеет возможность проверить факт инициирования перевода BTC в счет оплаты и исполнить обязательства перед покупателем до прихода всех требуемых подтверждений.

Для быстрого перехода плательщика на страницу оплаты биткойном продавец должен задать параметр способа оплаты LMI_ALLOW_SDP=19.

<input type="hidden" name="LMI_ALLOW_SDP" value="19">

Добавление в форму запроса платежа приведенной выше строки позволит плательщику сразу перейти на страницу оплаты товара биткойном (BTC) минуя все предварительные шаги (авторизация, выбор способа оплаты и др.).

Обработка платежа

Ранний переход на сайт продавца

Прием платежа в BTC связан с ожиданием подтверждения btc-транзакции.

Продавец может установить для каждого X-кошелька URL для раннего перехода на сайт продавца. В этом случае переход на страницу магазина будет осуществлён сразу же после того, как btc-транзакция будет зарегистрирована сервисом btc-invoicing (т.е. не дожидаясь её подтверждений сетью bitcoin). Это может быть полезно для отображения покупателю специализированной страницы ожидания подтверждений продавца или же продавец может решить сразу предоставить товар покупателю, не дожидаясь подтверждений (или ожидая меньшего количества подтверждений). При этом возникает риск того, что транзакция так и не будет подтверждена, либо её подтверждение займёт много времени. Этот риск ложится на продавца, т.к. на его кошелёк средства поступят только после получения 6 подтверждений. Для некоторых категорий товаров (мало ликвидных и относительно дешёвых), такой подход может быть оправдан.

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

Переход покупателя будет осуществлён методом POST, в теле запроса указываются следующие значения:
- time – текущее время UTC в формате yyyyMMddHHmmss
- purse – кошелёк продавца, на который осуществляется оплата
- paymentno – номер платежа

Если в настройках кошелька для URL возврата указан так же пароль, то в тело запроса добавляется значение mac, содержащее подпись запроса, по которой можно проверить его подлинность.

Подпись вычисляется HMACSHA256 для строки time;purse;paymentNumber в кодировке UTF8.

Пример вычисления подписи на языке C#:

public string ComputeMac(string returnSecret, string purse, string paymentNumber)
{
    var encoding = Encoding.UTF8;
    var time = DateTime.UtcNow.ToString("yyyyMMddHHmmss");
    var plainString = time + ";" + purse + ";" + paymentNumber;

    string mac;
    using (var hmac = new HMACSHA256(encoding.GetBytes(returnSecret)))
    {
        var bytes = hmac.ComputeHash(encoding.GetBytes(plainString));
        mac = bytes.ToHexString(upper: true);
    }

    return mac;
}

После получения запроса продавец может либо сразу выдать покупателю товар, либо самостоятельно проверять состояние транзакции по API, и выдать товар, например, после первого подтверждения.

Предварительная проверка платежа в биткойнах (BTC).

Для проверки платежа до получения всех подтверждений продавец может сформировать запрос следующего вида.

GET https://btc-invoicing.wmtransfer.com/gate/rest/v1/invoices/%PURSE%/%PAYMENTNUMBER%

Здесь:

  • PURSE это кошелёк мерчанта,
  • PAYMENTNUMBER — номер платежа.

В ответе на данный запрос параметр "confirmations" покажет количество подтверждений, которое зафиксировано в сервисе по этой транзакции.

{"id":6555,
"createtime":"2016-10-20T14:37:18.3422735Z",
"updatetime":"2016-10-20T17:06:47.5189782Z","state":10,
"purse":"X111111111111",
"paymentno":37690111,
"purpose":"Merchant Cart:349169 (Order 52946994)",
"wmamount":52.88000000,
"address":"1BJvuEvHt...........JH6vYeqqGBUAgPt2",
"wmtranid":1379013200,
"txid":"4b3a915f6878e828e...............e4daefc83591bc3a9c89da3f36a8cf2",
"vout":1,
"confirmations":6}

Пример оплаты товаров и услуг с помощью Bitcoin (BTC) проиллюстрирован в следующей инструкции.

Доступ к API

Доступ к API включается после того, как задан пароль на странице настройки X-кошелька в личном кабинете .

См. также:
Web Merchant Interface
Merchant WebMoney Transfer
Быстрый способ настроить прием WebMoney на сайте продавца
Пример оплаты товаров и услуг через сервис Merchant WebMoney Transfer
Пример оплаты товаров и услуг биткойнами
Прием платежей в Litecoin
Прием платежей в Ethereum
Прием платежей в USDT