Jak začít přijímat kryptoplatby ve vašem internetovém obchodě?

accept crypto bitcoin usdt on website

Začněte přijímat kryptoměny na svém webu za 5 minut s Mitilena Payprocessing company for accepting cryptocurrencies on the site

1. Zaregistrujte se v našem systému, registrace je okamžitá, není potřeba žádné potvrzení.
2. Připojte svůj obchod přes API nebo WordPress Woocommerce plugin.
3. Začněte přijímat platby za své zboží v kryptoměně!
4. Vybírejte kryptoměnu do jakékoli své peněženky bez jakýchkoli omezení.

 

Naše funkce pro přijímání kryptoměn:
  • Rychlá registrace
  • Připojte se za 5 minut kdykoli, sedm dní v týdnuPodpora USDT na třech blockchainech (ERC20 Ethereum, TRC20 Tron, BEP20 Binance Smart Chain)
  • Připravený plugin pro WooCommerce (WordPress)
  • Provize za prvních 90 dní je 0 %, poté 0,8 %

V současné době podporujeme následující kryptoměny: USDT, VMT, APFC.
Na požádání můžeme přidat kryptoměnu, kterou potřebujete.

Trochu podrobněji:

  1. Když se uživatel rozhodne platit kryptoměnami v nákupním košíku, je přesměrován na stránku našeho systému pro placení kryptoměnami.
  2. Proces tvorby ceny je následující: náklady na celou objednávku se převedou na USD a poté na kryptoměnu. Sazbu vypočítává oficiální centrální banka vaší země bez provize.
  3. Platby v kryptoměně USDT jsou velmi rychlé, cca 3 sekundy. Po zaplacení mu platební stránka uživatele signalizuje, že platba proběhla úspěšně. Vy jako majitel internetového obchodu obdržíte e-mail, že platba proběhla úspěšně.
  4. Z našeho systému můžete kdykoli vybrat kryptoměnu na jakoukoli jinou adresu. Doporučujeme vám stáhnout se do vaší studené peněženky v naší peněžence.

F.A.Q.

Jak jsou platby sledovány?

Platby jsou sledovány podle našeho unikátního systému, a to tak, že ke každé platbě jsou přidávána jedinečná čísla, která přímo neovlivňují cenu, ale umožňují platbu identifikovat, a co je důležitější, umožňují vám ušetřit na vybírání všech plateb později na 1 peněžence.

Jak ušetřím s vaším systémem sledování plateb?

Obvykle při platbě na internetu prostřednictvím kryptoměny klient vždy obdrží novou adresu pro platbu. Každá faktura má novou platební adresu. To znamená, že pokud máte 1000 objednávek denně, vygeneruje se vám 1000 adres a 1000 adres obdrží platbu. Abyste mohli shromáždit všechny platby později v jedné peněžence, budete muset zaplatit 1000násobek provize, i když vložíte mnoho adres do jedné transakce, bude to velmi drahé. Zkrátka 1000 transakcí = 1000 poplatků (například jeden dolar za transakci). To výrazně zvyšuje náklady na tento způsob platby. U nás díky unikátní technologii a tedy rozdílným částkám za jednu miliontinu dolaru nasbíráme 1000 plateb na jednu adresu a teprve poté změníme. Ukazuje se, že úspory na provizích jsou 1000krát.

Jaké další výhody?

Máme nejrychlejší systém na USDT, platba trvá několik sekund, prvních pár bloků a stav je Úspěch. Díky použití stablecoinů je menší volatilita na směnném kurzu, což umožňuje používat kryptoměnu jako běžný platební nástroj s minimálními riziky, ale s velmi dobrou anonymitou, i když ji nepotřebujete.

Jak pak vybrat nasbíranou kryptoměnu?

Vyberte si libovolnou adresu ze své horké peněženky, zaplaťte provizi 1 USDT a odešlete.

Musím ověřit obchod nebo společnost, abych mohl začít?

V tuto chvíli není potřeba. V budoucnu to mohou některé jurisdikce po celém světě potřebovat.

Pokud se platba nezdaří, bude možné ručně znovu odeslat platební odkaz?

Ano, můžete poslat odkaz na platbu přes jakýkoli messenger (nebo poštou). Při platbě konkrétní částky do konkrétní peněženky, bez ohledu na to, kde plátce tyto informace získal a dokonce i přes kterou peněženku třetí strany je zaplatil, objednávka automaticky obdrží stav zaplaceno.

Odesílá váš systém zákazníkovi samostatný e-mail o platbě?

