Integrate Binance Pay with your App
Binance Pay is a contactless, borderless and secure cryptocurrency payment technology designed by Binance. Binance Pay allows Binance customer to pay and get paid in crypto from your friends and family worldwide.
To begin, register your application with Binance Accounts, and get the SDK
. For now, please contact us.
Signature Rule (For server engineer)
Binance Pay backend will check the signature against pay param, including "certSn", "merchantId", "noncestr", "prepayId" and "timeStamp".
Attributes | Type | Required | Limitation | Description |
---|---|---|---|---|
certSn | string | Y | - | API identity key issued by Binance payment system |
merchantId | long | Y | - | The merchant account id, issued when merchant been created at Binance. |
noncestr | string | Y | must be 32 digits | A random string with 32 bytes, e.g. random ascii decimal within a-z and A-Z and loop 32 times to form a random string |
prepayId | string | Y | - | unique id generated by binance |
timeStamp | long | Y | Binance pay only process request within 1s | UnixTimestamp in millis that the requests send, guarantee the machine time is sync with the network |
Signature generation logic is as below, please follow the parameters order. Use "=" connect field and value, use "&" to separate fields.
String payload = "certSn=317c110ebf7baf641e8f49ab6851331737dbe98541947c53b9dbba27f8c8414f" + "&" + "merchantId=98765987" + "&" + "noncestr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS" + "&" + "prepayId=98765987" + "&"+ "timeStamp=1618302830073";
String signature = hex(hmac("sha512", payload, secretKey)).toUpperCase();
Integrate SDK for Android
Requirements
- Android 4.1+
- Support AndroidX
Import SDK
- Download binance_pay_sdk_v1.0.0.aar
- Add
binance_pay_sdk_v1.0.0.aar
into libs directory - Add dependence for app module, just like this:
android{
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation (name: 'binance_pay_sdk_v1.0.0', ext: 'aar') - Sync project
Usage
1. Create BinancePayListener
class PayListener : BinancePayListener {
override fun onSuccess() {
// When the payment is successful, this will be called
}
override fun onCancel() {
// When the payment is canceled, this will be called
}
override fun onError(exception: BinancePayException) {
// When there is an error in the payment process,this will be called
}
}
val listener = PayListener()
2. To Pay
2.1 Crypto payments(C2B)
val param = BinancePayParam(merchantId, prepayId, timeStamp, nonceStr, certSn, sign)
val binancePay = BinancePayFactory.getBinancePay(context)
binancePay.pay(param, listener)
2.2 Transfer or send cryptos(C2C)
val binancePay = BinancePayFactory.getBinancePay(context)
binancePay.pay(orderId, type, listener)
Error Types:
Maybe you will encounter several situations:
- UnInstall Error:This means that you have not installed the Binance app, and then a pop-up window will be displayed to guide you to download
- UnSupported Error:This means that your Binance app version is too low, and then a pop-up window will be displayed to guide you to get the latest Binance app
- Other Error:Will be called back to you via BinancePayListener
Integrate SDK for iOS
Requirements
- iOS 10+
- Swift 5.1+
Installation
Munual
- Download BinancePaySDK.xcframework
- Add
BinancePaySDK.xcframework
intoFrameworks, Libraries and Embeded Content
of your target - Embed Type should be
Embed & Sign
Usage
Pay
- Create
Request Parameters
:
// Crypto payments(C2B) parameters
public struct OrderInitParameters {
let merchantId: String
let prepayId: String
let timestamp: Int64
let noncestr: String
let certSn: String
let sign: String
let redirectScheme: String
}
// Transfer or send cryptos(C2C) parameters
public struct C2CInitParameters {
let id: String
let type: String
let redirectScheme: String
}
- Call api:
BinancePay.shared.pay(with: parameters, containerView: self.view) { (result) in
switch result {
case .success:
print("success")
case .failure(let error):
print("failure \(error)")
}
}
BinancePaySDK will show up an alert if user doesn't install Binance app on his/her device. The alert will show on the
containerView
.
- Error Types:
Here are the errors you may get from
BinancePaySDK
:
public enum PayError: Error {
case invalidParameters(OrderInitParametersError)
case binanceAppNotInstalled
case binanceAppNotSupported
case openAppFailed
case fromBinanceApp(code: Int, message: String)
}
public enum OrderInitParametersError: Error {
case invalidMerchantId
case invalidPrepayId
case invalidTimestamp
case invalidNonceStr
case invalidCertSn
case invalidSign
case invalidRedirectScheme
}
Language
public enum languageMode {
case automatic // SDK automatically use the same language as iOS system
case manual(Language: Language) // You can specify the language
}
BinancePay.shared.languageMode = .automatic
FAQ
Unable to trigger the Binance App
Include Binance Pay in the plist file to trigger Binance app
<key>LSApplicationQueriesSchemes</key>
<array>
<string>com.binance.app.binance</string>
<string>com.binance.pay.support</string>
</array>
Unable to redirect from Binance App back to your App
- Add your url scheme in Info Url Types
- Set this url-scheme as redirectScheme when using BinancePaySDK
Did not receive callback
Under AppDelegate: include the BinancePay.shared.handle function to receive callback.
func application(_ app: UIApplication, open url: URL, options:
[UIApplication.OpenURLOptionsKey : Any[ = [:]) -> Bool {
BinancePay.shared.handle(openURL: url)
}