DoraFund 2.0 是一个专注于 ERC20 协议支付 的区块链支付平台,目前支持以太坊兼容链(EVM 系)。Solana 支付暂不支持。
官方网址:dorafund.com
官方文档地址:dora4.github.io/dora-wallet...
订单界面展示

订单界面需开发者自行实现(SDK 后续将提供默认模板)。核心字段包括:
- 订单号 orderId
- 商品名称和描述
- 支付金额 + Token Symbol
- 订单状态(未支付 / 已支付 / 已确认)
- 交易哈希 transactionHash
集成流程
1.在Application中初始化SDK
kt
private fun initPay() {
val chains: Array<Modal.Model.Chain> = arrayOf(
Web3ModalChainsPresets.ethChains["43114"]!! // Avalanche C-Chain
)
DoraFund.init(this,
"你的应用名称",
"你的应用描述",
"http://yourdomain.com",
chains,
getColor(R.color.gold_yellow),
object : DoraFund.PayListener {
override fun onPayFailure(orderId: String, msg: String) {
}
override fun onSendTransactionToBlockchain(orderId: String, transactionHash: String) {
val order = DaoFactory.getDao(Order::class.java)
.selectOne(WhereBuilder.create().addWhereEqualTo("order_id", orderId))
order?.let {
it.transactionHash = transactionHash
DaoFactory.getDao(Order::class.java).update(it)
}
}
})
}
DoraFund.PayListener建议随init一起,然后你可以通过发消息给具体的处理界面。onSendTransactionToBlockchain会在用户点击了钱包的确认发送代币按钮后,如果广播成功,则会回调交易哈希给你,这个回调中同时也会给你orderId,你需要把自己用户点击商品购买按钮下的那个订单时的orderId与之比对,关联订单的交易哈希数据。
2.生成订单并发起支付
调用 DoraFund.pay
即可:
kt
private fun buyGoods1() {
DoraFund.pay(this,
"你的accesskey",
"你的secretKey",
"你的商品名称",
"支付0.01AVAX购买完整版功能,仅支付一次,永久有效,是否购买?",
"0xcBa852Ef29a43a7542B88F60C999eD9cB66f6000",
0.01,
object : DoraFund.OrderListener {
override fun onPrintOrder(
orderId: String,
chain: Modal.Model.Chain,
value: Double
) {
val order = Order()
order.orderId = orderId
order.createdTime = System.currentTimeMillis()
order.goodsName = "你的商品名称"
order.goodsDesc = "和订单展示的一样"
order.tokenSymbol = "AVAX" // 同样展示在订单列表界面,和amount拼接
order.amount = 0.01 // 同样展示在订单列表界面,和tokenSymbol拼接
DaoFactory.getDao(Order::class.java).insert(order)
}
})
}
调用 pay
后,SDK 会弹出支付确认;用户确认后将请求钱包发送代币。交易成功广播即回调 onSendTransactionToBlockchain
,并携带对应的 orderId
与 transactionHash
。
3.交易确认(发货逻辑)
kt
Observable.fromCallable {
// 自动提取
val verified = PayUtils.queryTransaction(order.transactionHash)
if (verified) {
// 标记订单已经过区块链确认
order.isVerified = true
DaoFactory.getDao(Order::class.java).update(order)
}
verified
}.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { verified ->
if (verified) {
// 主线程刷新UI
}
}
}
4.钱包连接检测
首次支付需检测钱包连接:
kt
if (!DoraFund.isWalletConnected()) {
DoraFund.connectWallet(this, REQUEST_BUY_GOODS_1)
} else {
buyGoods1()
}
连接完成后,会回调 onActivityResult
。然后在Activity中处理之前的支付请求。
kt
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_BUY_GOODS_1) {
if (DoraFund.isWalletConnected()) {
buyGoods1()
}
} else if (requestCode == REQUEST_GOODS_2) {
if (DoraFund.isWalletConnected()) {
buyGoods3()
}
} else if (requestCode == REQUEST_GOODS_3) {
if (DoraFund.isWalletConnected()) {
buyGoods3()
}
}
}
}
数据表结构
订单表 Order
示例:
kt
import dora.db.constraint.Id
import dora.db.migration.OrmMigration
import dora.db.table.Column
import dora.db.table.OrmTable
class Order(
override val isUpgradeRecreated: Boolean = false,
override val migrations: Array<OrmMigration>? = arrayOf()
) : OrmTable {
@Id
val id: Long = OrmTable.ID_UNASSIGNED
@Column("order_id")
var orderId: String = ""
@Column("goods_name")
var goodsName: String = ""
@Column("goods_desc")
var goodsDesc: String = ""
@Column("token_symbol")
var tokenSymbol: String = ""
@Column("amount")
var amount: Double = 0.0
@Column("created_time")
var createdTime: Long = 0
@Column("is_verified")
var isVerified: Boolean = false
@Column("transaction_hash")
var transactionHash: String = ""
}
注意事项
1.用户能否自行加速
app需要提示用户,不能通过提高gas费进行加速操作。这个过程只有钱包知道,SDK不知道,因此导致交易哈希变化,从而无法提取商品的所有损失由用户承担。后期SDK也会补上此信息。正确的处理流程是,用户一旦发现网络拥堵(矿工费给低了极端情况可能需要确认几个小时,但正常不会超过15秒),应该等待区块确认完成或者取消。如对该笔订单有疑问,请提交工单干预,协商原路退还发送的代币,可以收取一定手续费,防止恶意退款。
2.用户付款了商户能否不发货
不能。官方提供了举报模板,消费者可以举报app给平台,一经发现欺诈行为,accessKey将被永久禁用,证据可能会被提交给司法机关。
PayFi和区块链支付的前景
当前区块链支付正在加速发展,包括美国已经纳入法律监管。
-
全球合规化趋势
- 美国、欧盟已逐步将区块链支付纳入监管框架,反洗钱(AML)和合规审查要求日益严格。
- 区块链支付正逐渐从"灰色地带"走向 合法合规的金融基础设施。
-
PayFi 的发展方向
- PayFi(Payment + DeFi)代表支付与去中心化金融的融合。
- 未来不仅限于简单的代币支付,还会结合 稳定币(USDT、USDC) 、去中心化抵押贷款 、链上信用评分。
- 可能出现 跨链支付结算网络,实现"全球支付一键完成"。
-
对商户与用户的价值
- 商户端:零门槛接入全球支付,无需传统支付通道(Visa/MasterCard)。
- 用户端:可用加密资产进行小额支付、订阅、跨境购物。
- 安全透明:所有支付均可链上溯源,防止欺诈。
-
未来展望
- 区块链支付将在 3~5 年内逐步进入 跨境电商、游戏充值、会员订阅、数字资产购买 等领域。
- DoraFund 2.0 的定位是:开发者友好的 ERC20 支付 SDK,降低区块链支付集成的复杂度。