深度解析:使用Postman调试微信支付接口的完美指南

前期准备

在使用 Postman 调试微信支付接口之前,你需要做好以下准备:

  • 安装 Postman 客户端应用,或使用网页版;
  • 成为 微信支付商户;
  • 已申请 商户API私钥。

当你已经具备这三个条件,就可以进入微信支付接口调试之旅了~

脚本导入

方式一:通过 fork 方式

为了帮助商户开发者快速上手,微信官方将 调试微信支付接口的脚本 部署到了 Postman 云工作台 WeChat Pay Public Workspace。

在该工作台中,你只需要将名为 WeChatPay APIv3 的集合 fork 到自己的工作台,然后就可以在 Postman 上构造并发送微信支付 APIv3 请求。

具体操作如下图所示:

注: 需要确保你已经登录了 Postman 平台。

1、进入到 WeChat Pay Public Workspace 后选择 Create a fork ,进入到下一步。

2、填入标签 Fork Label 并选择目的工作台 Workspace。一般情况下,导入个人工作台 My Workspace 即可,也可以选择导入其它工作台。点击 Fork Collection 完成导入,在你指定的 Workspace 中即可看到WeChatPay APIv3

3、WeChatPay APIv3 参考如下:

方式二:从本地导入

Note 不推荐本地导入脚本,不但麻烦而且容易出错,还不能同步上游的变更。

1、如果你有从本地导入的需求,首先,打开 WeChatPay APIv3 集合,展开选项后点击 Export

2、下载并保存 WeChatPay APIv3.postman_collection.json 文件至本地。然后,有两种方式本地导入 JSON 文件:

  • Postman 界面左上角的 Import 按钮
  • 菜单 File > Import 发起导入

选择本地的 WeChatPay APIv3.postman_collection.json,点击确认后,导入便完成了,操作如下图所示:

你会发现在工作台的 Collections 里新增了名为 WeChatPay APIv3 的一组请求。

配置 Environment

环境(Environment) 是一组变量 (Varibles) 的集合,脚本从环境中读取变量,用来计算请求的签名。

你可以从云工作台 WeChat Pay Public Workspace 中的 商户参数模版 中 fork 一个空环境到自己的工作台。

接下来,在你工作台的 Enviroments 中找到新建的环境,点击 Add a new varialbe 添加新的变量:

  • mchid:必填,商户号;
  • merchant_serial_no:必填,商户 API 证书序列号;
  • apiclient_key.pem:必填,PEM 格式的商户 API 私钥;

Warning 为了安全,请仔细阅读安全注意事项。

一组常见配置如下图所示:

参数变量:

变量名是否必填描述备注
mchid商户号
merchant_serial_no商户 API 证书的证书序列号
apiclient_key.pemPEM 格式的商户 API 私钥
openid用户的 OpenID,测试请求中的 {{openid}}
appid公众账号或者小程序的 AppID
shangmi值为 true 时使用商密签名默认值为空,即使用 RSA 签名
pubkey.pem国密签名时必填PEM 格式的商户 API 公钥如果私钥 PEM 中包含公钥,该变量可不填
server_url服务器地址默认设置为 api.mch.weixin.qq.com

发送请求

现在回到工作台,进入WeChatPay APIv3集合,选择你要发送的请求。

然后,填入请求参数,按照注释修改 Body 中的参数。

最后,选择你之前配置的 Environment,再点击地址栏右侧的Send按钮,发送请求吧。

安全注意事项

商户 API 私钥是非常敏感的信息。使用此代码时,应记住以下几点:

  • 将配置了私钥的工作台(workspace)的可见性(Visibility)设置为私有 Personal 或者 Private不要设置为公开 Public
  • 私钥的变量类型设置为 secret。变量值会以掩码的形式显示在屏幕上。
  • 私钥的变量值设置在 Current ValueCurrent Value 仅保存在本地 Session,不会被发送至 Postman 的服务器。
  • 如果使用来自其他人的 Postman 脚本,请检查依赖库、变量和脚本,确保没有被修改,避免被植入不安全代码。

Note 有关 Postman 的安全机制,请参考 Postman Security

常见问题

发送请求时遇到错误提示“Error: Too few bytes to parse DER.”或者“Too few bytes to read ASN.1 value.”

通常是环境 Environments 里配置的变量 merchantPrivateKey 填写有误导致的。脚本接收的私钥,以 -----BEGIN PRIVATEKEY----- 开始,以 -----END PRIVATE KEY----- 结束的一串字符串。

为什么我发送请求很慢?

如果你使用的网页版 Postman,请使用桌面版 Postman app。因为浏览器中跨域资源共享(CORS)的限制,网页版发送请求是由 Postman 后台中转的。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/544012.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑自动关机后文件夹不见了怎么办?别急,找回方法在这里

在使用电脑的过程中,我们都可能会遇到一些令人头疼的问题,其中之一就是电脑突然自动关机后,发现重要的文件夹不见了。这种情况可能会让你感到焦虑和困惑,因为失去的数据可能涉及到工作、学习或生活中的各个方面。不过,…

UCORE 清华大学os实验 lab0 环境配置

打卡 lab 0 : 环境配置 : 首先在ubt 上的环境,可以用虚拟机或者直接在windows 上面配置 然后需要很多工具 如 qemu gdb cmake git 就是中间犯了错误,误以为下载的安装包,一直解压不掉,结果用gpt 检查 结…

汽车氛围灯静电浪涌的难点

汽车氛围灯,顾名思义,是烘托车内氛围的照明灯,是汽车内饰情感化设计的一种体现。 一般有暖色(红色等)和冷色系(蓝色、紫色等)两种,在夜晚开启后绚丽浪漫,可营造车内情调&…

http中的长连接和短连接你真的了解吗?

做web开发的老铁应该都知道http协议,它是前后端通信中非常常用的一种通信协议,HTTP(HyperText Transfer Protocol)即超文本传输协议,是互联网上应用最为广泛的一种网络协议。 HTTP协议是一个基于请求-响应模型的协议&…

都2024年了,你还在用两个手指在电脑键盘上打字吗?

前言 前段时间突然想起来一件很有意思的事情:一个找平面设计岗位的应届生,使用电脑的时候居然还在用两个手指打字。 想起这个事情的时候,并不是想嘲笑谁。 准备步入大学或者准备步入职场的小伙伴们,既然找的工作基本上是要接触电…

技术干货 | JMeter实现参数化的4种方式

参数化释义 什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值。 参数…

新秀小将京东云随身WiFi挑战华为、格行两位行业大哥,谁才是随身WiFi排行榜第一名?移动随身WiFi哪个品牌信号稳定?

要说近期通讯界最火的新闻,那一定是京东云随身WiFi杀入战场,企图挑战华为随身WiFi老大哥的位置,争夺随身WiFi排行榜第一名的位置。如果再加上老牌悍将格行随身WiFi,那将又是精彩纷呈的三国杀局面。那么三方混战之下,谁…

力扣L13--- 409.最长回文串(JAVA版)-2024年3月1日

1.题目描述 2.知识点 注1:向下取整是将一个数值向下舍入到最接近的整数,但不超过这个数值的整数。具体规则如下: 对于正数,向下取整后得到的整数是不大于原数值的最大整数; 对于负数,向下取整后得到的整数…

Leet code 179 最大数

解题思路 贪心算法 贪心算法就是走一步看一步 每一步都取当前位置的最优解 这题我们该如何贪呢? 我们先把int数组转换为string数组 以示例2为例 3 30 34 5 9 排序哪个在前哪个在后? 3 30 (330)> 30 3 (30…

给Python初学者的一些技巧

以下是一些Python实用技巧和工具,希望能对大家学习有所帮助。 交换变量 x 6 y 5 x, y y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hello" if True else "World" >>> Hello 连接 下面的最后一种方…

[WUSTCTF2020]朴实无华

查看robots.txt 找到/fAke_flagggg.php 显然这是个假的flag&#xff0c;但是我们在header处发现了fl4g.php 近来发现中文全部变成了乱码 插件转成utf8后正常显示 <?php header(Content-type:text/html;charsetutf-8); error_reporting(0); highlight_file(__file__);//leve…

LeetCode每日一题——移除元素

移除元素OJ链接&#xff1a;27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 题目给定要求只能使用O(1)的额外空间并且原地修改输入数组&#xff0c;然后返回移除后的数组行长度。那 么我们就可以确我没有办法建立临时的数组存放我…