Как я могу использовать метод оплаты биткойн через Swift для моего проекта IOS?

Я пытаюсь создать биткойн-платеж в своем проекте IOS . Я использую быстрый язык. Я ищу эту тему на множестве сайтов, ютубе, переполнении стека. но я просто получаю темы, связанные с HTTP-запросами. У кого-нибудь есть решение? Маякни мне...

Ответы (3)

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 .sendingreceiving

введите описание изображения здесь

Вот фрагмент кода, показывающий, как это выглядит:

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)
        }
    }
}