如何使用 Apifox 调试微信支付接口
目前国内的产品如果需要应用支付场景,基本都需要开发人员将微信支付接口
接入到产品中。所以在产品正式上线前,通常会有相关的调试验证,可以使用 Apifox 来便捷调试微信支付接口。
前期准备
在使用 Apifox 调试微信支付接口之前,你需要做好以下准备:
- 安装有 Apifox 客户端应用,或者你可以选择使用 Apifox 网页版;
- 成为 微信支付商户;
- 已申请 商户API私钥。
准备好就可以开始进入微信支付接口的调试之旅啦~
配置环境
环境(Environment) 是一组变量 (Varibles) 的集合,脚本从环境中读取变量,用来计算请求的签名。
要配置环境,你需要从 Github 上下载 微信支付 APIv3 脚本环境,如下图所示:
设置环境变量
接着,在你工作台的右上角选择环境变量,选择一个环境添加新的变量,这里选择测试环境
来操作:
前置URL
:添加前置URL为https://api.mch.weixin.qq.com
;sm2js_code
:必填,将下载的sm2.js
的内容复制并粘贴到此;forge_code
:必填,将下载的forge.min.js
的内容复制并粘贴到此;mchid
:必填,商户号;merchant_serial_no
:必填,商户 API 证书序列号;apiclient_key.pem
:必填,PEM 格式的商户 API 私钥;
Warning 为了安全,请仔细阅读安全注意事项。
一组常见配置如下图所示:
参数变量:
变量名 | 是否必填 | 描述 | 备注 |
---|---|---|---|
mchid | 是 | 商户号 | |
merchant_serial_no | 是 | 商户 API 证书的证书序列号 | |
apiclient_key.pem | 是 | PEM 格式的商户 API 私钥 | |
openid | 否 | 用户的 OpenID,测试请求中的 {{openid}} | |
appid | 否 | 公众账号或者小程序的 AppID | |
shangmi | 否 | 值为 true 时使用商密签名 | 默认值为空,即使用 RSA 签名 |
pubkey.pem | 国密签名时必填 | PEM 格式的商户 API 公钥 | 如果私钥 PEM 中包含公钥,该变量可不填 |
server_url | 否 | 服务器地址 | 默认设置为 https://api.mch.weixin.qq.com |
设置前置脚本
点击根目录
,选择前置操作->添加前置操作->自定义脚本
,将下载下来的script.js
的内容复制后粘贴到此处。
然后,你需要在脚本里修改两处地方。
点击快捷键Ctrl+f
,输入collectionVariables
进行查找,collectionVariables
共有两个,你需要将其替换成environment
,都替换之后即可保存,具体如下图所示:
发送请求
当环境变量和前置脚本都配置好后,即可新增相应的 微信支付API 接口,点击发送
按钮,即可发出请求。
微信支付接口
如果你需要调试不同类型的商户支付接口,可以进入微信官方的云工作台 WeChat Pay Public Workspace,打开 WeChatPay APIv3
集合,展开选项后点击 Export
,将 调试微信支付接口的脚本 下载到本地。
下载并保存 WeChatPay APIv3.postman_collection.json
文件至本地,将 JSON 文件导入到 Apifox 中,具体操作如下:
1、点击 Apifox 左侧列表上方的 +
按钮,并选择 导入
2、选择 Postman 类型的数据导入格式,选择本地的 WeChatPay APIv3.postman_collection.json
,点击确认
你可以导入到新建的项目,也可以导入到已有的项目中,点击确定后,导入便完成。
你会发现在工作台的 根目录
下新增了几组请求:
安全注意事项
商户 API 私钥是非常敏感的信息。使用此代码时,应记住以下几点:
- 将配置了私钥的工作台(即团队项目)的可见性设置为私有 ,不要设置为公开。
- 私钥的变量值设置在
本地值
而非远程值
。本地值
仅保存在本地,不会被发送至 Apifox 的服务器。 - 如果使用来自其他人的脚本,请检查依赖库、变量和脚本,确保没有被修改,避免被植入不安全代码。
常见问题
为什么我发送请求很慢?
如果你使用的网页版 Apifox,请使用桌面版 Apifox 客户端。因为浏览器中跨域资源共享(CORS)的限制,网页版发送请求是由 Apifox 后台中转的。