uniapp---H5端(微信公众号支付 和 支付宝支付)

文章目录

微信公众号支付

    提示:第一步:当用户完成登录时,判断浏览器环境(微信内置浏览器/手机浏览器);

        第二步:判断用户是否关注了微信公众号;

        最后一步:调起微信公众号支付;

第一步:点击登录完成后,开始判断环境(微信内置浏览器/手机浏览器),如果运行环境是微信的话,请求后端接口判断该账号是否绑定微信公众号,如果没绑定则请求微信官方接口并获得包含code的回调链接;

      os:把判断绑定微信公众号方法写在登录页面,可以让订单支付页面代码更干净;

    Login() { //登录
	    let that = this;
		uni.$u.http.post('接口地址', {
			data:'参数'
		}).then(res => {
			if (res.code == 0) {
				uni.$u.toast(res.msg);
				return false;
			}
			let userInfo = res.data.userinfo;
			uni.setStorageSync('userInfo', userInfo);
			uni.setStorageSync('token', userInfo.token);
			that.is_wx()
		}).catch(err => console.log(err))
	},

	is_wx() { // 判断是否在微信环境中
		let that = this;
		let en = window.navigator.userAgent.toLowerCase();
		if (en.match(/MicroMessenger/i) == 'micromessenger') { // 微信内置浏览器
			uni.$u.http.post('接口路径').then(res => {
				if (res.code == 0) { // 未绑定微信公众号
					that.getWeChatCode()
				} else {
					uni.switchTab({
						url: '/pages/mine/mine'
					})
					that.$router.go(0);
				}
			}).catch(err => console.log(err))
		} else { // 手机浏览器
			uni.switchTab({
				url: '/pages/mine/mine'
			})
			that.$router.go(0);
		}
	},

第二步:判断用户是否关注了微信公众号;

  思路:因为授权成功后微信会跳转到我们设置的回调地址,需要提前在onload中设置一下;

onLoad(e) {
    const hasWechatLogin = uni.getStorageSync('wechat_login_tag') || null;
	if (hasWechatLogin) {
		this.checkWeChatCode();
	}
},

  思路:把后台所需的code以及其他信息调用接口传参 

// 重定向回来本页面检查有没有code
checkWeChatCode() {
    let code = this.getUrlCode('code');
	if (code) {
		this.bindingXH5(code)
	}
},

// 正则匹配请求地址中的参数函数
getUrlCode(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||[, ''])[1].replace(/\+/g, '%20')) || null
},

// 看地址中有没有code参数,如果没有code参数的话则请求微信官方的接口并获取包含code的回调链接
getWeChatCode() {
	//用于退出登录回来不会再调一次授权登录
	uni.setStorageSync('wechat_login_tag', 'true');
    const appID = ''; //公众号appID
	const callBack = ''; //回调地址

	//通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】
	window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
					appID + '&redirect_uri=' + encodeURIComponent(callBack) +
					'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect'
},

// 绑定微信把后端需要的code以及其他信息调用接口传过去
bindingXH5(code) {
    let that = this;
	uni.$u.http.post('/user/third', {
		code
	}).then(res => {
	    if (res.code == 0) {
			uni.$u.toast("绑定失败")
		} else {
			uni.switchTab({
				url: '/pages/mine/mine'
			})
			that.$router.go(0);
		}
	}).catch(err => console.log(err))
},

最后一步:页面调起微信公众号支付;

   提示:h5 绑定微信公众号,res是后端返回的数据,里面包含需要的信息;

       appId 参数必填(公众号唯一标识);timeStamp 参数必填(生成签名的时间戳);

       nonceStr 参数必填(生成签名的随机串);signType 参数必填(签名);

wxH5Pay(res) {
    let that = this;
    var data = res;
	WeixinJSBridge.invoke('getBrandWCPayRequest', {
		debug: true,
		appId: res.data.appId,
		timeStamp: res.data.timeStamp,
		nonceStr: res.data.nonceStr,
		package: res.data.package,
		paySign: res.data.paySign,
		signType: res.data.signType,
	}, function(res) {
		if (res.err_msg === 'get_brand_wcpay_request:ok') {
			// 支付成功的处理逻辑 
			uni.showToast({
			 	title: '微信支付成功',
			 	icon: 'none'
			})
			uni.navigateTo({
				url:'/pages/mine/订单列表/订单列表'
			})
		} else if (response.err_msg == "get_brand_wcpay_request:cancel") {
			// 支付过程中取消支付
			uni.showToast({
				title: '取消支付',
				icon: 'none'
			})
		} else {
			uni.showToast({
				title: '支付失败',
				icon: 'none'
			})
		}
	});
},

支付宝支付

 OS:你没有看错,你不用怀疑!只有两行代码,不信的话你试一下就知道喽!对了对了,怕一些笨蛋不知道怎么用,我就再多嘴几句哈。这里只需要把请求后端接口成功后返回的订单信息,也就是接口成功返回的res赋值就可以了。

document.querySelector('body').innerHTML = res;
document.forms[0].submit();

尾结

  提示:文章会有些思路断点但重点部分没问题,等我下次重新整理一下!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要在uniapp中开发H5登录微信公众号并进行联调,有以下几个步骤: 1. 获取微信开发者账号和相关配置信息:首先需要在微信开放平台注册并创建一个开发者账号,然后创建一个微信公众号,并获取相应的AppID和AppSecret等配置信息。 2. 在uniapp项目中配置相关插件:在uniapp项目的manifest.json文件中,添加对应的插件配置,如"@dcloudio/uni-mp-weixin"插件。然后在项目的App.vue中通过uni.login方法获取登录凭证code,并调用uni.request方法发送请求到服务器获取用户的openid和session_key。 3. 前端与后的联调:根据服务器返回的用户openid和session_key,在前端进行相关的业务逻辑处理,如展示用户信息、跳转到其他页面等。其中,服务器需要处理用户的登录请求,并返回openid和session_key等信息给前端。 4. 微信公众号授权设置:在微信公众号后台设置中,配置网页授权域名和回调地址,并将uniapp项目的H5链接添加到公众号菜单中。 5. 测试和调试:完成以上步骤后,进行测试和调试,确保登录功能在H5中正常使用。可以通过调试工具、日志打印等方式进行定位和解决问题。 总结:在uniapp开发H5登录微信公众号的联调过程中,需要进行微信开发者账号和相关配置的准备,配置相关插件和设置,前端与后的联调,以及进行测试和调试。通过这些步骤,可以实现在uniapp项目中登录微信公众号并进行H5联调。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亭瞳^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值