---
url: "https://pay.weixin.qq.com/doc/brand/4016151253.md"
title: "基于curl调通第一个品牌API"
doc_id: 4016151253
---

>更新时间：2025.11.11

## 一、概述

本文档提供基于 `curl` 命令行工具调用“[设置商品券事件通知地址](https://pay.weixin.qq.com/doc/brand/4015736293.md)”接口的示例。

适用对象：开发人员、测试人员、运维人员等需要通过命令行快速调试或验证接口的场景。

## 二、基础语法说明

`curl` 基础格式：

```
curl [选项] <目标URL>
```

常用选项：

| 选项 | 说明 | 示例 |
| --- | --- | --- |
| `-X` | 指定 HTTP 方法（如 GET/POST/PUT/DELETE） | `-X POST` |
| `-H` | 添加请求头（可多次使用） | `-H "Content-Type: application/json"` |
| `-d` | 发送请求体数据（默认为 POST 的表单格式，需配合 `-X` 指定方法） | `-d '{"key":"value"}'` |

## 三、接口调用示例

### 1、前置准备工作

准备开发参数

商户调用接口前需要需要先准备开发必要参数： `brand_id`(品牌ID)、品牌API证书以及证书序列号、微信支付公钥以及公钥ID等信息，具体可参考：[开发必要参数说明](https://pay.weixin.qq.com/doc/brand/4015415289.md)

### 2、接口调用示例

以下示例中使用的时间戳、随机字符串、开发必要参数、body参数需保持一致，若同一参数信息使用不同的值将导致接口调用失败，

#### 2.1、构造请求签名

```
echo -n -e \
 'POST\n/brand/marketing/product-coupon/notify-configs\n时间戳\n随机字符串\n{"notify_url":"你的回调地址"}\n' \
 | openssl dgst -sha256 -sign 品牌API证书文件.pem \
 | openssl base64 -A
```

通过上述示例可得出的"签名值"，用于后续设置HTTP头，生成签名值的具体介绍请参考：[如何构造请求签名](https://pay.weixin.qq.com/doc/brand/4015407575.md#2.-%E5%A6%82%E4%BD%95%E6%9E%84%E9%80%A0%E8%AF%B7%E6%B1%82%E7%AD%BE%E5%90%8D)

#### 2.2、设置HTTP头

```
Authorization: WECHATPAY-BRAND-SHA256-RSA2048 brand_id="你的品牌ID",nonce_str="随机字符串",signature="签名值",timestamp="时间戳",serial_no="品牌API证书对应的证书序列号"
```

#### 2.3、CURL发送请求

```
curl -X POST \
  https://api.mch.weixin.qq.com/brand/marketing/product-coupon/notify-configs \
  -H 'Authorization: WECHATPAY-BRAND-SHA256-RSA2048 brand_id="你的品牌ID",nonce_str="随机字符串",signature="签名值",timestamp="时间戳",serial_no="品牌API证书对应的证书序列号"' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Wechatpay-Serial: 你的公钥ID' \
  -d '{"notify_url":"你的回调地址"}'
```

[点击查看notify\_url填写注意事项](https://pay.weixin.qq.com/doc/brand/4015407551.md)

若请求成功，请求主体将返回以下信息：

```
{"notify_url" : "你的回调地址","update_time" : "更新时间"}
```

若请求失败，请求主体将返回报错，将返回以下格式的信息，请根据具体的错误描述进行排查。

```
{"code":"错误码","message":"错误描述"}
```

#### 2.4、验证签名

为了信息安全，请求成功后还需使用公钥对返回信息进行验签，确认返回信息来自微信支付。

返回信息的请求头示例：

```
Content-Type: application/json; charset=utf-8
Content-Length: 52
Connection: keep-alive
Keep-Alive: timeout=8
Cache-Control: no-cache, must-revalidate
X-Content-Type-Options: nosniff
Request-ID: 请求的唯一标识
Content-Language: zh-CN
Wechatpay-Nonce: 应答随机串
Wechatpay-Signature: 应答签名值
Wechatpay-Timestamp: 应答时间戳
Wechatpay-Serial: 你的公钥ID
Wechatpay-Signature-Type: WECHATPAY-BRAND-SHA256-RSA2048
```

注意事项：

调用接口后，建议在日志中保留应答的HTTP头 `Request-ID` 值， `Request-ID` 作为[请求的唯一标识](https://pay.weixin.qq.com/doc/brand/4015407525.md#%E8%AF%B7%E6%B1%82%E7%9A%84%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86)，在调用接口遇到问题时，可向微信侧提供该值用于快速定位到请求记录，协助排查问题原因。

使用 base64 解码应答签名值，并保存为文件 signature.txt （可自定义文件名，此处为示例）。

```
openssl base64 -d <<< \ '应答签名值' > signature.txt
```

验证签名：

```
openssl dgst -sha256 -verify 你的微信支付公钥.pem -signature signature.txt << EOF
应答时间戳
应答随机串
{"notify_url" : "你的回调地址","update_time" : "更新时间"}
EOF
```

得到的结果为如下verified ok 则表示验签通过

```
Verified OK
```

验签步骤的具体介绍可参考文档：[如何使用微信支付公钥验签](https://pay.weixin.qq.com/doc/brand/4015407582.md)