开发微信公众号内的H5前端页面的一些个人见解和注意事项(微信支付、JS-SDK、wxconfig)
微信H5开发注意事项摘要:1. 微信支付要区分JSAPI支付和H5支付,JSAPI支付适用于微信服务号环境,timeStamp参数需转为字符串格式。2. JS-SDK是微信封装的公共方法,uni-app已封装部分功能,但扫码等功能仍需使用JS-SDK。3. 使用wx.config注册需要的方法时,注意配置正确的签名参数和接口列表。4. 微信H5页面滚动需使用scroll-view组件,uni-ap
首先明确,是在微信环境下的,基于微信服务号的H5页面,与纯H5页面有区别
目录
一、微信支付
微信官方提供的支付产品列表如下:

如果你的页面跟我一样,是运行在微信环境的,那么就要使用JSAPI支付,而不是H5支付!这个浪费了我一天时间...
支付无需事先使用wx.config注册,直接使用下方api拉起微信支付即可
注意:参数全部由后端与微信交互生成返回,不需要撕逼,就是后端的工作,timeStamp参数要转为字符串,不要用数字格式,否则ios系统会报错
onBridgeReady() {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": "wx2421b1c4370ec43b", //公众号ID,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=wx21201855730335ac86f8c43d1889123400",
"signType": "RSA", //微信签名方式:
"paySign": "........." //微信签名
},
(res) => {
let msg = ''
if (res.err_msg == "get_brand_wcpay_request:ok") msg = '支付成功'
if (res.err_msg == "get_brand_wcpay_request:cancel") msg = '取消支付'
if (res.err_msg == "get_brand_wcpay_request:fail") msg = '支付失败'
uni.showModal({
showCancel: false,
content: msg
})
});
}
不得不说一下微信支付文档,接口倒是很全,demo也有,但是各种支付产品,前后端文档没分离,真的搞不清哪个用哪个啊...
二、JS-SDK
JS-SDK个人理解:微信封装的公共方法,例如 chooseImage 等,这些方法在原生浏览器中是没有实现的,专为微信开发使用的,可以理解为 uniapp 做的封装
如果不使用uniapp,调用chooseImage等方法,需要使用 JS-SDK
如果使用了 uniapp 开发,无需注册 JS-SDK也可以调用一些方法,具体可以看uniapp文档对H5的支持情况(扫一扫之类的不行)
npm安装后在main.js 页面引用
import wxSDK from 'weixin-js-sdk'
Vue.prototype.wxSDK = wxSDK
三、wxconfig
如果你需要使用 微信扫一扫 等功能,uniapp是没有实现H5的,必须安装 JS-SDK,然后在App.vue使用 wxconfig 注册你要用到的所有方法
const request = uni.$u.http
request.post('/api/WechatPay/GetJsSdkWeChatPayParametersurl='+encodeURIComponent('这是你的H5域名')).then(res=>{
this.wxSDK.config({
debug: true,
appId: res.data.appId,
timestamp: res.data.timeStamp,
nonceStr: res.data.nonceStr,
signature: res.data.signStr,
jsApiList: [
'chooseImage',
'scanQRCode'
] // 需要使用的JS接口列表
});
})
四、页面滚动
在微信开发者工具里调试,使用鼠标滚轮可以上下滚动,但实际页面都不支持滚动,必须用scroll-view进行包裹
如果你是使用uniapp开发,使用了 自带的 tabBar ,可以在 tabBar 页面中这么写
<scroll-view
scroll-y="true"
style="height:calc(100vh - var(--window-bottom));width:100%;"
@touchmove.stop
@scrolltolower="onScrollOver">
</scroll-view>
var(--window-bottom) 是 uniapp 提供的底栏高度
@touchmove.stop 防止控制台报错
@scrolltolower="onScrollOver" 是触底事件
scroll-view 可以直接作为根节点,外层不嵌套 view 标签也是可以的
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)