---
title: "支付宝统一收单交易查询接口（alipay.trade.query）的文档有坑"
date: 2024-03-22T14:49:36.000Z
author: Z.SHINCHVEN
tags: [支付宝, Alipay]
canonical: https://atlassc.net/2024/03/23/pitfalls-in-the-alipay-interface-alipay-trade-query
---
## 前言

在完成支付宝的支付接入以后，还需要调 `统一收单交易查询` 接口，而 [alipay.trade.query](https://opendocs.alipay.com/open/02cdxa) 这个接口的文档有坑。

## 文档给的示例代码中参数有问题

```js
const AlipaySdk = require("alipay-sdk").default;

const alipaySdk = new AlipaySdk({
  appId: "<-- 请填写您的AppId，例如：2019091767145019 -->",
  privateKey: "<-- 请填写您的应用私钥，例如：MIIEvQIBADANB ... ... -->",
  alipayPublicKey: "<-- 请填写您的支付宝公钥，例如：MIIBIjANBg... -->",
  gateway: "https://openapi.alipay.com/gateway.do",
});
const result = await alipaySdk.exec("alipay.trade.query", {
  bizContent: {
    out_trade_no: "20150320010101001",
    org_pid: "2088101117952222",
    query_options: {
      0: "trade_settle_info",
    },
    trade_no: "2014112611001004680+073956707",
  },
});
```

以上是官方文档给的示例代码，如果你直接拷贝进你的工程运行，则会报错：

- `query_options`：如果填了会报错 `ACQ.INVALID_PARAMETER`，`参数无效：参数格式错误`。
- `org_pid`：如果填了会报错 `ACQ.TRADE_NOT_EXIST`，`交易不存在`。
- `trade_no`：你在刚创建订单的时间，需要通过 `out_trade_no` 去查询订单，才能得到 `trade_no`，所以 `trade_no` 是不需要填的。

删除以上3个参数以后，我终于调通了。
