Skip to content

SandroMachado/BitcoinPaymentURISwift

Repository files navigation

BitcoinPaymentURISwift

Build Status Carthage Compatible

BitcoinPaymentURISwift is an open source library to handle the Bitcoin payment URI based on the BIT 21. The purpose of this library is to provide a simpler way to the developers to integrate in their applications support for this URI Scheme to easily make payments.

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate BitcoinPaymentURISwift into your Xcode project using Carthage, specify it in your Cartfile:

github "SandroMachado/BitcoinPaymentURISwift" ~> 1.0.0

Run carthage update to build the framework and drag the built BitcoinPaymentURI.framework into your Xcode project.

Usage

Code

Parse the URI bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz.

guard let bpuri = BitcoinPaymentURI.parse("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz") else {
    return
}

bpuri.address? \\ 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W
bpuri.amount? \\ 50
bpuri.label? \\ "Luke-Jr"
bpuri.message? \\ "Donation for project xyz"
bpuri.parameters?.count \\ 0

Generate the following URI bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Luke-Jr&foo=bar&amount=50.0&message=Donation%20for%20project%20xyz&req-fiz=biz

let bpuri: BitcoinPaymentURI = BitcoinPaymentURI(build: {
            $0.address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"
            $0.amount = 50.0
            $0.label = "Luke-Jr"
            $0.message = "Donation for project xyz"

            var newParameters: [String: Parameter] = [:]

            newParameters["foo"] = Parameter(value: "bar", required: false)
            newParameters["fiz"] = Parameter(value: "biz", required: true)

            $0.parameters = newParameters
        })