news 2026/8/22 13:36:31

定位、扫码、微信支付一次讲透:weixin-js-sdk高频业务接口实战清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
定位、扫码、微信支付一次讲透:weixin-js-sdk高频业务接口实战清单

定位、扫码、微信支付一次讲透:weixin-js-sdk高频业务接口实战清单

【免费下载链接】weixin-js-sdk微信官方 JS-SDK 的 CommonJS 版本,支持 TypeScript项目地址: https://gitcode.com/gh_mirrors/wei/weixin-js-sdk

weixin-js-sdk 是微信官方 JS-SDK 的 npm 封装版,支持 CommonJS 和 TypeScript 类型提示,可被 Webpack、Browserify 等构建工具直接引用。本文这份微信 JS-SDK 实战清单将聚焦三个高频业务接口:getLocation 定位、scanQRCode 扫码、chooseWXPay 微信支付,带你一次搞懂参数含义与常见坑点。

🧩 先搞懂:weixin-js-sdk 是什么?

在微信内置浏览器中打开的 H5 页面,本身无法直接调用相机、定位、支付等系统能力,需要借助微信客户端提供的 JS-SDK 来桥接。而官方提供的只是一个全局脚本,直接使用有几个痛点:

  • 无法通过require/import引入,与现代前端工程化体系格格不入
  • 没有类型定义,参数全靠查文档,拼错字段名也不报错

weixin-js-sdk 正是解决这两个问题的轻量封装,核心价值一目了然:

特性说明
npm 安装一条命令引入,版本化管理
CommonJS / ESM兼容requireimport两种写法
TypeScript 支持自带类型定义,接口参数、回调字段全部可提示
与官方同源内容对齐官方 jweixin-1.6.0,能力完全一致

项目核心文件非常简洁:

  • index.js—— CommonJS 入口文件
  • index.original.js—— 官方 JS 源码原样保留
  • index.d.ts—— TypeScript 类型定义(本文三个接口的完整参数都可在此查阅)
  • package.json—— 包信息,当前版本 1.6.5

🚀 3步完成 weixin-js-sdk 安装与初始化

第1步:安装依赖

npm install weixin-js-sdk

第2步:引入 SDK

// CommonJS 写法 var wx = require('weixin-js-sdk'); // ES Module 写法 import wx from 'weixin-js-sdk';

第3步:配置并等待就绪

所有业务接口都必须先完成wx.config初始化,然后在wx.ready回调中调用:

