开发指引

更新时间:2025.06.12

1、开发前配置

开发前,开发者需要完成如下步骤:配置开发参数。

1.1、设置安全联系人

微信支付日常安全监测发现技术异常时,会向安全联系人和超级管理员发送风险提醒。请商户超级管理员尽快设置技术同事为安全联系人,确保能及时接收异常信息评估业务风险,详见安全联系人设置指引

1.2、熟悉微信支付接口规则

正式进入开发前,开发者需要先阅读基本规则签名和验签规则了解调用微信支付接口的基本规则和签名规则。

1.3、准备开发参数

在发起接口请求时,开发者需传入必要参数,如商户号、appid、密钥及证书序列号等,获取方式详见:普通服务商模式开发必要参数说明

1.4、权限申请

号码包开通需要申请权限,参考权限申请

2、详细开发指引

2.1、整体业务开发流程概览

号码包上传流程如下:

  1. 商户在商户平台创建号码包,得到号码包ID,若要上传到已有号码包,此步骤可省略。

  2. 商户使用商户平台证书公钥对要上传的快捷协议号文件逐行加密。

  3. 商户调用创建快捷交易协议号上传任务API,传入相关参数及协议号文件。

  4. 商户上传号码包完成。

2.2、详细开发步骤说明

2.2.1、使用商户平台证书公钥对协议号文件逐行加密

协议号文件中每一行都表示一个单独的协议号,每个协议号后面使用\n表示换行,可使用商户平台证书公钥微信支付公钥对协议号文件中的内容逐行进行加密。

2.2.2、构造请求参数

请求参数的构建参考API文档:创建快捷交易协议号上传任务

2.2.3、构造Authorization请求头

上传号码包API的Authorization请求头的构造,可参考请求参数里带Body参数(包体参数),如何计算签名,开发者了解签名构造的基本流程后,可参考下面的具体示例。

2.2.3.1、确定签名串原文

签名串一共有5个部分,每一行为一个参数:

1HTTP请求方法\n
2URL\n
3请求时间戳\n
4请求随机串\n
5请求报文主体\n

在号码包上传API中,签名串具体值可参考如下,注意URL中的{package_id}要替换为本次要上传的号码包ID,请求报文主体是请求体中meta对象的值:

1POST\n
2/v3/marketing/bank/packages/{package_id}/tasks\n
31730563200\n
4593BEC0C930BF1AFEB40B4A08C8FB242\n
5{"filename":"FILENAME","sha256":"文件内容的SHA256摘要","bank_type":"BANK_TYPE"}\n

2.2.3.2、计算签名值

确认签名串原文后,可按照请求参数里带Body参数(包体参数),如何计算签名文档中的描述计算签名值

2.2.3.3、设置HTTP请求头

Authorization由认证类型和签名信息两个部分组成:

1Authorization: 认证类型 签名信息
  1. 认证类型,固定传WECHATPAY2-SHA256-RSA2048

  2. 签名信息

    • 发起请求的商户(包括直连商户、服务商或渠道商)的商户号mchid

    • 商户API证书序列号serial_no,用于声明所使用的证书

    • 请求随机串nonce_str,和你上面构造签名串的随机串要保持一致

    • 时间戳timestamp,和你上面构造签名串的时间戳要保持一致

    • 签名值signature,上面算出来的签名值

 

最终的Authorization示例为:

1Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900007291",timestamp="1730563200",serial_no="408B07E79B8269FEC3D5D3E6AB8ED163A6A380DB",nonce_str="593BEC0C930BF1AFEB40B4A08C8FB242",signature="计算得出的签名值"

此外,在请求头中还需设置Wechatpay-Serial,表示使用的微信支付平台证书序列号:

1Wechatpay-Serial: 408B07E79B8269FEC3D5D3E6AB8ED163A6A380DB

2.2.4、查看上传任务状态

调用创建快捷交易协议号上传任务API成功后,可调用查询任务列表API查询任务状态,详见查询上传任务列表