V tuto chvíli neprobíhá odesílání e-mailů. E-maily vašich klientů neukládáme. Ale plánuje poslat dopis, ale opět nebudeme ukládat e-maily zákazníků.

Uchovává vaše platforma nějaké informace?

Ukládá váš e-mail bez dalšího vysvětlení a také anonymizovanou historii anonymizovaných transakcí, aniž by byl vázán na adresu vašeho internetového obchodu. Neukládáme ani adresu vašeho internetového obchodu.

Existují na vaší straně nějaké sledovací zařízení?

Z naší strany neexistuje žádný tracker, marketingové cookies a tak dále. AdGuard AdBlocker ukazuje hrdou 0 a my jsme na to hrdí.

Sdílí vaše platforma informace o zákaznících?

Ne a ani to neplánujeme.

Jaké fiat měny váš plugin podporuje?

Přibližně 147 světových měn, tedy téměř všechny. Pozor, kurz USDT není vždy přesně 1 dolar. Někdy je to 0,999 nebo 1,001. Nepřímo to platí i pro ostatní měny, nejprve se vezme vaše měna, např. norská koruna, převede se na americké dolary kurzem Norské národní banky a poté se USD převede na USDT průměrným kurzem tracker (coingecko nebo coinmarketcap).

Mohu do vašeho systému přidat svou vlastní kryptoměnu?

V tuto chvíli, pokud je vaše kryptoměna na blockchainu Tron a pod protokolem TRC20 (03.09.2023, přidána také možnost tokenů ERC20 Ethereum a BEP20 Binance Smart Chain), existují následující možnosti:

  1. Pouze v rámci vašeho obchodu nebo řetězce obchodů (do 10-15) můžeme přidat vaši kryptoměnu za 1990 USDT, platební odkaz, po zaplacení nám napište e-mail na adresu support@mitilena.com, uveďte přesné adresy obchodů, informace o vašem tokenu a my těmto obchodům dáme dodatečně váš coin přes API. Vaši uživatelé vám budou moci platit vaší vlastní kryptoměnou. Sazbu můžeme nastavit jak natvrdo, tak z otevřených zdrojů (coinmarketcap, coingecko).
  2. Pokud chcete přidat své coiny do celé naší sítě, musíte vlastnit alespoň 1 % našich akcií.

Zbytek blockchainů je na cestě, pokud nám pošlete e-mail se svým blockchainem a jak jej implementujeme, dáme vám vědět.

Náš platební systém je zaměřen na každodenní bezproblémové používání, proto v rámci celkové platby preferujeme stablecoiny. V blízké budoucnosti ale plánujeme přijmout Bitcoin a další volatilnější měny.

Pokud chcete něco upřesnit, napište na naši technickou podporu. Pozor, tech. podpora funguje pouze pro Premium uživatele, když se stanete prémiovým uživatelem, získáte možnost stáhnout si aplikaci pro podepisování transakcí offline a další výhody. Cena od 2 $ měsíčně. Vyzkoušejte také náš super bezpečný offline systém generování soukromých klíčů , abyste si byli jisti, že soukromý klíč vaší peněženky patří pouze vám. No a naše peněženka, kde můžete používat svou kryptoměnu, aniž byste kamkoli posílali svůj soukromý klíč, ale měli ho na svém počítači nebo flash disku.

 

Pokyny pro připojení API pro vývojáře

  1. V našem systému v sekci Nastavenímusíte získat API klíč. Registrace trvá přibližně 5 sekund. Prvotní kontrola a potvrzení vašeho obchodu není nutné. Můžete okamžitě začít přijímat kryptoměnu a okamžitě ji vybrat.
  2. Když je objednávka zadána ve vašem internetovém obchodě a celková cena objednávky je z vaší strany připravena, vytvoříte objekt JSON, který odešlete na náš server s požadavkem POST.
  3. Vaši případnou žádost o platbu zaevidujeme, jako odpověď Vám zašleme naše interní číslo objednávky a odkaz k platbě.
  4. Vy přesměrujete uživatele na tuto platební stránku, on zaplatí, je automaticky přesměrován zpět na váš web.
  5. Kontaktujeme váš web se skrytým požadavkem a sdělíme vám, že objednávka je zaplacena (to se děje přes tzv. webhook). Objednávku vložíte do své databáze jako zaplacenou (automaticky) a poté je pro vás proces standardní, jako každá jiná placená objednávka.

Pokud je váš internetový obchod poháněn WordPressem (WooCommerce), pak nemusíte nic programovat, máme připravený plugin pro přijímání kryptoměny, následujte odkaz pro návod a samotný plugin.

Popis API:

Krok 2, vytvoření objektu JSON (příklad v JavaScriptu).

