Cancellation(撤销),Refund(退货),Reversal(冲正)

Cancellation(撤销)

对已成功的交易,在结算前使用撤消交易,请求发卡方取消付款承诺。 撤销交易必须是对原始预交易的全额撤销。

 本交易是需经CUPS转接的请求类交易,交易流程为经过CUPS转接的请求类交易处理流程,本交易可引发冲正通知。

本交易的交易金额不参加清算。

Refund(退货):

指特约商户因商品退回或服务取消,将已扣款项退还持卡人原扣款账户的过程;包括全额和部分金额退货。另外,对于分期付款消费,提供分期付款退货交易,其处理流程与一般联机退货交易一致。

本交易是需经CUPS转接的通知类交易,处理中心一旦成功转发了退货通知,无论发卡方如何处理,此笔退货通知交易参与清算。

发卡方在CUPS日切点后若收到CUPS在日切点前发送的退货通知,应能受理超时时段范围内的跨清算日的退货通知交易。

特别说明:入网机构还可以登录银联统一业务门户发起手工退货交易,其处理流程参见本规范。

Reversal(冲正):

一种特殊的交易。由报文的发送方发起,用于通知接收方先前一笔授权类或金融类交易没有按预定流程完成,应该取消其处理结果。订单交易失败,银行会进行按照原来的金额重新再做一遍,在钱返回至交易的银行卡中。

当受理方、CUPS在限定的时间内收不到请求报文的应答或CUPS不能将请求报文的应答传送给受理方时,应引发冲正交易。

当冲正发送方不能发送冲正通知或未能收到接收方对冲正的应答时,将冲正通知报文存放在存储转发队列中存储转发。

对授权/授权撤销都能引发冲正。

<think>好的,用户想了解编程中的“current cancellation”操作。首先,我需要明确这个术语的具体含义。在编程中,取消操作通常指的是异步任务或长时间运行的任务被中途终止的机制。可能涉及到多线程、异步编程模型等。 接下来,我需要回忆相关的知识。根据用户提供的引用,特别是引用[2]和[3],它们讨论了异步编程的最佳实践,包括避免混合异步和阻塞代码,以及处理异常的方法。这可能与取消操作有关,比如使用CancellationToken在.NET中取消异步任务。 用户的问题可能涉及到如何确实现取消操作,避免死锁或资源泄漏。需要解释取消机制的工作原理,常见的使用模式,以及注意事项。例如,在C#中,CancellationTokenSource和CancellationToken是常用的取消模式,而在其他语言如Python或Java中可能有不同的实现方式。 此外,用户可能关心如何在不同的编程环境中处理取消,比如多线程、异步I/O等场景。需要举例说明,比如在任务执行前检查取消请求,确传播取消异常,以及资源清理的重要性。 还要注意引用中的内容,引用[2]提到混合异步和阻塞代码可能导致死锁,因此在取消操作时,需要确保异步任务确使用await,而不是阻塞等待。引用[3]提到异步void方法无法捕获异常,这可能与取消操作中的异常处理有关,需要提示用户避免使用异步void,改用返回Task的方法以便确处理异常。 最后,生成相关问题时,要覆盖实现机制、最佳实践、跨语言差异、常见错误和实际应用场景,帮助用户全面理解取消操作。</think>关于编程中的取消操作(Current Cancellation),其核心是**控制异步任务或长时间运行任务的终止**,确保资源释放和状态安全。以下是关键要点: --- ### 1. **取消机制的核心组件** - **取消令牌(CancellationToken)**:通过传递令牌向任务发送取消请求,例如在C#中: ```csharp var cts = new CancellationTokenSource(); var token = cts.Token; Task.Run(() => { while (!token.IsCancellationRequested) { // 执行操作 } }, token); cts.Cancel(); // 触发取消 ``` 这种模式避免了直接终止线程的风险,改为协作式取消[^2]。 - **超时控制**:可配置自动取消,例如设置`cts.CancelAfter(5000)`(5秒超时)。 --- ### 2. **最佳实践** - **及时响应取消请求**:任务需定期检查`IsCancellationRequested`或调用`token.ThrowIfCancellationRequested()`[^2]。 - **资源清理**:在`finally`块或`IDisposable`接口中释放资源。 - **避免混合异步与阻塞调用**:例如在异步方法中不要使用`.Wait()`,否则可能导致死锁[^2]。 --- ### 3. **跨语言差异** - **C#/Java**:通过`CancellationToken`或`Future.cancel()`显式控制。 - **Python**:使用`concurrent.futures`的`Future.cancel()`,但依赖于任务是否已启动。 - **JavaScript**:通过`AbortController`和`AbortSignal`实现(如Fetch API)。 --- ### 4. **常见错误** - **忽略取消异常**:未确处理`OperationCanceledException`可能导致状态不一致。 - **异步void方法**:如C#中`async void`无法传播异常,需改用`async Task`[^3]。 - **未传递令牌**:深层嵌套调用需逐层传递令牌,否则无法确取消。 --- ### 5. **应用场景** - 用户手动取消(如界面“取消”按钮) - 服务端请求超时处理 - 批量任务中单个失败触发全体回滚 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值