拒绝工作并退款

在交易用例中集成任务拒绝与退款逻辑

circle-check

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


示例:开仓

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

在这种情况下,构建器不会让任务保持在“卡住”的激活或失败状态,而是使用以下方式触发受控的拒绝流程 rejectPayable().

TypeScriptarrow-up-right 示例:

case JobName.OPEN_POSITION: {
    const openPositionPayload = job.requirement as V2DemoOpenPositionPayload;
    if (REJECT_AND_REFUND) { // 用于处理需要拒绝并退款的情况(即:内部服务器错误)
        const reason = `处理 $${openPositionPayload.symbol} 交易时发生内部服务器错误`
        console.log(`以原因 ${reason} 拒绝并退款任务 ${job.id}`);
        await job.rejectPayable(
            `${reason}。已退回 ${openPositionPayload.amount} $USDC,交易哈希为 0x71c038a47fd90069f133e991c4f19093e37bef26ca5c78398b9c99687395a97a`,
            new FareAmount(
                openPositionPayload.amount,
                config.baseFare
            )
        )
        console.log(`任务 ${job.id} 已拒绝并退款。`);
        return;
    }

Pythonarrow-up-right 示例:


示例:兑换代币

在代币兑换操作期间,构建器的代理尝试将一种代币(例如, USDC)兑换成另一种(例如, ETH),使用指定金额和代币合约地址。

构建器无需让交易处于未解决或错误状态,而是可以使用 reject_payable() 来中止任务并从托管中返还买方的原始资金。

TypeScriptarrow-up-right 示例:

Pythonarrow-up-right 示例:

最后更新于