Я пытаюсь создать биткойн-платеж в своем проекте IOS . Я использую быстрый язык. Я ищу эту тему на множестве сайтов, ютубе, переполнении стека. но я просто получаю темы, связанные с HTTP-запросами. У кого-нибудь есть решение? Маякни мне...
Core Bitcoin — это библиотека для iOS, написанная на Objective-C. Я работал с ним в Swift, используя заголовок моста.
Я сам написал несколько классов Swift в своем экспериментальном/образовательном кошельке для создания адресов, ключей и транзакций, но я бы не рекомендовал его использовать ни для чего. Не стесняйтесь взглянуть и посмотреть, найдете ли вы что-нибудь интересное или что-то, чему вы могли бы научиться.
Я предлагаю вам использовать платежный API BitPay, используя Swift URLRequest. См. этот ответ и этот ответ для документации Swift и эту веб -страницу для документации API BitPay.
Обратите внимание, что если ваше приложение использует платежную систему Биткойн, ваше приложение может не понравиться Apple .
BitcoinKit — это Swift SDK, предлагающий реализацию биткойн-кошелька. Это полная реализация узла SPV, включая кошелек creation
, restore
транзакции и synchro with network
т . д . Также посмотрите на BitcoinKit на CocoaPods .sending
receiving
Вот фрагмент кода, показывающий, как это выглядит:
import UIKit
import BitcoinKit
class ViewController: UIViewController {
@IBOutlet private weak var qrCodeImageView: UIImageView!
@IBOutlet private weak var addressLabel: UILabel!
@IBOutlet private weak var balanceLabel: UILabel!
@IBOutlet private weak var destinationAddressTextField: UITextField!
private var wallet: Wallet? = Wallet()
override func viewDidLoad() {
super.viewDidLoad()
self.createWalletIfNeeded()
self.updateLabels()
}
func createWalletIfNeeded() {
if wallet == nil {
let privateKey = PrivateKey(network: .testnetBCH)
wallet = Wallet(privateKey: privateKey)
wallet?.save()
}
}
func updateLabels() {
qrCodeImageView.image = wallet?.address.qrImage()
addressLabel.text = wallet?.address.cashaddr
if let balance = wallet?.balance() {
balanceLabel.text = "Balance : \(balance) satoshi"
}
}
func updateBalance() {
wallet?.reloadBalance(completion: { [weak self] (utxos) in
DispatchQueue.main.async { self?.updateLabels() }
})
}
@IBAction func didTapReloadBalanceButton(_ sender: UIButton) {
updateBalance()
}
@IBAction func didTapSendButton(_ sender: UIButton) {
guard let addressString = destinationAddressTextField.text
else { return }
do {
let address: BitcoinAddress = try AddressFactory.create(addressString)
try wallet?.send(to: address, amount: 10000, completion: { [weak self] (response) in
print(response ?? "")
self?.updateBalance()
})
} catch {
print(error)
}
}
}