wx.config({ debug: true, // 调试阶段建议打开 appId: '公众号AppID', timestamp: 1234567890, nonceStr: '随机字符串', signature: '后端生成的签名', jsApiList: ['getLocation', 'scanQRCode', 'chooseWXPay'] }); wx.ready(function () { // 在这里调用定位、扫码、支付等接口 });

⚠️ 两个关键点:signature(签名)必须放在后端生成,前端只负责传递;jsApiList必须显式声明你要用的接口,漏写会直接报"没有权限"。

📍 接口一:getLocation 定位——wgs84 与 gcj02 一文讲清

适用于:附近门店、打卡签到、收货地址推荐等场景。

核心参数与返回值

项目说明
type坐标类型,默认wgs84(GPS 原始坐标);传gcj02返回火星坐标
success回调返回latitude(纬度)、longitude(经度)、speed(速度)、accuracy(精度)

💡 新手最该记住的一点:坐标系

国内地图(高德、腾讯、百度)展示的坐标统一是gcj02,而手机 GPS 芯片输出的是wgs84。如果你拿到 wgs84 坐标直接丢给地图展示,位置会偏移几百米——这就是"定位不准"最常见的原因。

经验法则

  • 拿坐标去地图上图、传给openLocation展示 → 传gcj02
  • 需要国际通用坐标系做距离计算 → 传wgs84

定位成功后,可紧接着调用openLocation接口,用微信内置地图把位置可视化展示给用户,底部还能挂一个超链接方便跳转。

🔍 接口二:scanQRCode 扫码——二维码和一维码都能扫

适用于:会员码核销、门店扫码开门、设备绑定等场景。

两个参数决定行为模式

参数取值效果
needResult0(默认)扫出的内容由微信直接处理,比如扫到网址就直接跳转
needResult1扫码结果原样返回给你的页面,在success回调的res.resultStr中拿到
scanType['qrCode']/['barCode']指定只扫二维码或只扫条形码,默认两者都支持

💡 实战建议

  • 核销会员码:设needResult: 1,把resultStr提交后端校验,业务闭环完全可控
  • 扫内容跳转:保持默认needResult: 0,让微信自己处理,少写一堆代码
  • 用户可能中途取消扫码,记得在cancel回调中恢复页面状态,避免按钮卡死

💰 接口三:chooseWXPay 微信支付——H5 支付五个关键参数

适用于:公众号 H5 页面内发起 JSAPI 支付。

支付流程与参数来源

微信支付不是前端独立完成的,标准链路是:后端调用微信统一下单接口 → 拿到 prepay_id → 前端组装签名参数 →chooseWXPay拉起收银台

chooseWXPay的五个必填参数全部来自后端:

参数含义易错点
timestamp支付签名时间戳支付后台生成的字段名timeStampS 是大写,与 JSSDK 的小写timestamp极易混淆
nonceStr随机串(不超 32 位)必须与后端签名时使用的一致
package统一下单返回的 prepay_id格式必须是prepay_id=xxx,不能漏前缀
signType签名方式默认SHA1,新版支付需传MD5,与后端保持一致
paySign支付签名签名错误会提示"invalid signature",优先检查参数拼写和签名范围

💡 三条保命建议

  1. 前端回调不可信success只用来刷新 UI,是否支付成功必须以微信异步通知 + 后端查单为准
  2. 签名报错先查大小写timeStamp/timestamp混用是新手第一大坑
  3. 域名要备案:JS 接口安全域名必须与页面实际域名一致,否则 config 阶段就会失败

📋 高频踩坑清单:微信 JS-SDK 调试前对照一遍

现象大概率原因解决方式
接口调了没反应wx.ready之前就调用了把所有业务调用挪进ready回调
提示"没有权限"接口未加入jsApiList把接口名补进 config
定位偏移几百米wgs84 / gcj02 坐标系混用展示地图的场景改传gcj02
支付报 invalid signature签名参数大小写不一致或 package 格式错误按上表核对五个参数
页面调试一片绿但生产报错签名过期或域名未配置时间戳控制在有效期内,检查安全域名

小技巧:把debug设为true后,所有接口的调用结果会在客户端直接弹出来,是排查问题的第一手资料。

✅ 总结

weixin-js-sdk 让微信 JS-SDK 的接入从"手贴脚本"进化为"工程化依赖":

  1. 安装npm install weixin-js-sdk,配合 TypeScript 享受完整参数提示
  2. 定位getLocation记住坐标系,展示场景用gcj02
  3. 扫码scanQRCodeneedResult区分"微信处理"和"自己处理"
  4. 支付chooseWXPay的参数交给后端生成,前端只负责组装与回调兜底

三个接口的完整参数定义都可以直接在index.d.ts中查阅,IDE 悬停即可获得逐字段中文注释,写代码时基本不用再去翻文档。

【免费下载链接】weixin-js-sdk微信官方 JS-SDK 的 CommonJS 版本,支持 TypeScript项目地址: https://gitcode.com/gh_mirrors/wei/weixin-js-sdk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:35:23

微前端-qiankun

微前端与 qiankun 学习笔记 一、微前端概述 微前端(Micro Frontends) 是一种将前端应用拆分成多个独立、可部署的部分的架构模式,每个部分可以由不同的团队、技术独立开发、测试、部署和维护。这种架构类似于后端的微服务,是为了应…

作者头像 李华
网站建设 2026/8/22 13:30:07

3步上手chrome-react-perf:React性能分析Chrome扩展新手入门教程

3步上手chrome-react-perf:React性能分析Chrome扩展新手入门教程 【免费下载链接】chrome-react-perf An Operation Interface for react-addons-perf Package 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-react-perf chrome-react-perf 是一款专为…

作者头像 李华
网站建设 2026/8/22 13:27:06

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转 【免费下载链接】BDSup2Sub Blu-Ray/DVD subtitle editor 项目地址: https://gitcode.com/gh_mirrors/bd/BDSup2Sub 不同平台的字幕格式互不兼容,蓝光 SUP、DVD-SUP、…

作者头像 李华