Operations (buy/sell/withdraw crypto)
Available operations
Buying crypto
Buy object needs to be obtained first to start the process of buying:
val mercuryo: Mercuryo = Mercuryo.create(...)  
val buy: Buy = mercuryo.operations.buyvar mercuryoSDK: IMercuryo = IMercuryo(isDebug: true, baseHost: "HOST_HERE")
var wallet = mercuryoSDK.operations.buyGetting token for buying
Before buying, you need to get a unique token designated to this specific operation, for this you can use the .convert method:
buy.convert(fromCurrency: String, toCurrency: String, amount: String) : ConverterResultvar token: String?
buy.convert(fromCurrency: "BTC", toCurrency: "EUR", amount: "1") { converterResult, error in 
    token = converterResult?.token
    //do some magic here
}Buying
After you obtained a buying token you can call buy method passing parameters of operation.
buy.commit(cardId: String, cvv: String, buyToken: String, redirectUrl: String): TransactionStatusvar transactionID: String?
buy.commit(cardId: "CARD_ID HERE", cvv: "CARD_CVV HERE", buyToken: token, redirectUrl: "REDIRECT_URL HERE") { transactionStatus, error in 
    transactionID = transactionStatus?.id
    //do some magic here
}Parameter
Description
cardId
ID of card in Mercuryo
cvv
CVV code of card
buyToken
Buying token buy.convert(...)
redirectUrl
URL where user will be redirected after operation. Example: http://my.mercuryo.io/orders?invoice={invoice_id}
Confirmation of operation
To finalize an operation user may need to confirm ownership of bank account by providing a descriptor sent as a part of transaction.
buy.verifyDescriptor(transactionId: String, code: String): TransactionStatusbuy.verifyDescriptor(transactionId: transactionID, code: "TRANSACTION_CODE HERE") { transactionStatus, error in 
    //do some magic here
}Parameter
Description
transactionId
ID of transaction obtained after buy.commit(...)
code
Descriptor code
Getting rate for buying
User may want to know the rate of fiat-crypto conversion which may be obtained using the following method:
buy.rate(fromCurrency: String, toCurrency: String): Ratebuy.getRate(fromCurrency: "BTC", toCurrency: "EUR") { rate, error in 
    //do soma magic here
}Selling process
Sell object needs to be obtained first to start the process of buying:
val mercuryo: Mercuryo = Mercuryo.create(...)  
val sell: Sell = mercuryo.operations.sellvar mercuryoSDK: IMercuryo = IMercuryo(isDebug: true, baseHost: "HOST_HERE")
var wallet = mercuryoSDK.operations.sellGetting token for selling
Before selling, you need to get a unique token designated to this specific operation, for this you can use the .convert method:
sell.convert(fromCurrency: String, toCurrency: String, amount: String) : ConverterResultvar token: String?
sell.convert(fromCurrency: "BTC", toCurrency: "EUR", amount: "1") { converterResult, error in 
    token = converterResult?.token
    //do some magic here
}Selling
To sell you need to get token for selling first call method as shown below.
sell.commit(cardId: String, sellToken: String): TransactionStatussell.commit(cardId: "CARD_ID HERE", sellToken: token) { transactionStatus, error in 
    //do some magic here
}Getting exchange rate for selling
Rate includes a fee.
sell.rate(fromCurrency: String, toCurrency: String): Ratesell.getRate(fromCurrency: "BTC", toCurrency: "EUR") { rate, error in 
    //do soma magic here
}Withdrawal to another wallet
Withdraw object needs to be obtained first to start the process of buying:
val mercuryo: Mercuryo = Mercuryo.create(...)  
val withdraw: Withdraw = mercuryo.operations.withdrawvar mercuryoSDK: IMercuryo = IMercuryo(isDebug: true, baseHost: "HOST_HERE")
var wallet = mercuryoSDK.operations.buyCurrency converter
Before sending crypto it may be beneficial for user to know how amount converts to fiat or vice versa. Mercuryo SDK provides a method for that allowing to understand transaction better.
withdraw.convert(fromCurrency: String, toCurrency: String, amount: String) : ConverterResultvar token: String?
withdraw.convert(fromCurrency: "BTC", toCurrency: "EUR", amount: "1") { converterResult, error in 
    token = converterResult?.token
    //do some magic here
}Withdrawal fees
To make withdrawal you need to obtain available blockchain fees first. In case there are no fees this method will throw an CurrencyNotSupportFeeException exception.
withdraw.getEstimateFee(currency: String, fiatCurrency: String, address: String, amount: String): EstimateWithdrawFeevar firstEstimateId: String?
withdraw.getEstimateFee(currency: "BTC", fiatCurrency: "EUR", address: "ADDRESS HERE", amount: "1") { fee, error in 
    firstEstimateId = fee?.fees.first?.id
    //do soma magic here
}Make a withdrawal
withdraw.commit(currency: String, address: String, amount: String, estimateId: String?): VerifyMetaDatavar nextStep: VerifyMetaData.NextStep?
var key: String?
withdraw.commit(currency: "BTC", address: "ADDRESS HERE", amount: "1", estimateId: firstEstimateId) { verifyData, error in 
    nextStep = verifyData?.step
    key = verifyData?.key
    //do some magic here
}Fields
Description
currency
Crypto
address
Wallet address
amount
Amount of withdrawal in crypto
estimateId
ID of estimation fee obtained on the previous step, see method withdraw.getEstimateFee
Withdrawal confirmation
User may need to confirm withdrawal using text message or email code.
withdraw.verify(next: VerifyMetaData.NextStep, key: String, code: String): TransactionStatuswithdraw.verify(next: nextStep, key: key, code: "SMS/EMAIL CODE") { transactionStatus, error in 
    //do some magic here
}Last updated
Was this helpful?