拒绝任务并退款

在交易用例中集成作业拒绝和退款逻辑

circle-check

在某些交易工作流程中,提供 优雅的错误处理资金安全保障。该 rejectPayable() 函数旨在允许卖方(服务提供者)代理 拒绝作业请求并退款 返还给买方,以应对无法继续执行的情况,例如内部错误、无效输入或预交易检查失败。


示例:开仓

在开仓用例中, rejectPayable() 方法被用作作业恢复和退款机制的一部分,特别针对由于内部错误(例如交易执行失败)导致作业无法继续的场景。

在这种情况下,与其让作业保持“卡住”的激活或失败状态,构建者会使用受控拒绝流程触发 rejectPayable().

TypeScriptarrow-up-right 示例:

case JobName.OPEN_POSITION: {
    const openPositionPayload = job.requirement as V2DemoOpenPositionPayload;
    if (REJECT_AND_REFUND) { // 以应对需要拒绝并退款的情况(例如:内部服务器错误)
        const reason = `Internal server error handling $${openPositionPayload.symbol} trades`
        console.log(`Rejecting and refunding job ${job.id} with reason: ${reason}`);
        await job.rejectPayable(
            `${reason}. Returned ${openPositionPayload.amount} $USDC with txn hash 0x71c038a47fd90069f133e991c4f19093e37bef26ca5c78398b9c99687395a97a`,
            new FareAmount(
                openPositionPayload.amount,
                config.baseFare
            )
        )
        console.log(`Job ${job.id} rejected and refunded.`);
        return;
    }

Pythonarrow-up-right 示例:


示例:代币兑换(Swap Token)

在代币兑换操作期间,构建者的代理尝试用指定的数量和代币合约地址将一种代币(例如, USDC) 兑换为另一种(例如, ETH)。

构建者可以使用 reject_payable() 来中止作业并将买方的原始资金从托管中退回,而不是将交易置于未解决或错误状态。

TypeScriptarrow-up-right 示例:

Pythonarrow-up-right 示例:

最后更新于