微信小程序webview嵌入h5页面 调用微信支付需要的完整代码
时间: 2023-10-09 08:06:26 浏览: 873
以下是微信小程序webview嵌入h5页面调用微信支付的完整代码:
HTML页面:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>微信支付demo</title>
</head>
<body>
<button onclick="callPay()">微信支付</button>
<script type="text/javascript">
function callPay() {
// 构造支付参数
var params = {
appId: '你的appId',
timeStamp: '时间戳',
nonceStr: '随机字符串',
package: '预支付交易会话标识',
signType: 'MD5',
paySign: '支付签名'
};
// 调用微信支付接口
WeixinJSBridge.invoke('getBrandWCPayRequest', params, function(res){
// 支付结果处理
if(res.err_msg == "get_brand_wcpay_request:ok"){
// 支付成功
}else{
// 支付失败
}
});
}
// 判断是否在微信内置浏览器中打开
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', callPay, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', callPay);
document.attachEvent('onWeixinJSBridgeReady', callPay);
}
}else{
callPay();
}
</script>
</body>
</html>
```
小程序页面:
```
<web-view src="https://你的H5页面地址"></web-view>
```
小程序JS代码:
```
Page({
onReady: function () {
// 获取web-view组件
var webview = this.selectComponent("#webview");
// 监听web-view中的页面加载完成事件
webview.onMessage(function(e){
if(e.detail == 'loadFinish'){
// web-view中的页面加载完成后,调用支付接口
wx.request({
url: 'https://你的支付接口地址',
method: 'POST',
data: {
// 构造支付参数
appId: '你的appId',
timeStamp: '时间戳',
nonceStr: '随机字符串',
package: '预支付交易会话标识',
signType: 'MD5',
paySign: '支付签名'
},
success: function(res){
// 将支付参数传递给web-view中的页面
webview.postMessage({type: 'pay', data: res.data});
}
})
}
})
}
})
```
需要注意的是,在小程序中调用微信支付接口需要在小程序后台配置支付授权目录,否则会出现调用失败的情况。
阅读全文