Možné hodnoty pro pole blockchain, vezměte hodnotu z uvozovek (například: tether-trc20):

'tether-erc20' (ERC20 Ethereum USDT, contract: 0xdac17f958d2ee523a2206206994597c13d831ec7)

'tether-bep20' (BEP20 Binance smart chain USDT, contract: 0x55d398326f99059ff775485246999027b3197955)

'tether-trc20' (TRC20 Tron USDT, contract: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t)

'mitilena-own' (Vanishing Mitilena, VMT token)
'apfcoin' (ERC20 Ethereum APFC, contract: 0x8eD955a2b7d2C3a17a9d05dACa95E01818f8C11e)

 

let createPaymentObj =
    {
        userSecret: 'your_API_key', // required
        userPaymentId: 'your_payment_id_usually_order_id', // required
        blockchain: 'tether-trc20', // required 
        fiatCode: '3x_ISO_code_of_your_fiat_currency_for example_EUR', // required
        customerEmail: 'customer_mail', // required

        fiatAmount: 'digit_amount_in_fiat_currency_for_example_100', // number, required
        userProductId: 'your_product_id_if_any', // not required
        language: 'two_digit_ISO_language_code', // default en, not required [available: en, cz, ru, tr, my, hr, si, ar, swa] - the rest will be an error
        // redirectUrl_yours: 'thank_you_page or success_page',
        redirectUrl_yours: 'url_on_your_site_where_to_send_user_after_successful_payment', // not required, but very desirable
        webHookPostUrl_yours: 'url_on_your_site_where_the_hidden_POST_request_will_go_on_successful_payment,' // required
    }

Do hlaviček požadavku je také potřeba vložit váš klíč API: ‚mitilena-signature‘: ‚your_api_key‘
Vypadá to nějak takto:

headers: {
     'Content-Type': 'application/json',
     accept: 'application/json',
     'mitilena-signature': 'your_key',
}

A pošlete jej jako POST požadavek na adresu:
https://mitilena.com/api/generatePayment

Pokud bylo vytvoření faktury úspěšné, odpověď serveru bude s kódem 200 a odpověď bude obsahovat objekt JSON, například něco takového:
Z této odpovědi potřebujete pouze 2 pole, fakturační číslo a platební stránka. Musíte odeslat (přesměrovat) uživatele na platební stránku na web Mitilena Pay [pole paymentPage]!

{
  usdtOverAmount: '1.580437',
  invoiceId: 'auto-e80099-ef456c-e0de42',
  invoiceVs: '0437',
  fiatAmount: '1.450',
  fiatCurrency: 'EUR',
  rateLocalCurrencyToNeededCrypto: '0.917',
  rateNeededCryptoToUSD: '0.99959700',
  isTrc20: 1,
isErc20: 0,
isBep20: 0, whenInit: '2023-08-22T11:30:05.000Z', contractAddress: 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', customerEmail: 'email_customer@email.com', productId: 85, expiresAt: '2023-09-05T11:30:05.000Z', blockchainHash: null, cryptoShortCode: 'USDT', cryptoValue: '1.580437', fiatValue: '1.450', receivedOnAddress: 'TRHpcBugcdEdD6BdW6k1Grtof6LBvRGWWJ', txId: 'auto-e80099-ef456c-e0de42', fiatShortCode: 'EUR', wasPaid: null, redirectUrl: 'https://google.com', paymentPage: 'https://mitilena.com/pay/auto-e80099-ef456c-e0de42/fast/' }

Pokud dojde k chybě, odpověď serveru bude s kódem 400 a odpověď bude obsahovat řetězec, text chyby.
Životnost takového odkazu je 14 dní. Existují plány, které umožní zvolit dobu životnosti odkazu.

Příklady JavaScriptu (node.js version 16.8)
Request:
const https = require('https');
const url = require('url');

const data = JSON.stringify({
    userSecret: '',
    userPaymentId: 'userPaymentdId111',
    blockchain: 'tether-trc20',
    fiatCode: 'EUR',
    customerEmail: 'email_customer@email.com',

    fiatAmount: 1.45,
    userProductId: 'new_someGoodsOk',
    language: 'en', // default en, not neccessary
    // redirectUrl_yours: 'https://google.com',
    redirectUrl_yours: 'https://google.com',
    webHookPostUrl_yours: 'https://mitilena.com/mi_webhook/'
});

const myURL = url.parse('https://mitilena.com/api/generatePayment');

const options = {
    hostname: myURL.hostname,
    port: myURL.port,
    path: myURL.pathname,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        accept: 'application/json',
        'mitilena-signature': '',
    },
};

