# 统一收单交易查询接口 - Python 示例

## 请求示例

```python
import json
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.request.AlipayTradeQueryRequest import AlipayTradeQueryRequest
from alipay.aop.api.domain.AlipayTradeQueryModel import AlipayTradeQueryModel

# 初始化SDK（Python 使用 PKCS#1 格式私钥，Java 使用 PKCS#8 格式，请勿混用）
config = AlipayClientConfig()
config.server_url = "https://openapi.alipay.com/gateway.do"
# 沙箱环境: config.server_url = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"
config.app_id = "<-- 请填写您的AppId，例如：20190xxxxxx -->"
config.app_private_key = "<-- 请填写您的应用私钥，例如：MIIE...（脱敏示例） -->"
config.alipay_public_key = "<-- 请填写您的支付宝公钥，例如：MIIB...（脱敏示例） -->"
config.charset = "utf-8"
config.sign_type = "RSA2"
client = DefaultAlipayClient(alipay_client_config=config)

request = AlipayTradeQueryRequest()
model = AlipayTradeQueryModel()
model.out_trade_no = "MERCHANT_ORDER_NO_PLACEHOLDER"  # 商户订单号，与 trade_no 二选一
# model.trade_no = "ALIPAY_TRADE_NO_PLACEHOLDER"  # 支付宝交易号，同时传时以 trade_no 为准
request.biz_model = model

response_content = client.execute(request)
response = json.loads(response_content)
result = response.get("alipay_trade_query_response", {})

if result.get("code") == "10000":
    business_state = {
        "TRADE_SUCCESS": "PAID",
        "TRADE_FINISHED": "PAID",
        "WAIT_BUYER_PAY": "PENDING_PAYMENT",
        "TRADE_CLOSED": "CLOSED",
    }.get(result.get("trade_status"), "UNKNOWN")
    print(f"业务状态: {business_state}, 支付宝状态: {result.get('trade_status')}, 订单金额: {result.get('total_amount')}")
else:
    print(f"调用失败: {result.get('sub_code')} - {result.get('sub_msg')}")
```

## 响应示例
### 正常示例
```json
{
    "code": "10000",
    "msg": "Success",
    "trade_no": "ALIPAY_TRADE_NO_PLACEHOLDER",
    "out_trade_no": "MERCHANT_ORDER_NO_PLACEHOLDER",
    "trade_status": "TRADE_SUCCESS",
    "total_amount": "88.88",
    "buyer_pay_amount": "8.88",
    "receipt_amount": "15.25",
    "buyer_logon_id": "159****5620",
    "buyer_user_id": "<BUYER_USER_ID>",
    "send_pay_date": "2014-11-27 15:45:57"
}
```
### 异常示例
```json
{
    "code": "20000",
    "msg": "Service Currently Unavailable",
    "sub_code": "isp.unknow-error",
    "sub_msg": "系统繁忙"
}
```
