PAYATHON 2026

支付宝预授权商户后台如何处理未解冻订单?

支付老李

结论

支付宝预授权订单尚未解冻时,应由原签约商户主动处理。合规方式通常有三种:

  1. 在支付宝商家平台或预授权产品后台逐笔解冻;
  2. 通过原应用对应的开放平台接口 alipay.fund.auth.order.unfreeze 批量解冻;
  3. 如果原系统无法使用,或应用密钥、操作权限已经丢失,可联系支付宝商家客服、提交开放平台工单,或通过签约服务商提交材料,请支付宝协助核查。

产品停止运营后,资金授权不会全部自动解除。只要预授权仍然有效,商户就应及时核对订单并完成解冻,不要等待授权自然失效。

后台处理步骤

支付宝后台的菜单名称会因产品类型、账号权限和后台版本而有所不同,大致操作流程如下:

  1. 使用签约支付宝预授权产品的商家账号登录支付宝商家平台。
  2. 打开预授权、资金授权或交易订单相关页面。
  3. 根据商户订单号、支付宝授权号或授权时间查询订单。
  4. 确认订单仍有“剩余冻结金额”。
  5. 选择“解冻”“撤销授权”或名称相近的操作。
  6. 填写解冻金额和原因。
  7. 提交后再次查询,确认解冻状态及剩余冻结金额。

操作前,需要先确认订单状态:

  • 已全部解冻:不需要重复处理。
  • 已部分解冻:只解冻剩余金额。
  • 已转支付:先核对实际支付金额,再判断是否需要解冻剩余金额。
  • 授权已关闭或已失效:通常无法再次解冻,应保存查询结果。
  • 状态不明确:不要反复尝试,先通过订单查询接口或支付宝后台核实。

如果后台找不到解冻入口,可能是当前账号并非签约主体、操作员权限不足、订单由服务商代为创建,或者该产品只支持通过接口处理。此时应先确认商户号、应用和签约产品是否与原订单一致。

通过接口批量解冻

订单较多时,可以搭建独立的临时处理程序,调用以下接口:

alipay.fund.auth.order.unfreeze

调用接口一般需要准备:

  • 支付宝资金授权号 auth_no
  • 商户本次解冻请求号 out_request_no
  • 解冻金额 amount
  • 解冻原因 remark

out_request_no 必须保持唯一,并持久化保存。如果同一笔解冻请求需要重试,应继续使用原请求号,以免重新生成请求号后造成重复操作。

下面是基于支付宝 Java SDK 的示意代码。不同版本的 SDK 可能使用不同的类名和配置方式,实际接入时应以当前开放平台接口文档为准:

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundAuthOrderUnfreezeRequest;
import com.alipay.api.response.AlipayFundAuthOrderUnfreezeResponse;

public class UnfreezeOrderExample {

    public static void main(String[] args) throws Exception {
        AlipayClient alipayClient = new DefaultAlipayClient(
            "https://openapi.alipay.com/gateway.do",
            "YOUR_APP_ID",
            "YOUR_APP_PRIVATE_KEY",
            "json",
            "UTF-8",
            "ALIPAY_PUBLIC_KEY",
            "RSA2"
        );

        AlipayFundAuthOrderUnfreezeRequest request =
            new AlipayFundAuthOrderUnfreezeRequest();

        request.setBizContent("""
            {
              "auth_no": "2026XXXXXXXXXXXX",
              "out_request_no": "UNFREEZE_20260909_000001",
              "amount": "100.00",
              "remark": "业务停止运营,解冻剩余授权金额"
            }
            """);

        AlipayFundAuthOrderUnfreezeResponse response =
            alipayClient.execute(request);

        if (response.isSuccess()) {
            System.out.println("解冻请求成功");
            System.out.println("auth_no=" + response.getAuthNo());
            System.out.println("out_request_no=" + response.getOutRequestNo());
            System.out.println("operation_id=" + response.getOperationId());
            System.out.println("amount=" + response.getAmount());
            System.out.println("status=" + response.getStatus());
        } else {
            System.err.println("解冻失败");
            System.err.println("code=" + response.getCode());
            System.err.println("sub_code=" + response.getSubCode());
            System.err.println("sub_msg=" + response.getSubMsg());
        }
    }
}

HTTP 请求成功不等于资金已经解冻。程序还必须检查业务响应,并在需要时调用资金授权操作查询接口,例如:

alipay.fund.auth.operation.detail.query

查询时可使用原授权号、商户订单号或操作请求号进行核对,具体必填字段以当前接口文档为准。

原系统无法使用时怎么办

原业务系统已经下线,不一定要恢复整套系统。只要商户仍合法持有原应用和商户权限,就可以搭建一个最小化处理程序,从备份数据中读取未解冻订单,再调用官方接口处理。

可按以下顺序操作:

  1. 从数据库、财务记录或历史日志中导出 auth_no、商户订单号、已冻结金额、已支付金额和已解冻金额。
  2. 通过支付宝后台或查询接口复核订单的实时状态。
  3. 根据查询结果计算实际剩余冻结金额,不要直接使用旧系统的缓存状态。
  4. 先挑选少量订单进行人工核验。
  5. 确认整个处理链路无误后,再分批执行。
  6. 保存每次请求和响应,以及操作人、处理时间与最终状态。
  7. 请求超时或结果未知时,先查询处理结果,不要立刻更换请求号重试。

如果手中只有商户订单号,没有 auth_no,应先从原订单记录或官方查询能力中找回授权号。能否只凭商户订单号查询,取决于原订单的创建方式和接口要求。

密钥或权限丢失时的合规渠道

如果原应用无法登录、私钥丢失、签约账号停用,或者订单由已经失联的服务商创建,不要借用其他商户账号,也不要伪造接口请求。可通过以下渠道处理:

  • 使用签约商户账号联系支付宝商家客服;
  • 在支付宝开放平台提交技术或业务工单;
  • 联系原签约服务商、支付宝服务商或客户经理;
  • 如果商户主体正在注销、清算或发生主体变更,由法定代表人、清算负责人或正式授权人员提交申请。

一般需要准备以下材料:

  • 商户名称及统一社会信用代码;
  • 支付宝商户账号或商户标识;
  • 原应用 app_id;
  • 预授权产品签约信息;
  • 未解冻订单清单;
  • auth_no、商户订单号、金额和时间;
  • 业务停止运营的说明;
  • 经办人的身份证明及授权材料;
  • 原系统无法操作或密钥丢失的情况说明。

支付宝能否代为批量处理、需要提交哪些证明材料,以及处理周期多长,都要以工单审核结果为准,不能事先认定支付宝一定会人工解冻。

注意事项

  • 解冻金额不得超过当前剩余冻结金额。
  • 已经转为支付的金额不能再按冻结金额解冻。
  • 金额应遵循接口要求的货币精度,不要直接使用浮点数计算。
  • 批量处理前,应排除正在退款、支付或解冻中的订单。
  • 接口超时后,应先查询处理结果,再决定是否重试。
  • 不要将应用私钥、支付宝公钥或完整用户信息写入日志。
  • 不要用个人支付宝账号向用户“补偿”,以此代替正式解冻。
  • 订单较多时,应限速并分批处理,同时安排人工复核,避免历史数据错误引发异常请求。
  • 所有处理记录都应留档,供财务对账、用户投诉处理和后续审计使用。

备注:内容仅供参考。