requestAsync(options, data)
    .then(dataFObj => {
        if (dataFObj.statusCode === 200) {
            let tokensObj = JSON.parse(dataFObj.dataRaw);
            console.log('success:', tokensObj)
        } else {
            console.log('error dataFObj', dataFObj);
            throw new Error('some errror in postToWebHook ' + dataFObj.dataRaw);
        }
    })
    .catch(e => {
        console.log('error request:', e)
    })


function requestAsync(optionsArr, dataToPost = false) {
    return new Promise((resolve, reject) => {
        const req = https.request(optionsArr, (resp) => {
            // console.log(`statusCode: ${resp.statusCode}`);
            let dataF = '';
            // A chunk of data has been received.
            resp.on('data', (chunk) => {
                dataF += chunk;
            });

            resp.on('end', () => {
                resolve({statusCode: resp.statusCode, dataRaw: dataF});
            }).on('error', (err) => {
                console.log('Error: ' + err);
                reject(err);
            });
        });

        if (dataToPost) {
            req.write(dataToPost);
        }

        req.end();
    });
}

Zdá se, že modul url v Node.js výše verze 16 změnil syntaxi, pokud něco, najděte si informace k tomuto tématu nebo zadejte adresu a cestu ručně.

Příklady v PHP a WordPress:
Dotaz pomocí funkce WordPress wp_remote_post(), podívejte se na čistou funkci PHP, bude to vypadat nějak takto:

<?php
$request_body = [
    'userSecret' => $this->mitilenaToken,
    'userPaymentId' => $order->id,    
  'blockchain' => 'tether-trc20', 'fiatCode' => $order->currency,    
  'customerEmail' => $order->get_billing_email(), 'fiatAmount' => $order->get_total(), 'userProductId' => $orderids, 'language' => 'en', // default en, not neccessary 'redirectUrl_yours' => $order->get_checkout_order_received_url(), 'webHookPostUrl_yours' => 'https://mywebsite.com/post-handler.php' ]; $request_headers = [ 'content-type' => 'application/json', 'mitilena-signature' => $this->mitilenaToken, ]; $args = [ 'method' => 'POST', 'httpversion' => '1.0', 'timeout' => 90, 'headers' => $request_headers, 'body' => '' ]; $environment_url = 'https://mitilena.com/api/generatePayment/'; $result = wp_remote_post($environment_url, array( 'method' => 'POST', 'headers' => $request_headers, 'timeout' => 60, // added 'redirection' => 5, // added 'blocking' => true, // added 'httpversion' => '1.0', 'sslverify' => false, 'body' => json_encode($request_body)) ); $fullObj = json_decode($result['body']); if (isset($result['response']) && isset($result['response']['code']) && $result['response']['code'] != 200) { $mi__err_message = 'Unknown error'; if (isset($result['body'])) { $mi__err_message = 'Error: ' . $result['body']; } // error handling + exit exit; } if (!isset($fullObj->paymentPage)) { http_response_code(400); // Bad Request echo "Error: No payment page specified"; exit; } $paymentPage = $fullObj->paymentPage; if (strlen($paymentPage) < 5) { http_response_code(400); // Bad Request echo "Error: payment page is too short."; exit; } ?>

Krok 5, vytvoření obslužného programu WebHook na straně vašeho webu (serveru):

Na příkladu Node.js 16.8 verze a Express.js 4 verze (JavaScript)
const bodyParser = require('body-parser');
const Big = require('big.js')
let endpointSecret = 'copy of the api key value'

// an object called statusObj arrives
app.post('/mi_webhook/', bodyParser.json(), (request, response) => {

    try {
        let eventObj = request.body;
        const signature = request.headers['mitilena-signature'];

        console.log({eventObj});
// compare the incoming secret key with your real one
        if (signature === endpointSecret) {
            if (!eventObj.statusObj) {
                return response.status(400).send('Error, no object.');
            }

            let hookObj = eventObj.statusObj;

            if (
                typeof hookObj.mitilenaInvoiceId === 'undefined' ||
                typeof hookObj.yourPaymentId === 'undefined' ||
                typeof hookObj.yourProductName === 'undefined' ||
                typeof hookObj.yourProductId === 'undefined' ||
                typeof hookObj.secretKey === 'undefined' ||
                typeof hookObj.stableCoinAmount === 'undefined' ||
                typeof hookObj.stableCoinSymbol === 'undefined' ||
                typeof hookObj.stableCoinBlockchain === 'undefined' ||
                typeof hookObj.localCurrencyAmount === 'undefined' ||
                typeof hookObj.localCurrencyCode === 'undefined' ||
                typeof hookObj.wasPaid === 'undefined' ||
                typeof hookObj.blockchainHash === 'undefined'
            ) {
                return response.status(400).send('Error, incomplete object.');
            }

            if (hookObj.wasPaid === true) {
                let centsAmount = Big(hookObj.localCurrencyAmount).times(Big(100)).round(0).toNumber();

// put the order in your database as paid and return the status code 200
// this is an example of our code, yours may look different
                paymentsModel
                    .completeUserPayment(hookObj.mitilenaInvoiceId, centsAmount)
                    .then((okString) => {
                        return response.status(200).send('all good Mitilena token');
                    })
                    .catch((e) => {
                        console.log('err in completeUserCardPayment', e.message);
                        return response.status(400).send('error, contact support');
                    });
            } else {
                return response.status(400).send('invoice was not paid');
            }
        } else {
            return response.status(400).send('bad Mitilena token');
        }
    } catch (e) {
        console.log('webhook err:', e.message);
        return response.status(400).send('bad request, error');
    }
});
Použití příkladu PHP:

Vytvořte soubor handleru a umístěte jej na svůj webový server (stránku), aby byl přístupný zvenčí, tedy pokud napíšete úplnou cestu k souboru, aby se otevřel, například https://youwebsite.com/webhook.php (toto je příklad, můžete to udělat jinak, přes směrování atd.).
Jak je uvedeno výše, tuto adresu uveďte v objektu, ve kterém vytváříte platební odkaz, tzn
{….
webHookPostUrl_yours: ‚https://youwebsite.com/webhook.php‘
…}
File contents:

<?php
$mi__jsonData = file_get_contents('php://input');
if (!$mi__jsonData) {
    http_response_code(400); // Bad Request
    echo 'bad input data';
    exit;
}
// Decode the JSON data into a PHP associative array
$mitilena_data = json_decode($mi__jsonData, true);


// Check if decoding was successful
if ($mitilena_data !== null && isset($mitilena_data['statusObj'])) {
    $mitilena_data = $mitilena_data['statusObj'];

    if (!isset($mitilena_data['secretKey'])) {
        http_response_code(400); // Bad Request
        echo "Error: Api key of Mitilena (Mitilena Token) is not specified. We can't verify if the request is genuine. Cancellation of a transaction.";
        exit;
    }
    $mitilenaToken = $mitilena_data['secretKey'];

    // compare your real API key with the one you received
    $realMitilenaToken = 'your_api_key'


    if ($mitilenaToken != $realMitilenaToken) {
        http_response_code(400); // Bad Request
        echo "Error: API token does not match. The website owner must specify the correct Api Mitilena token.";
        exit;
    }


    if (!isset($mitilena_data['yourPaymentId'])) {
        http_response_code(400); // Bad Request
        echo "Error: No payment id specified";
        exit;
    }
    $mi__paymentId = $mitilena_data['yourPaymentId'];

    if (strlen($mi__paymentId) < 1) {
        http_response_code(400); // Bad Request
        echo "Error: too short payment id.";
        exit;
    }
    
    function mi__pay_escapeString($var)
    {
        $var = stripslashes($var);
        $var = htmlentities($var);
        $var = strip_tags($var);
        return $var;
    }

    // yourPaymentId
    try {
        $mi__order = '';  // search your database for this order, mi__pay_escapeString($mi__paymentId)
    } catch (Throwable $e) {
        http_response_code(400); // Bad Request
        echo "Error: wrong payment id (order id). {yourPaymentId: \"\"}";
        exit;
    }

    if (!isset($mitilena_data['wasPaid'])) {
        http_response_code(400); // Bad Request
        echo "Error: No payment status specified";
        exit;
    }
    $mi__wasPaid = $mitilena_data['wasPaid'];


    if ($mi__wasPaid == true) {

        $blockchainHash = '';
        if (isset($mitilena_data['blockchainHash'])) {
            $blockchainHash = mi__pay_escapeString($mitilena_data['blockchainHash']);
        }

        // set the order as paid in your database
        // reduce inventory if required
        // send the user an email if required

        echo 'success';
    } else {
        echo 'unpaid status received';
    }
 } else {

    // JSON decoding failed
    http_response_code(400); // Bad Request
    echo "Invalid JSON data";
}

exit;
?>

To je vše, pokud máte nějaké dotazy, ptejte se v komentářích.

Nemáte vývojáře, který by to za vás implementoval? Napište nám na support@mitilena.com, uděláme vám komerční návrh práce vývojáře na propojení kryptoplateb.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *