Postman 调试微信支付接口教程,一看就会

前期准备

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

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

脚本导入

方式一:通过 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 为了安全,请仔细阅读安全注意事项

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

参数变量:

<table style="box-sizing: border-box; font-size: 12px; width: auto; max-width: 100%; overflow: auto; border: 1px solid rgb(246, 246, 246); display: inline-block !important; color: rgb(37, 41, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: border-box; background: rgb(246, 246, 246); color: rgb(0, 0, 0); text-align: left;"><tr style="box-sizing: border-box;"><th style="box-sizing: border-box; padding: 12px 7px; line-height: 24px;">变量名</th><th style="box-sizing: border-box; padding: 12px 7px; line-height: 24px;">是否必填</th><th style="box-sizing: border-box; padding: 12px 7px; line-height: 24px;">描述</th><th style="box-sizing: border-box; padding: 12px 7px; line-height: 24px;">备注</th></tr></thead><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box;"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">mchid</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">是</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">商户号</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;"></td></tr><tr style="box-sizing: border-box; background-color: rgb(252, 252, 252);"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">merchant_serial_no</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">是</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">商户 API 证书的证书序列号</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;"></td></tr><tr style="box-sizing: border-box;"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">apiclient_key.pem</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">是</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">PEM 格式的商户 API 私钥</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;"></td></tr><tr style="box-sizing: border-box; background-color: rgb(252, 252, 252);"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">openid</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">否</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">用户的 OpenID,测试请求中的 {{openid}}</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;"></td></tr><tr style="box-sizing: border-box;"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">appid</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">否</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">公众账号或者小程序的 AppID</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;"></td></tr><tr style="box-sizing: border-box; background-color: rgb(252, 252, 252);"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">shangmi</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">否</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">值为 true 时使用商密签名</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">默认值为空,即使用 RSA 签名</td></tr><tr style="box-sizing: border-box;"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">pubkey.pem</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">国密签名时必填</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">PEM 格式的商户 API 公钥</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">如果私钥 PEM 中包含公钥,该变量可不填</td></tr><tr style="box-sizing: border-box; background-color: rgb(252, 252, 252);"><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">server_url</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">否</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">服务器地址</td><td style="box-sizing: border-box; padding: 12px 7px; line-height: 24px; min-width: 120px;">默认设置为<span>&nbsp;</span><a href="https://api.mch.weixin.qq.com/" target="_blank" rel="nofollow noopener noreferrer" style="box-sizing: border-box; background-color: transparent; text-decoration: none; color: rgb(2, 105, 200); border-bottom: 1px solid rgb(209, 233, 255);">https://api.mch.weixin.qq.com</a></td></tr></tbody></table>

发送请求

现在回到工作台,进入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 后台中转的。

使用中文软件更便捷去调试

如果你的英语比较一般,想要使用中文版本的接口去调试,可以看看:如何使用 Apifox 调试微信支付接口

知识扩展:

点赞
收藏

评论区

加载中...

相关推荐

vue h5 对接支付宝,微信支付,微信js支付

vueh5实现支付(支付宝,微信)h5端实现支付难度不大,只是有些小的点需要注意下,其他的看文档撸就行了。支付宝很简单,后端返回一个html,前端插入调用就行了,微信支付分两种:1、微信内支付(jsapi,微信内浏览器)2、微信外支付(h5支付)。一、支付宝支付//前端啥都不用管,交给后端去干,返回html调用点击就好了/

微信支付 (JSSDK支付)

官方文档微信支付https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter7_7&index6微信授权获取codehttps://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JSSDK.html58准备工作微信公

ThinkPHP V5.0 接入微信支付+回调

ThinkPHPV5.0接入微信支付微信支付接口组装访问数组$data'body''商城购买商品';//订单标题$data'outtradeno'generaterandstr(8,0);//平台订单号(非小程序订单,自己平台生成的)$data'notifyurl'$thisrequestdomain().'';//微信支付

微信小程序支付功能全流程实践

前言微信小程序为电商类小程序,提供了非常完善、优秀、安全的支付功能。在小程序内可调用微信的API完成支付功能,方便、快捷。小程序开发者在开发小程序时,支付流程是必然要接触到,今天胡哥就小程序支付的全流程为大家一一细说,让小伙伴能快速得掌握小程序支付能力,避免踩坑!知己知彼,方能百战不殆小程序支付流程图小程序支付交互流程图(https:/

thinkcmf+jsapi 实现微信支付

首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();

iOS 微信支付开发(最新版)

1.介绍本文为以前做的项目总结,由于相关支付SDK迭代,原文已经不满足需求,故作如下更新,供大家参考,另外增加常见问题总结。项目中要用到支付功能,需要支付宝支付、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家,用到的地方避免再次被坑。今天我们就主要介绍一下微信支付,其他支付介绍后面会尽快更新出来。