Jak zintegrować płatności Bitcoin w aplikacji mobilnej

Aplikacje mobilne oraz Bitcoin od zawsze były sobie bliskie. Płacenie tą wirtualną walutą za pomocą smartfonów jest proste oraz przyjemne. Powstają coraz to nowe portfele, gry i aplikacje które obsługują natychmiastowe płatności poprzez blockchain. W tym materiale przedstawię jak zintegrować jaką formę płatności w swojej aplikacji.

MAVEN

<dependency>
    <groupId>de.schildbach.wallet</groupId>
    <artifactId>integration-android</artifactId>
    <version>2.0</version>
</dependency>

GRANDLE

dependencies {
    compile 'de.schildbach.wallet:integration-android:2.0'
}

Licencja

Biblioteka Android oraz przykłady użyte w tym materiale są pod licencją Apache License Version 2.0.

Zapytanie o monety używając Bitcoin-URI (BIP21)

Przydatną będzie dokumentacja JavaDoc BitcoinIntegration.

class de.schildbach.wallet.integration.android.BitcoinIntegration

/**
 * Request specific amount of Bitcoins from user,
 * without feedback from the app.
 */
static void request(Context context, String address, long amount);

/**
 * Request specific amount of Bitcoins from user,
 * with feedback from the app.
 */    
static void requestForResult(Activity activity, int requestCode,
                             String address, long amount);

Metody dla zapytań bez podawania kwoty są również możliwe.
Poniższa formuła wysyła bitcoiny do każde aplikacji która wyda zapytanie.

action = android.intent.action.VIEW
data = bitcoin:1PZmMahjbfsTy6DsaRyfStzoWTPppWwDnZ?amount=0.1

URI jest formatowane przy pomocy BIP21.

Niektóre aplikacje podają końcowy komunikat poprzez onActivityResult() jeśli użytkownik przeszedł przez cały proces przelewu środków. Te komendy będą pomocne:

resultCode = OK|CANCELED
extras[transaction_hash] = c8a9e036ecbbe75c...

Możesz użyć tej metody aby pobrać hash transakcji:

class de.schildbach.wallet.integration.android.BitcoinIntegration

/**
 * Get transaction hash from result intent.
 */
static String transactionHashFromResult(final Intent result);

Przykładowy kod używany przy wyniku:

protected void onActivityResult(int requestCode, int resultCode, Intent result)
{
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
    {
        String txHash = BitcoinIntegration.transactionHashFromResult(result);
        if (txHash != null)
        {
            // thank you!
            // (but: no guarantees)
        }
    }
    else if (resultCode == Activity.RESULT_CANCELED)
    {
        // cancelled
    }
    else
    {
        // something went wrong
    }
}

Otrzymywanie płatności przy użyciu wiadomości (BIP70

Możesz również wprowadzić płatności poprzez wiadomości do swojej aplikacji. W skrócie oznacza to pobranie płatności z serwera i przekazanie jej do aplikacji. Musisz sam zaprojektować wiadomość ProtoBuf. Zapytania o transfer mogą być przypisane do serwera który zapewni newat lepsze zabezpieczenia jak rozwiązania bazujące na BIP21.

/**
 * Request payment from user, without feedback from the app.
 */
static void request(Context context, byte[] paymentRequest);

/**
 * Request payment from user, with feedback from the app.
 */
static void requestForResult
(Activity activity, int requestCode, byte[] paymentRequest)

Apps will return a payment message in the result intent. Use this method to retrieve it:
Aplikacje mogą zawrócić wiadomość z przelewem. Użyj tej metody aby ją odzyskać:

/**
 * Get BIP70 payment message from result intent.
 */
static byte[] paymentFromResult(Intent result)

Jeśli prześlesz tę wiadomość na swój serwer, zostanie ona szybciej potwierdzona. Kolejny przykład kodu który możesz użyć:

protected void onActivityResult(int requestCode, int resultCode, Intent result)
{
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
    {
        byte[] paymentMessage = BitcoinIntegration.paymentFromResult(result);
        if (paymentMessage != null)
        {
            // thank you!
            // (but: no guarantees)
        }
    }
    else if (resultCode == Activity.RESULT_CANCELED)
    {
        // cancelled
    }
    else
    {
        // something went wrong
    }
}

Widomości są w formacie BIP70.


źródło:Andreas Schildbach Github


 

network-of-people-1000x520

Model Biznesowy Zdecentralizowanej Aplikacji

About The Author

if you are the smartest person in the room you are in the wrong room. Blockchain skaluje zaufanie, zróbmy z tym coś fajnego.

Related posts

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *